Swift程式語言,蘋果封疆逐鹿王旗下的一支鐵血兵團
在2014年WWDC 大會上,蘋果發布了一款看似充滿表現力和趣味性且簡單易學的腳本語言,實則為編譯語言的Swift系統程式語言。平臺之爭,得開發者得天下。蘋果這次大會成功吸引了一大批因為摒棄Objective-c所以不碰 iOS 的動態語言開發者(尤其是 web 開發者)來試水 iOS 開發,以共建蘋果生態圈的枝繁葉茂。正如WWDC的Slogan 所言「Write the Code,Change the World」,2015年12月,蘋果宣布Swift開放原始碼。
推出Swift,蘋果意在全局。在爭奪開發者的戰場上,無論在 Native vs. Web 還是 iOS vs. Android領域,讓世界上最聰明的和最有意志力的大腦都參與到這項工具的進化中來,Swift之於蘋果生態圈具有戰略性意義。
Objective-c 是IOS程式語言的宗教,所有的東西都要用它開發——喬教主這樣說。現在教主與時光同逝,IOS的APP也達到了空前的繁榮,蘋果到了需要更換一種更為積極的支撐方式能夠讓民間的開發者可以快速介入並推出產品的戰略節點。
具體而言,當一個領域空前繁榮之後,細分化、模塊化、流水線化是必然的趨勢,Swift將會成為蘋果的第一語言,而Objective-c將會退居幕後,做底層和中間層的開發。拿APP來說,應用層開發的高效性和便捷性將成為最基本的要求,而底層開發則要求穩定性和易用性。也就是說Swift的出現是一種成熟的表現,其戰略價值就是適應這一領域高速的發展。
Objective-C語言是編寫iOS/Mac程序的主要語言。編寫iOS/Mac程序,除了Objective-C,還可以混合使用C/C++,另外也可以嵌入一些腳本語言。Objective-C兼容 C 語言,於是不可避免地C 語言很多設計不合理的地方也被引入了Objective-C中,但在 UI 部分,使用Objective-C最為直接自然。
Swift是多種函數式語言的有機集合,融合了很多語言對語義精煉化的手法,兼具諸多語言的優秀特性,而比之於面對對象編程而言,函數性編程被證明可以有效的提高開發效率。可以說Swift是從實用主義的角度對C家族,Java家族,腳本家族以及函數式語言的反思、總結與集成。同時Swift不僅僅是一門程式語言,更為重要的是,它一款旨在完整蘋果生態鏈和戰略性繁榮蘋果生態圈的面向開發者的產品。
Swift寫起來比 Objective-C 簡潔得多,有著類似 Python 的易用性和較強的運行效率。做iOS端開發的話,swift可以讓開發效率比Objective-C提升一大截,寫核心App邏輯的思路可以更加清晰和專注。Swift 涵蓋了現在流行的編程方式,結構化,面向對象,泛型,函數式。swift語言能力很強大,閉包,可選型等特性極大的減少了代碼量。另外,Swift採用了高性能的Apple LLVM編譯器,Swift底層基於LLVM編譯為native code,不得不讚嘆一下LLVM真是黑科技,實現了各種不可能的可能,同時蘋果的金礦也恰恰是在 LLVM 上。Swift代碼可以轉化為優化過的本地代碼,充分利用現代化的Mac,iPhone和iPad的硬體。其語法和標準庫也非常簡潔,讓編程的流程大大縮短、簡化。同時,Swift採用了有可視化編程功能的Playground。敲入代碼,立即有反饋。多數應用邏輯複雜且上下文相關性很強,可能Playground並沒有那麼全盤可實現化,但是對於原型開發會非常有幫助。
現在 Swift 還不穩定,語言、庫、相關工具將會快速變動,而這恰恰說明它在發展。同時也可以感覺到,Swift的改變越來越少,並逐步趨於穩定。
一個新事物,肯定都是優缺點並存的,只要其優點足夠「實用」,那麼市場會幫它贏。Objective-C因為需要兼容C,因此限制了它的改進。而Swift沒有歷史包袱,可以自由採用最新的語言設計研究成果,即Swift吸收了很多其它語言的語法,同一個概念, Swift 的代碼寫法更簡潔快速自然,開發效率更高,這些很多在 Objective-C 中是沒有辦法做到的。從表達的角度來說,Swift比Objective-C優秀。也就是說,swift 單單降低學習成本和提高生產效率這兩條,就奠定了它必然替代 Objective-C的未來,並且比想像中可能還要快。
Swift 在整個 iOS/Mac 工程中佔的代碼比例會越來越多,慢慢將整個語言重心從 Objective-C 切換到 Swift。Swift將會是蘋果的第一語言,正如Golang會成為Google的第一語言,Objective-c將會退居幕後,做底層和中間件的開發。另外, Objective-C 作為粘合層還是會存在,因為Swift 還沒有很好地解決好跟 C 和 C++ 混編的問題。很多項目底層核心庫會採用 C/C++,界面和大部分邏輯採用 Swift 編寫,需要 Objective-C 作為粘合層。
同時,掌握了 Objective-C切換到 Swift 也不難。Objective-C 本身支持塊、集合語法和模塊,所以框架可以對現代程式語言技術予以支持。Swift 中很多概念在 Objective-C 中已經存在。
Swift採用了 Objective-C 的命名參數以及動態對象模型,可以無縫對接到現有的 Cocoa 框架,並且可以兼容 Objective-C 代碼。Swift跟Objective-C編譯出的程序代碼運行在同一套運行環境上面,Objective-C的類型可以橋接到Swift的類型。Objective-C使用的很多底層技術,亦可被應用到Swift中。Objective-C之前積累下來的大量類庫,實現不用改寫Swift就可以直接調用。
然而從系統工程的整體上看,一項iOS/Mac工程,可以同時使用 Swift, Objective-C, C, C++這四種編譯語言。 Objective-C, C, C++ 三種語言的結合很容易,Objective-C 跟 C 原本就兼容,Objective-C 跟 C++ 混編只要將文件名改成.mm。而 Swift 跟其它語言的結合,需要另外的文件進行橋接,其實也挺方便的。所以不能割裂地看待每種程式語言,而要地將其整體理解為一個可以發揮綜合功用的編程體系。
同時,從更本質的視覺深度來看,任何程式語言的語法只是表面表現形式。表面的東西總是千姿百態、變化多樣,但是根本的東西重要得多,而且不具有直觀化和可視性。如果之前已經掌握了 Objective-C ,其實切換到 Swift 比較容易。程式語言發展到現在,很大一部分工作都是庫作為支撐的,人們之後做的只是搭建積木的工作,再加上邏輯判斷、循環、遞推、迭代等一部分邏輯,最多再添加上並發、多線程等等。掌握了程式語言實質,由Objective-C可以很好地掌握Swift。新語言基本上只會對想要入門的人有區別,深入了解之後,區別遠遠沒有那麼大,因為不管程式語言怎麼變化或者進化,人們想要達到的運行效果、想像力、可維護性才是核心。
就整個程式語言體系而言,雖然Swift比 Objective-C 簡潔得多,而且Swift對初學者很友善,入門門檻比Objective-C 低得多。可是如果不是做 iOS 或 OS X 開發,Swift 在整個程式語言體系中算不上一門很科學很優秀的語言。但一門語言的根本價值不是其高級與否,而是使用者的數量,在代碼書寫的快慢,程序的使用性能等諸多方面的表現。即根本尺度在於對提高生產效率,而不是語言研究的創新性和高級化。決定一個語言核心價值的要素是其所屬的生態和平臺。所謂的「大規模,團隊型軟體開發」時代已逝,蘋果 App Store 成功的之處就在於塑造了把軟體變成了一種快速消費的商品的大格局,快速消費必然需要快速生成來配套,使得更大範圍的開發者可以快速介入並推出產品,這就是 Swift 所據的市場需求點和戰略價值的根本所在。一旦開發者從開發效率來說堅定支持ios,Objective-C這麼難用,都「蠱惑」了如此之多的開發者,以至語言榜第三之位,一個更加高效又完全兼容Objective-C的swift 的影響力不言而喻,推出一個現代、安全並且特別面向移動端的程式語言,這是一個非常具有遠見的決策。從這個視角上看Swift,其本身之於蘋果生態圈的戰略價值和所據整個程式語言體系的相關地位就顯而易見了。
可以說,在某種程度和意義上,Swift 將是蘋果未來五年在與谷歌、微軟封疆逐鹿、春秋爭雄王旗下的一支鐵血兵團,只為捍衛至尚的榮光而戰。