儘管蘋果一年一度的開發者大會(WWDC)有不少吸引人眼球的東西,但是最切題的無疑是新的程式語言Swift的推出。
在 iOS 8 釋出之前一直處在 beta 版的 Swift,是蘋果已使用 20 多年,已經老掉牙的開發語言 Objective-C 的替代品。蘋果宣稱,這款新的程式語言要比後者快得多,好用得多,且支援閉包、泛型、型別推理、多種返回型別及名稱空間等許多現代程式設計概念。
蘋果指出,已開發多年的 Swift 將適合於新老開發者。對於老開發者來說,Swift 顯得很熟悉;對於新開發者來說,Swift 顯得很友好。蘋果稱讚這款程式語言為開發者打造了一個“互動的遊樂場”。
不過社交網路上面對 Swift 的評價是好壞參半。
傑出的 iOS 開發者 Steve Streza 對蘋果開始這一轉變感到興奮,說 Swift 繼承了 Objective-C 的優點(如引用計數記憶體管理)的同時也改進了語法和樣式管理。這促使他要對自己的 API 設計進行重新思考,要更加強調型別傳遞。不過他認為在跨越了新語言學習的駝峰曲線之後,Swift 不會對他的工作產生很大的影響。
Streza 對 Swift 的最大擔憂是 Objective-C 和 Swift 的相互協作方式,因為雙方似乎對程式碼編寫方式和 API 資料返回方式作出了頗為不同的假設,尚不清楚這些假設發生衝突時會如何處理。
Streza 的另一個擔憂是有多少人會採用新語言(蘋果仍承諾繼續支援 Objective-C),因為很多人都拒絕改變,而分裂可能會導致在這個平臺上開發的人沮喪。但 Streza 本人預計會完全接受 Swift 並用它來開發新應用。並且他認為 iOS 及 Mac 開發者要是對這門新語言缺乏基本的瞭解的話是很愚蠢的。
另一位舊金山的 web 開發者 Kevin Ingersoll 則認為,對於 web 開發者來說 Swift 的進入壁壘要比 Objective-C 低得多,以前他曾經想寫 app,但是 Objective-C 的學習障礙令他望而卻步,現在這個障礙消失了。
澳大利亞的開發者 Quentin Zervaas 認為,Swift 證明蘋果的確看重開發者工具和開發工作流的易用,並且不斷在努力採取措施來從裝置榨取額外的效能。Zervaas 很期待 Swift 的程式碼實時評估和除錯功能,認為這可以簡化大量的語法。
在 Hacker news 上面的使用者也感到興奮,網友 nln 說 Swift 讓他這個非開發者也感覺有信心去學習如何開發 iOS app。
資深 Objective-C 開發者 Mike 則對 Swift 的推出感到煩惱。因為他喜歡 Objective-C,不想學新語言。對於他來說 Swift 對 Objective-C 的優勢尚不明朗。他對 Swift 的第一印象是為了創新而創新,害怕這會在新老開發者之間造成分裂(老的堅持 Objective-C,新的用 Swift)。
在知乎上對Swift的討論也很熱烈,其中獲贊同最多的是yue wang同學的:
它更像一種讓人快速做原型的 toy language。…… 以 Apple 目前給出的各種資料來看,這語言不會替代掉 ObjC,它不是下一代的 ObjC。
yue wang 列舉的 Swift 的缺點包括標準庫太差、缺乏保護機制、只能與 ObjectIve-C 互動、不能捕捉 Objective-C 的例外也沒有自己的例外機制等。所以他認為蘋果對 Swift 的定位是降低學習曲線的玩具語言。
趙冬毓在讀完 Swift 開發者指南之後,對後者的評價是:
這是一個閹割掉了很多精髓,新增了一些語法糖的 C#和 Scala 的結合體,有一些 Golang 的方便特性,附帶 Golang 和 JS 諸多坑人陷阱的,語法與 JavaFX 接近的,對非 UI 部分不夠嚴肅的,除了 ARC 之外沒有 GC 的一種表達能力較強但是設計能力較弱的語言……換句話說,對於大型專案而言是個坑……更適合 PM 和小作坊快速推出創意原型,不適合追求高質量應用開發。
但知乎上也有反駁的意見。孫竟認為,Swift 的功能豐富,絕非一門玩具語言。而且他以 Swift 重寫 Cocoa API 封裝為例說明,如果蘋果不是想取代 Objective-C,為什麼還要如此費事。其觀點是 Swift 的一些缺點用 Objective-C 只會更坑,對於想轉行做 iOS 或 OS X 的開發者來說,Swift 是個很好的 Objective-C 替代者。
當然,現在就來評判 Swift 的採用率還為時尚早。但 Craig Federighi 宣佈 Swift 時,觀眾的反應是,掌聲未起,就先聽到一陣“哇哦!”所以,Swift 造成的衝擊值得預期:
1 |
println("Hello, world") |