替代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,轉而開發新的程式語言,這足以讓我們看到一家世界級公司的魄力與創新力。
相關文章
- Linux在企業中的應用尚不成熟 (轉)Linux
- Swift學習: 從 Objective-C 到 SwiftSwiftObject
- 從Objective-C到SwiftObjectSwift
- Swift 2 0 如何替代 pchSwift
- Objective-C和Swift混編ObjectSwift
- Swift和Objective-C混合程式設計——Swift呼叫OCSwiftObject程式設計
- Swift和Objective-C混合程式設計——OC呼叫SwiftSwiftObject程式設計
- Swift如何呼叫Objective-C程式碼SwiftObjectC程式
- Swift vs Objective-C:未來看好 Swift 的十個理由SwiftObject
- Swift vs. Objective-C:未來看好 Swift 的十個理由SwiftObject
- Swift與Objective-C的動態性分析SwiftObject
- 製作 Swift 和 Objective-C Mixed 的 PodSwiftObject
- 我是直接學Swift還是Objective-C?SwiftObject
- Swift專案中呼叫Objective-C的庫SwiftObject
- 我應該直接學Swift還是Objective-C?SwiftObject
- Swift 呼叫 Objective-C 的可變引數函式SwiftObject函式
- Swift 在對 Objective-C 改進的 6 個方面SwiftObject
- 從Objective-C到Swift:幾點想法和意見ObjectSwift
- 猿題庫從 Objective-C 到 Swift 的遷移ObjectSwift
- Objective-C Mix Swift Configuration:混編設定ObjectSwift
- XCode 中 Swift / Objective-C / C / C++ 混合程式設計XCodeSwiftObjectC++程式設計
- 優雅的開發 Swift 和 Objective-C 混編的 FrameworkSwiftObjectFramework
- Objective-C 和 Swift 混編專案的小 Tips(一)ObjectSwift
- 盤點一些iOS開發技巧:Swift和Objective-CiOSSwiftObject
- 處理尚不存在的 DOM 節點
- 來一次有側重點的區分Swift與Objective-CSwiftObject
- 一份非常詳盡的 Objective-C 到 Swift 的遷移指南ObjectSwift
- 【iOS開發黑科技】與tableViewDelegate,tableViewDataSource說再見,Objective-C,Swift雙版本...iOSViewObjectSwift
- 一個在 Objective-C 和 Swift 中實現剖面導向程式設計的故事ObjectSwift程式設計
- objective-c @()Object
- Objective-CObject
- TIOBE 2015年6月程式語言排行榜 Objective-C 迅速遷移 SwiftObjectSwift
- Objective-C 轉 Swift 的第一道坎——論如何正確的處理可選型別ObjectSwift型別
- Arbor Networks:IPv6流量佔全部網路流量比例尚不足1%
- Objective-C PropertyObject
- 替代密碼密碼
- VMware Tanzu已融合雲原生與K8s 市場前景尚不確定K8S
- 《Swift基礎教程》作者Boisy Pitre:Objective-C很不錯,但它已經是過去時(圖靈訪談)SwiftObject圖靈