为什么说Swift正在颠覆整个互联网生态?
蘋果自家的編程語(yǔ)言 Swift 一經(jīng)推出便引起了多方討論,一些人說 Swift 將會(huì)改變整個(gè)蘋果的應(yīng)用生態(tài),一些人則認(rèn)為這不過是一個(gè)玩具語(yǔ)言。因此今天我和極客學(xué)院的創(chuàng)始人靳巖,以及氪加的 iOS 開發(fā)工程師盧侃一起聊了聊 Swift 對(duì)互聯(lián)網(wǎng)的影響。有趣的是,我們?nèi)齻€(gè),一個(gè)是互聯(lián)網(wǎng)的觀察者(我),我一個(gè)是互聯(lián)網(wǎng)技術(shù)教育的從業(yè)者(靳巖),一個(gè)是 iOS 應(yīng)用的開發(fā)者(正為避免失業(yè)而開始看 Swift 的盧侃),都對(duì) Swift 可能帶來的前景感到興奮。
觀察者暮山:
從一個(gè)旁觀者的角度,我認(rèn)為 Swift 的代表的是編程語(yǔ)言的基本發(fā)展方向。
縱觀計(jì)算機(jī)的發(fā)展史,我們可以看到,計(jì)算機(jī)編程語(yǔ)言在由以機(jī)器為中心向以人為中心發(fā)展,即,從更便于機(jī)器閱讀的語(yǔ)言發(fā)展為更便于人類編寫,更接近人類自然語(yǔ)言。
最開始的電腦編程都是人工輸入“0”和“1”的機(jī)器語(yǔ)言,完全以電腦為中心。后來大家覺得每天輸“0”“1”效率實(shí)在太低了,便有人發(fā)明了匯編語(yǔ)言,用一些符合和字母來代替特定的“0”和“1”的組合。再后來,匯編語(yǔ)言也顯得寫起來太慢,如果想用匯編語(yǔ)言寫一個(gè)較大的程序需要海量的代碼。于是有人發(fā)明了 C 語(yǔ)言這門“高級(jí)語(yǔ)言”,讓開發(fā)者本身能夠更高效快速的編寫代碼,同時(shí)不太犧牲計(jì)算機(jī)讀取代碼的效率。然后 C 語(yǔ)言迅速成為了代碼界的主流語(yǔ)言。
盡管 C 語(yǔ)言比起最初的機(jī)器語(yǔ)言已經(jīng)好懂很多,而且需要寫的代碼量更少了,但依然有人想,編程語(yǔ)言能不能更簡(jiǎn)單,更像人話?這就出現(xiàn)了腳本語(yǔ)言,比如大家熟知的 Python,Perl,以及我們的網(wǎng)站所用的 PHP。然而腳本語(yǔ)言并沒有像 C 語(yǔ)言一樣基本替代了匯編語(yǔ)言,這是為什么呢?
最簡(jiǎn)單的原因便是,腳本語(yǔ)言運(yùn)行效率較低。電腦并不理解腳本語(yǔ)言,因此,用腳本語(yǔ)言寫的程序會(huì)被轉(zhuǎn)化為機(jī)器語(yǔ)言,從而讓計(jì)算機(jī)執(zhí)行。然而問題是,這就好像我說中文,你說英語(yǔ),我們之間隔了一個(gè)翻譯,翻譯給機(jī)器后總是會(huì)產(chǎn)生詞不達(dá)意的情況,因此許多本來很簡(jiǎn)單的運(yùn)行會(huì)被拖的冗長(zhǎng),從而降低了運(yùn)行效率。而 C 語(yǔ)言等面向機(jī)器的語(yǔ)言則更像是一個(gè)懂英語(yǔ)的人用中文說話給翻譯,他了解英語(yǔ)思考者的思路和邏輯,并且明確的用中文中類似的表達(dá)說出來,所以 C 語(yǔ)言的運(yùn)行效率更高。
而我對(duì) Swift 看好的原因便是它既解決了腳本語(yǔ)言運(yùn)行效率的問題,又繼承了其簡(jiǎn)潔的語(yǔ)法和強(qiáng)大的功能。Swift 語(yǔ)言的發(fā)明者 Chris Lattner 之前最大的成就便是開發(fā)了編譯系統(tǒng) LLVM,能將高級(jí)語(yǔ)言轉(zhuǎn)換為機(jī)器語(yǔ)言,也就是前文所說的“翻譯”。Lattner 也因?yàn)?LLVM 其極大的提高了包括 Objective C 在內(nèi)的諸多高級(jí)語(yǔ)言的執(zhí)行效率而獲得了美國(guó)計(jì)算機(jī)協(xié)會(huì)頒發(fā)的“軟件系統(tǒng)獎(jiǎng)”。這次 Lattner 開發(fā) Swift 相當(dāng)于從高級(jí)語(yǔ)言到編譯器做了個(gè)全套,并且他表示 Swift 在許多方面的運(yùn)行效率都優(yōu)于 Objective C,而且遠(yuǎn)超的 Python。
也就是說,如果 Swift 的運(yùn)行效率真的像 Lattner 描述的那樣,那么 Swift 代表的程序猿先進(jìn)生產(chǎn)力的發(fā)展要求(提高編程效率),代表了計(jì)算機(jī)先進(jìn)文化的發(fā)展方向(語(yǔ)法簡(jiǎn)潔,現(xiàn)代),代表了廣大人民的根本利益(寫起來爽,學(xué)起來快)。當(dāng)然,前提是 Swift 真的像 Lattner 所說的那樣強(qiáng)大。
教育者靳巖:
我認(rèn)為現(xiàn)在大家不論怎樣高度評(píng)價(jià) Swift 都是低估了它會(huì)對(duì)業(yè)界帶來的影響。
首先是他是一門新語(yǔ)言,而且關(guān)鍵是它是被蘋果推動(dòng)的,有非常好的應(yīng)用場(chǎng)景。圍繞 Swift 未來會(huì)出現(xiàn)與之相關(guān)的社區(qū),開源代碼,培訓(xùn)課程等...Swift 將會(huì)帶動(dòng)一整個(gè)與之相關(guān)的生態(tài),而里面一個(gè)非常小的部分都有很大的商機(jī)。
其次我個(gè)人也非常看好 Swift,因?yàn)樗翘O果對(duì)自己的一次顛覆,而它對(duì)抗的正是代碼界的官僚化。舉個(gè)例子,現(xiàn)在 Java 都更新到 8.0,但現(xiàn)在大部分人用的都還是 Java 1.6,為什么大家不用有更多新特性的 Java 8.0 呢?說白了就是大家覺得 1.6 已經(jīng)能做許多事情,懶得去看新功能了。而 Java 本身也一樣,一度我都覺得它要死了,結(jié)果 Andorid 又把它救活了。但現(xiàn)在 Java 修修補(bǔ)補(bǔ)到 8.0 依然還是有許多問題是沒法解決的,因?yàn)楸旧砭褪羌軜?gòu)上的過時(shí),那為何大家還在用它?因?yàn)槟切┐蠊径加昧?xí)慣 Java 了,沒有勇氣去換一個(gè)更現(xiàn)代更高效的語(yǔ)言,而 Swift 則是逼著公司和開發(fā)者去適應(yīng)新的語(yǔ)言和功能。
Swift 的情形和 Go(Google 發(fā)布的編程語(yǔ)言)不一樣。大家都知道 Go 很好,但 Google 從來沒說要大家用 Go 來寫 Andorid 的應(yīng)用。這就不像蘋果,推出 Swift 后,對(duì) Objective C 的支持肯定會(huì)逐漸減弱,最后完全轉(zhuǎn)到 Swift,這就逼大家必須拋棄二十多年前發(fā)明的 Objective C 而必須用 Swift。退一步,如果用 Swift 的效率比 Objective C 高,你如果不用 Swift 在應(yīng)用市場(chǎng)上的反應(yīng)就會(huì)比別人慢,那還是逼你用 Swift。
特別是這樣一來,Google 最后還是只能要求大家用 Go 而不是 Java 來寫 Andorid 的應(yīng)用,這樣對(duì)整個(gè) IT 圈都是一件進(jìn)步的事。
iOS開發(fā)者盧侃:
自從 Swift 推出后小伙伴們都嘲笑我這個(gè) Objective C 的開發(fā)者要失業(yè)了... 所以我最近一直在看 Swift...
事實(shí)上,我身邊的很多人都在看 Swift,除了一些其他領(lǐng)域的 coder 外,也有人想從 Swift 作為編程學(xué)習(xí)的入門。但我覺得 Swift 并非一門為入門者準(zhǔn)備的語(yǔ)言。
Swift 參考了諸多主流腳本語(yǔ)言的語(yǔ)法,這讓它在語(yǔ)法上非常容易,一些有經(jīng)驗(yàn)的開發(fā)者花一兩個(gè)小時(shí)看看開發(fā)指南就能上手,但開發(fā)應(yīng)用和了解語(yǔ)法畢竟是不一樣的事。舉個(gè)例子,如果一個(gè)開發(fā)者本來做服務(wù)器端的人,那他可能完全不知道一款應(yīng)用的開發(fā)模式(比如蘋果推崇的 MVC) 模式,那么,盡管他對(duì)語(yǔ)言本身很熟悉,但和二手手游賬號(hào)出售應(yīng)用開發(fā)有關(guān)的一切都還是要重新學(xué)。因此,盡管 Swift 降低了編程語(yǔ)言的學(xué)習(xí)成本,但程序開發(fā)依然需要經(jīng)驗(yàn),所以很多人說 Swift 只是表面上把大家拉到了同一個(gè)起點(diǎn),原本熟悉 iOS 的開發(fā)者還是擁有極大的優(yōu)勢(shì)。而對(duì)初學(xué)者來說,語(yǔ)言門檻之后還有許多門檻,不可能突然涌現(xiàn)出許多之前對(duì)編程沒什么了解的開發(fā)者。
當(dāng)然,Swift 的特性會(huì)得到怎樣的應(yīng)用,能否提高 iOS 應(yīng)用的性能等,我們可能需要在用 Swift 編寫的應(yīng)用上線后才能看到。
我看 Swift 去了...
(可憐的即將失業(yè)的 Objective C 工程師...)
當(dāng)然,我們對(duì) Swift 的討論都以它是一款開發(fā) iOS 端和 OS X 端的編程語(yǔ)言為前提,并非討論各種編程語(yǔ)言本身的優(yōu)劣。目前 GitHub 上已經(jīng)出現(xiàn)了一些 Swift 的開源項(xiàng)目,極客學(xué)院也上線了 Swift 的開發(fā)課程,有興趣的同學(xué)可以去查看。
總結(jié)
以上是生活随笔為你收集整理的为什么说Swift正在颠覆整个互联网生态?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不使用物理引擎实现防止群聚行为敌人扎堆
- 下一篇: 3GU仙果游戏达成三地技术引擎战略合作联