天天看點

《Swift iOS應用開發實戰》——1.1初識Swift

本節書摘來自華章計算機《swift ios應用開發實戰》一書中的第1章,第1.1節,作者:劉銘 著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

swift是蘋果在wwdc 2014所釋出的一門程式設計語言,用于開發ios和os x應用程式。

2010年7月llvm編譯器的原作者暨蘋果開發工具部門總監克裡斯·拉特納(chris lattner,就是在wwdc 2014大會上親自示範swift代碼的那位仁兄)開始着手開發swift語言,一直到2014年6月釋出,swift大約經曆了4年的開發期。在wwdc 2014大會中,蘋果宣稱swift的特點是:快速、現代、安全和具有互動性。

swift的處理速度非常快。在wwdc上,蘋果展示了swift、objective-c以及python的速度對比,swift比objective-c快1.4倍,比python快3.9倍,如圖1-1所示。在進行rc4加密算法測試中,swift則是python的220倍。但筆者認為蘋果在這裡使用了障眼法,因為每門程式設計語言都有其優缺點,如果非要用自己的長處與别人的短處相比,明顯有些小氣了。

在筆者看來,swift就像是一門可以被編譯的腳本語言。因為在很多文法特性上swift和一些腳本确實非常相似。但是,在應用程式開發中,swift不是以一門腳本語言來運作的,所有的swift代碼都會被llvm編譯為本地代碼,然後以極高的效率運作。

《Swift iOS應用開發實戰》——1.1初識Swift

swift和objective-c都是類型安全的語言,變量和方法都有明确的傳回,并且變量在使用前需要進行初始化。而在文法方面,swift遷移到了業界公認的非常先進的文法體系,其中包含了閉包、多傳回、泛型和大量的函數式程式設計的理念,函數終于可以作為變量儲存了。初步看來,swift在文法上借鑒了ruby的很多人性化設計,但借助蘋果自己手中強大的llvm編譯器,在性能上必然要甩開ruby很遠。

從另一方面說,swift的代碼又是可以通過互動來“解釋”執行的。xcode 6加入了所謂的playground功能來對開發者輸入的swift代碼進行互動式響應,當然,我們也可以使用swift的指令行工具互動式地執行swift語句。這裡之是以把“解釋”兩個字打上雙引号,是因為即使在指令行中,swift其實不是被解釋執行的,而是在每條指令後都從開始的swift代碼全部進行編譯,然後執行。這樣的做法依然可以讓人“感到”是在做互動解釋執行,由此這門語言的編譯速度和優化水準可見一斑。同時playground還順便記錄了每條語句在執行時的各種情況,稱做一組timeline。我們可以使用timeline對代碼執行逐漸檢查,省去斷點調試的時間,也很友善,如圖1-2所示。

《Swift iOS應用開發實戰》——1.1初識Swift

不知大家是否有這樣的想法:既然蘋果的生态系統做得這樣出色,為什麼還要推出一門全新的語言,這不是自找麻煩嗎?在wwdc 2014大會上,克雷格·費德裡吉(craig federighi)給出了這樣的答案:蘋果一直使用xcode作為mac和ios平台的開發工具,而xcode的核心是我們用來開發應用的objective-c語言,它已經為我們服務了20多年,我們很喜歡它。但我們必須問自己一個問題,一個沒有c的objective-c會是什麼樣子?

蘋果不僅僅想了,還将其付諸實踐,是以出現了swift語言,并且蘋果希望使用swift來主導該領域。蘋果将swift視為“親生兒子”,并把它視為objective-c的繼承者。作為ios或mac的開發者,筆者深感學習和使用swift的必要性。現在swift可以和原來的objective-c或c代碼混用(不同于objective-c和c++或c在同一個.mm檔案中的混編,swift檔案不能和objective-c代碼寫在同一個檔案中,需要将兩種代碼分開)。編譯出來的二進制檔案是可以運作在ios 7和ios 8裝置上(不支援ios 6及之前的系統)。

現在xcode 6中所有的文檔都有objective-c和swift兩種語言版本,并且按照蘋果開發者社群的一貫跟進速度,有理由相信在不久的将來,蘋果很可能會逐漸廢棄對objective-c的支援,而全面支援swift。是以,關于到底是學swift還是objective-c的問題,筆者的建議是,盡快學習swift,盡快使用swift。在蘋果無數工程師和語言設計天才的努力下,swift吸收了衆多語言的精華,應該是當下最新也是最先進的一門程式設計語言之一。我想,也正是蘋果對這門語言有這樣的自信,才會在公司全盛的時候,不墨守成規,如此大膽地推出新的語言。因為蘋果必定比你我都更明白,更換語言帶來的利必須遠大于弊,才會值得冒如此大的風險。從這個意義上來說,wwdc 2014大會就是程式開發業界的一枚重磅炸彈,也必将寫入史冊,而你我身在其中,變成了這段曆史的見證者。修改一位偉人的話:蘋果開發是swift的,也是objective-c的,但歸根結底是swift的。