替代Objective-C?Swift尚不成熟
在今年蘋果的開發者大會上,最引人注目的當屬新的編程語言 Swift 的發布。Swift 是一門蘋果自主開發的編程語言,它由 LLVM 的創始人 Chris Lattner 在 2010 年開始著手設計,目標是在保證應用質量和性能的前提下,讓應用開發變得更加簡單、快速。蘋果宣稱 Swift 的特點是:快速、現代、安全、互動,且全面優于 Objective-C 語言。為了給 Swift 打好基礎,蘋果公司改進了編譯器、調試器和框架結構,不難看出蘋果在 Swift 的設計上也煞費苦心。社交媒體上一時間鋪滿了對 Swift 的討論:
JavaEye 的創始人 Robbin 在微博中寫到:“Swift 目前只是提供了一種腳本編程語法,編寫代碼的效率提高不了多少,對程序員來說,熟悉 Swift 語法也不過一天時間足夠了。關鍵是要提供高級數據類型,簡化 Cocoa 類庫,否則用不用 Swift 都沒區別。當代的程序員,主要學習成本不在編程語言的語法上,而在語言提供的特殊數據類型和龐大的類庫上。”
CNET 的 Tim Stevens 認為 Swift 是一門具有巨大潛力的編程語言,它在結合了腳本語言與傳統編譯語言的優勢的同時,又兼有更快的執行速度(從幾項關鍵指標來看)。Swift 的腳本特性以及實時預覽功能可以幫助開發者方便快捷地編寫并測試應用程序。但 Swift 也沒有想象中的那么美好,Objective-C 在開發應用方面相對比較成熟,并且有了完整的生態圈,Swift 想推倒一切重新開發,恐怕還需要一段時間。
資深 iOS 開發者郭亮認為 Swift 對于準備學習 iOS 開發的新手來說是個好消息,畢竟它的入門門檻比較低,但對于已經習慣了 Objective-C 的上百萬開發者來說,又是一件痛苦的事情!因為他們已經愛上了 Objective-C。Swift 雖然門檻很低,但要真正熟練,道路依然荊棘,Protocol、Extension、繼承、多態還有閉包,真的沒那么簡單。語言剛剛發布,還會有許多的不完善,其性能、效率還有待驗證,并且相關資料非常少,應該只有蘋果官方的文檔,也沒有開源社區的支持。所以 Swift 短期內取代 Objective-C 的可能性非常小,目前想用 Swift 單獨作為項目的開發語言,那將是災難性的。
iOS 開發者黃兢成也在知乎上發表了自己的看法,他認為 Swift 吸收了很多其它語言的語法,寫起來比 Objective-C 簡潔得多,不過它的核心概念和 Objective-C 差不多,比如引用記數、ARC、 屬性、協議、接口、初始化、擴展類、匿名函數。至于大會上提到的可視化編程,他目前尚不清楚如何能較好的應用到實際項目中。Xcode 6 beta 版本對 Swift 的語法提示支持也不好。Swift 在實際項目中的使用還需要一段時間,但他相信蘋果發布 Swift,絕不是玩玩而已。
CocoaChina 上的 xu54認為 Swift 本質其實就是 Objective-C 的文本變種,對于這門全新的語言,蘋果做的工作其實遠沒有我們想像的艱巨。LLVM 編譯器做工作只是先把 Swift 翻譯成 Objective-C 代碼,然后再把 Objective-C 代碼翻譯成C語言代碼,然后再把C語言代碼翻譯成匯編,最終翻譯成機器碼。至于為什么編譯器廠商這么繞,不直接把自己的語言翻譯成匯編和機器碼,那是由于現有的語言編譯器(Objective-C、C )已經非常成熟,而高級語言間的文本轉換開發成本和維護成本都極其小。Swift 之所以要翻譯成 Objective-C,是由于 Swift 仍然需要 Objective-C 中的 ARC、GCD 等環境。既然 Swift 其實就是 Objective-C, 對入門者而言遠比 Objective-C 好學,對資深開發者來說又能節約很多無謂的低級重復的機械代碼(這些代碼在 LLVM 翻譯成 Objective-C 時,編譯器自動幫你寫上),并且開發者關注的應該是業務邏輯,而不把精力分散在語法等低級問題上,語法消耗的時間越少,這門語言也就越成功,所以他覺得 Swift 必定會替代 Objective-C。
社區對 Swift 的評論好壞參半,Swift 的優勢很明顯,短板也很明顯。新語言的成熟不可能一蹴而就,我們還需要有更多的耐心來等待 Swift 的成熟,不過我相信這個過程不會太久。蘋果愿意舍棄成熟的 Objective-C,轉而開發新的編程語言,這足以讓我們看到一家世界級公司的魄力與創新力。