蘋果自家的程式語言 Swift 一經推出便引起了多方討論,一些人說 Swift 將會改變整個蘋果的應用生態,一些人則認為這不過是一個玩具語言。
因此今天我和極客學院的創辦人靳岩,以及氪加的 iOS 開發工程師盧侃一起聊了聊 Swift 對網路的影響。有趣的是,我們三個,一個是網路的觀察者(我),我一個是網路技術教育的從業者(靳岩),一個是 iOS 應用的開發者(正為避免失業而開始看 Swift 的盧侃),都對 Swift 可能帶來的前景感到興奮。
而 C 語言等面向機器的語言則更像是一個懂英語的人用中文說話給翻譯,他了解英語思考者的思路和邏輯,並且明確的用中文中類似的表達說出來,所以 C 語言的運行效率更高。
而我對 Swift 看好的原因,便是它既解決了腳本語言運行效率的問題,又繼承了其簡潔的語法和強大的功能。Swift 語言的發明者 Chris Lattner 之前最大的成就便是開發了編譯系統 LLVM,能將高級語言轉換為機器語言,也就是前文所說的「翻譯」。Lattner 也因為 LLVM 其極大的提高了包括 Objective C 在內的諸多高級語言的執行效率而獲得了美國計算機協會頒發的「軟體系統獎」。
這次 Lattner 開發 Swift 相當於從高級語言到編譯器做了個全套,並且他表示 Swift 在許多方面的運行效率都優於 Objective C,而且遠超的 Python。
也就是說,如果 Swift 的運行效率真的像 Lattner 描述的那樣,那麼 Swift 代表的程式設計師先進生產力的發展要求(提高 Coding 效率),代表了電腦先進文化的發展方向(語法簡潔,現代),代表了廣大人民的根本利益(寫起來爽,學起來快)。當然,前提是 Swift 真的像 Lattner 所說的那樣強大。
Swift 是蘋果對自己的一次顛覆,而它對抗的正是 Code 界的官僚化
教育者靳岩:
我認為現在大家不論怎樣高度評價 Swift 都是低估了它會對業界帶來的影響。
首先是他是一門新語言,而且關鍵是它是被蘋果推動的,有非常好的應用場景。圍繞 Swift 未來會出現與之相關的社區,開源 Code ,培訓課程等 …… Swift 將會帶動一整個與之相關的生態,而裡面一個非常小的部分都有很大的商機。
Swift 的情形和 Go(Google 發布的編程語言)不一樣。大家都知道 Go 很好,但 Google 從來沒說要大家用 Go 來寫 Andorid 的應用。這就不像蘋果,推出 Swift 後,對 Objective C 的支持肯定會逐漸減弱,最後完全轉到 Swift,這就逼大家必須拋棄二十多年前發明的 Objective C 而必須用 Swift。退一步,如果用 Swift 的效率比 Objective C 高,你如果不用 Swift 在應用市場上的反應就會比別人慢,那還是逼你用 Swift。
特別是這樣一來,Google 最後還是只能要求大家用 Go 而不是 Java 來寫 Andorid 的應用,這樣對整個 IT 圈都是一件進步的事。
Swift 並非一門為入門者準備的語言
iOS 開發者盧侃:
自從 Swift 推出後小伙伴們都嘲笑我這個 Objective C 的開發者要失業了…… 所以我最近一直在看 Swift ……。
事實上,我身邊的很多人都在看 Swift,除了一些其他領域的 Coder 外,也有人想從 Swift 作為學習 Coding 的入門。但我覺得 Swift 並非一門為入門者準備的語言。
Swift 參考了諸多主流腳本語言的語法,這讓它在語法上非常容易,一些有經驗的開發者花一兩個小時看看開發指南就能上手,但開發應用和了解語法畢竟是不一樣的事。
舉個例子,如果一個開發者本來做服務器端的人,那他可能完全不知道一款應用的開發模式(比如蘋果推崇的 MVC) 模式,那麼,儘管他對語言本身很熟悉,但和應用開發有關的一切都還是要重新學。因此,儘管 Swift 降低了程式語言的學習成本,但開發依然需要經驗,所以很多人說 Swift 只是表面上把大家拉到了同一個起點,原本熟悉 iOS 的開發者還是擁有極大的優勢。而對初學者來說,語言門檻之後還有許多門檻,不可能突然湧現出許多之前對編程沒什麼了解的開發者。
當然,Swift 的特性會得到怎樣的應用,能否提高 iOS 應用的性能等,我們可能需要在用 Swift 編寫的應用上線後才能看到。
我準備研究 Swift 去了……。(可憐的即將失業的 Objective C 工程師)
當然,我們對 Swift 的討論都以它是一款開發 iOS 端和 OS X 端的程式語言為前提,並非討論各種程式語言本身的優劣。目前 GitHub 上已經出現了一些 Swift 的開源項目,極客學院也上線了 Swift 的開發課程,有興趣的朋友可以去看看。
延伸閱讀:
Coder 們對蘋果新程式語言反應兩極, Swift 到底是「玩具語言」還是會取代 Objective-C ?