蘋果自家的編程語言 Swift 一經推出便引起了多方討論,一些人說 Swift 將會改變整個蘋果的應用生態,一些人則認為這不過是一個玩具語言。因此今天我和極客學院的創始人靳巖,以及氪加的 iOS 開發工程師盧侃一起聊了聊 Swift 對互聯網的影響。有趣的是,我們三個,一個是互聯網的觀察者(我),我一個是互聯網技術教育的從業者(靳巖),一個是 iOS 應用的開發者(正為避免失業而開始看 Swift 的盧侃),都對 Swift 可能帶來的前景感到興奮。
最開始的電腦編程都是人工輸入“0”和“1”的機器語言,完全以電腦為中心。后來大家覺得每天輸“0”“1”效率實在太低了,便有人發明了匯編語言,用一些符合和字母來代替特定的“0”和“1”的組合。再后來,匯編語言也顯得寫起來太慢,如果想用匯編語言寫一個較大的程序需要海量的代碼。于是有人發明了 C 語言這門“高級語言”,讓開發者本身能夠更高效快速的編寫代碼,同時不太犧牲計算機讀取代碼的效率。然后 C 語言迅速成為了代碼界的主流語言。
盡管 C 語言比起最初的機器語言已經好懂很多,而且需要寫的代碼量更少了,但依然有人想,編程語言能不能更簡單,更像人話?這就出現了腳本語言,比如大家熟知的 Python,Perl,以及我們的網站所用的 PHP。然而腳本語言并沒有像 C 語言一樣基本替代了匯編語言,這是為什么呢?
最簡單的原因便是,腳本語言運行效率較低。電腦并不理解腳本語言,因此,用腳本語言寫的程序會被轉化為機器語言,從而讓計算機執行。然而問題是,這就好像我說中文,你說英語,我們之間隔了一個翻譯,翻譯給機器后總是會產生詞不達意的情況,因此許多本來很簡單的運行會被拖的冗長,從而降低了運行效率。而 C 語言等面向機器的語言則更像是一個懂英語的人用中文說話給翻譯,他了解英語思考者的思路和邏輯,并且明確的用中文中類似的表達說出來,所以 C 語言的運行效率更高。
而我對 Swift 看好的原因便是它既解決了腳本語言運行效率的問題,又繼承了其簡潔的語法和強大的功能。Swift 語言的發明者 Chris Lattner 之前最大的成就便是開發了編譯系統 LLVM,能將高級語言轉換為機器語言,也就是前文所說的“翻譯”。Lattner 也因為 LLVM 其極大的提高了包括 Objective C 在內的諸多高級語言的執行效率而獲得了美國計算機協會頒發的“軟件系統獎”。這次 Lattner 開發 Swift 相當于從高級語言到編譯器做了個全套,并且他表示 Swift 在許多方面的運行效率都優于 Objective C,而且遠超的 Python。
也就是說,如果 Swift 的運行效率真的像 Lattner 描述的那樣,那么 Swift 代表的程序猿先進生產力的發展要求(提高編程效率),代表了計算機先進文化的發展方向(語法簡潔,現代),代表了廣大人民的根本利益(寫起來爽,學起來快)。當然,前提是 Swift 真的像 Lattner 所說的那樣強大。
教育者靳巖:
我認為現在大家不論怎樣高度評價 Swift 都是低估了它會對業界帶來的影響。
首先是他是一門新語言,而且關鍵是它是被蘋果推動的,有非常好的應用場景。圍繞 Swift 未來會出現與之相關的社區,開源代碼,培訓課程等...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 圈都是一件進步的事。
iOS開發者盧侃:
自從 Swift 推出后小伙伴們都嘲笑我這個 Objective C 的開發者要失業了... 所以我最近一直在看 Swift...
事實上,我身邊的很多人都在看 Swift,除了一些其他領域的 coder 外,也有人想從 Swift 作為編程學習的入門。但我覺得 Swift 并非一門為入門者準備的語言。
Swift 參考了諸多主流腳本語言的語法,這讓它在語法上非常容易,一些有經驗的開發者花一兩個小時看看開發指南就能上手,但開發應用和了解語法畢竟是不一樣的事。舉個例子,如果一個開發者本來做服務器端的人,那他可能完全不知道一款應用的開發模式(比如蘋果推崇的 MVC) 模式,那么,盡管他對語言本身很熟悉,但和應用開發有關的一切都還是要重新學。因此,盡管 Swift 降低了編程語言的學習成本,但程序開發依然需要經驗,所以很多人說 Swift 只是表面上把大家拉到了同一個起點,原本熟悉 iOS 的開發者還是擁有極大的優勢。而對初學者來說,語言門檻之后還有許多門檻,不可能突然涌現出許多之前對編程沒什么了解的開發者。
當然,Swift 的特性會得到怎樣的應用,能否提高 iOS 應用的性能等,我們可能需要在用 Swift 編寫的應用上線后才能看到。
我看 Swift 去了...
(可憐的即將失業的 Objective C 工程師...)
當然,我們對 Swift 的討論都以它是一款開發 iOS 端和 OS X 端的編程語言為前提,并非討論各種編程語言本身的優劣。目前 GitHub 上已經出現了一些 Swift 的開源項目,極客學院也上線了 Swift 的開發課程,有興趣的同學可以去查看。