蘋果自家的程式語言 Swift 一經推出便引起了多方討論,一些人說 Swift 將會改變整個蘋果的應用生態,一些人則認為這不過是一個玩具語言。

因此今天我和極客學院的創辦人靳岩,以及氪加的 iOS 開發工程師盧侃一起聊了聊 Swift 對網路的影響。有趣的是,我們三個,一個是網路的觀察者(我),我一個是網路技術教育的從業者(靳岩),一個是 iOS 應用的開發者(正為避免失業而開始看 Swift 的盧侃),都對 Swift 可能帶來的前景感到興奮。

  • Swift 的代表的是程式語言的基本發展方向

觀察者暮山:

從一個旁觀者的角度,我認為 Swift 的代表的是程式語言的基本發展方向。

縱觀電腦的發展史,我們可以看到,電腦程式語言在由以機器為中心向以人為中心發展,即,從更便於機器閱讀的語言發展為更便於人類編寫,更接近人類自然語言

最開始的電腦編程都是人工輸入「0」和「1」的機器語言,完全以電腦為中心。後來大家覺得每天輸「0」「1」效率實在太低了,便有人發明了彙編語言,用一些符合和字母來代替特定的「0」和「1」的組合。再後來,彙編語言也顯得寫起來太慢,如果想用彙編語言寫一個較大的程序需要海量的 Code 。於是有人發明了 C 語言這門「高級語言」,讓開發者本身能夠更高效快速的編寫 Code,同時不太犧牲電腦取 Code 的效率。

然後 C 語言迅速成為了 Code 界的主流語言。

儘管 C 語言比起最初的機器語言已經好懂很多,而且需要寫的 Code 量更少了,但依然有人想,程式語言能不能更簡單,更像人話?這就出現了腳本語言,比如大家熟知的 Python,Perl,以及我們的網站所用的 PHP。然而腳本語言並沒有像 C 語言一樣基本替代了彙編語言,這是為什麼呢?

最簡單的原因便是,腳本語言運行效率較低。電腦並不理解腳本語言,因此,用腳本語言寫的程式會被轉化為機器語言,從而讓電腦執行。然而問題是,這就好像我說中文,你說英語,我們之間隔了一個翻譯,翻譯給機器後總是會產生詞不達意的情況,因此許多本來很簡單的運行會被拖的冗長,從而降低了運行效率。

而 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,因為它是蘋果對自己的一次顛覆,而它對抗的正是 Code 界的官僚化。舉個例子,現在 Java 都更新到 8.0,但現在大部分人用的都還是 Java 1.6,為什麼大家不用有更多新特性的 Java 8.0 呢?說白了就是大家覺得 1.6 已經能做許多事情,懶得去看新功能了。

而 Java 本身也一樣,一度我都覺得它要死了,結果 Andorid 又把它救活了。但現在 Java 修修補補到 8.0 依然還是有許多問題是沒法解決的,因為本身就是架構上的過時,那為何大家還在用它?因為那些大公司都用習慣 Java 了,沒有勇氣去換一個更現代更高效的語言,而 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 ?

蘋果的物聯網策略不是自造「i 傢俱」,而是要讓 iPhone 當萬物之王

(轉載自合作媒體《36kr》)