回顧過去一年中編程語言領(lǐng)域的起起落落
譯文在過去的一年里,編程領(lǐng)域迎來了翻天覆地的變化:移動設(shè)備成為編程工作的主要平臺,而另一方面云也成為數(shù)據(jù)及應(yīng)用程序的一大特定平臺。在二者之間,臺式機(jī)與筆記本電腦則在內(nèi)存容量及處理器核心數(shù)方面突飛猛進(jìn)??梢灶A(yù)見的是,上述變化將給開發(fā)語言的選擇帶來深遠(yuǎn)影響。
極負(fù)盛名的Tiobe編程語言排名榜(一份相當(dāng)權(quán)威的榜單,不僅密切關(guān)注各種語言及衍生產(chǎn)品,還會以百分比形式及時(shí)公布具體的變動幅度)表示,在過去一年中發(fā)展勢頭***勁的語言為Objective-C。我相信大家對這一結(jié)果應(yīng)該不會太過驚訝。隨著iPhone、iPod以及iPad(Mac也在一定程度上推波助瀾)在全球范圍內(nèi)的風(fēng)靡,對Objective-C使用技能的需求也得到了顯著提高。
移動設(shè)備的興起同樣對Java造成沖擊。盡管在過去十年中,Java在Tiobe榜單上的各項(xiàng)數(shù)據(jù)已經(jīng)處于衰退之中,但近兩年卻又有卷土重來之勢——我相信這與Android開發(fā)領(lǐng)域的繁榮密不可分——一年來,Java甚至成功捍衛(wèi)了自己的市場占有率。根據(jù)我的分析,Android平臺的出現(xiàn)成功為Java找到了一展身手的空間,尤其是在諸如Scala、Groovy以及JRuby等JVM語言逐步蠶食臺式機(jī)及服務(wù)器平臺的大環(huán)境之下,新平臺堪稱是Java的救星。
隨著移動編程的繁榮發(fā)展,開發(fā)人員們也將注意力轉(zhuǎn)移到較為低級但更貼近硬件本身的編程語言上。通常情況下,由于移動設(shè)備上的應(yīng)用程序往往使用較小的代碼庫,同時(shí)充分發(fā)揮硬件功能也需要使用特定種類的語言,因此腳本語言在這方面也顯得較為疲軟(蘋果公司對編程語言及工具的嚴(yán)格控制也助長了這種趨勢)。綜上所述,多年以來(也可能是有史以來)各種主流腳本語言——包括Perl、Python、Ruby以及PHP等——***次兵敗滑鐵盧。其中Python與Ruby則折戟沉沙得更加徹底。
根據(jù)Ohloh.net網(wǎng)站的總結(jié),Ruby作為一款開源編程語言贏得了開發(fā)者們廣泛的關(guān)注,這從其獲得的捐贈數(shù)額上可見一斑;憑借這樣的人氣,Ruby占據(jù)了Tiobe排行榜中的榜眼位置。而去年Ruby在代碼使用規(guī)模方面達(dá)到了06年以來的***水平——只有08年鼎盛時(shí)期的五分之一。我認(rèn)為這種現(xiàn)象的出現(xiàn),部分原因在于Ruby on Rails(簡稱RoR)引發(fā)的熱潮漸漸平息;另外雖然Ruby框架本身不存在任何固有缺陷,但必須承認(rèn)它只能作為大型項(xiàng)目的備選解決方案之一,而無法搞定所有問題。另外,其它類型的框架也已經(jīng)開始在原創(chuàng)優(yōu)勢方面痛下苦功,這進(jìn)一步削弱了RoR的賣點(diǎn)。Python在Tiobe排行榜中的下滑并沒有反映在Ohloh統(tǒng)計(jì)數(shù)字中,這可能表明盡管Python用戶群體并未縮水,但由于市場整體規(guī)模的迅速擴(kuò)張,導(dǎo)致其相對份額變得更小。
我個人認(rèn)為PHP的頹勢主要源自JavaScript的崛起。JavaScript雖然在Tiobe排行榜中的晉升幅度并不夸張,但其在開源軟件項(xiàng)目中的使用比例卻有了長足進(jìn)步。PHP與JavaScript在功能性方面有著一定程度的重疊,而很明顯后者正慢慢成為時(shí)代的寵兒。一項(xiàng)新的調(diào)查(感謝PHP的出品公司Zend預(yù)先向我們透露了這份調(diào)查內(nèi)容)顯示,82%的PHP開發(fā)人員將JavaScript作為各選語言(而在二者之外排到第三位的競爭者Java則僅占據(jù)了微不足道的24%)。不過目前還難以判斷JavaScript是否能夠?qū)⑦@種優(yōu)勢一直保持下去。正如我在幾個月前的文章中所說,我越來越認(rèn)同JavaScript將成為一種通用型中間語言的趨勢,而Coffeescript與Dart等則會成為前端語言的主流代表。就個人而言,我希望各瀏覽器廠商能夠愿意將JavaScript編譯化二進(jìn)制程序作為未來瀏覽器加速機(jī)制的重要組成部分;不過我認(rèn)為這同時(shí)可能會給某些瀏覽器在指令擴(kuò)展方面走向開源,進(jìn)而阻礙有針對性的性能優(yōu)化。
由腳本語言轉(zhuǎn)向本機(jī)語言的的流行趨勢在.NET領(lǐng)域也表現(xiàn)得相當(dāng)明顯。C#的一炮而紅就很說明問題(其提升幅度僅次于Objective-C而排在第二),這股趨勢甚至一舉讓C#穩(wěn)居C++之上,占據(jù)了Tiobe排行榜的探花位置。我相信這種增幅在很大程度上與開發(fā)人員脫離Visual Basic有關(guān)。這種趨勢非常奇怪地削弱了.NET的主旨,即開發(fā)者在同一平臺上使用多種互操作語言的習(xí)慣。但事實(shí)上,與.NET相關(guān)的各類語言緊密圍繞在了以C#為核心的中央周圍,進(jìn)而弱化了原有使用習(xí)慣帶來的益處(具有諷刺意味的是,JVM則遭遇到完全相反的事態(tài),即多種具有互操作性的備用語言逐漸占據(jù)上風(fēng))。
一年還不足以使一種趨勢成為常態(tài),因此上述變化將以何種方式收尾目前還無法得到定論。然而非腳本語言的發(fā)展由于其遍地開花的良好勢頭,可能真的預(yù)示著長期以來束縛著開發(fā)者們的固定習(xí)慣即將動搖。盡管執(zhí)行平臺在性能與接合的嚴(yán)密程度方面難免有所損失,但相比之下似乎一切都是值得的。結(jié)局會怎樣?讓我們拭目以待吧。
原文鏈接:http://drdobbs.com/mobile/232400093
【編輯推薦】