程式語言在2012年的起伏

const_cast發表於2013-01-27

作者Andrew Binstock,2013年1月8日

C++的復興並沒有出現,JAVA活的非常好,Object-C仍然原地打轉。都發生了什麼?

程式語言們經常遵循這麼一種生存規律:他們出生後,幸運的那部分並不會在初期就消亡,這部分有時候可以活的更久、更滋潤,然後,不可避免的進入到衰退期。和真實的生命不同,程式語言的衰退期可以持續很多年,因為很多遺留下來的程式碼需要在未來若干年內進行維護。一個程式語言在過去越流行,它的消亡期也會持續的越久。

一種新程式語言的誕生總是伴隨著一個特定領域的需求而出現的,例如,Ruby的突然流行是伴隨著Ruby on Rails(一種開發框架)出現的,那時候正是2007年iPhone剛剛上市的時候。因此,理解程式語言的上升或者下降——也包括起伏的趨勢——經常會傳遞給人們一些當前編碼問題領域中有價值的觀點。

最近的處理器現象——從多核心(multicore)到眾核心(many-core)的過渡經常被認為給函式式語言的出現奠定了基礎,因為函式式語言能更好的適應並行程式設計,但是,在2012年中的大部分調查中,卻並沒有看到這個領域有什麼突破。如果有能夠脫穎而出的函式式語言,很可能是Scala和Clojure,因為Scala目前在該領域佔有的份額較大。(這個觀點的根據是,Ohloh's程式語言圖解 ,此圖覆蓋了所有的開源專案,和Google搜尋流量趨勢。在比較權威的 Tiobe索引中——它會跟蹤所有包含特定程式語言的網頁的數量,Haskell, Erlang, and Scala都緊緊地跟著和壓著Clojure.)

程式語言流行度資料往往會讓一些語言的支持者和反對者都感到沮喪。多年以來,人們總是舉很多例子來預測JAVA將會衰落,但是,來自於上面提到的那三個網站的資料卻顯示了相反的趨勢。一年過了一年,JAVA的排名在最近的三年中一直沒有變過,在所有主流語言的調查中,JAVA一直保持在第一或者第二(始終在C語言附近)。這個事實可能會引起人們對於程式語言的不斷的抱怨,以及在JVM上執行多個語言的可行性(JRuby、Scala、Kotlin、Clojure、Fantom、Gosu,和一些其他的)卻沒有減少JAVA的流行度,但是,我認為更大的真相是,使用傳統架構的語言確實正處於衰落期,但是Android的興起卻恰恰彌補了這個不足。

其他的主要開發移動應用的程式語言,比如Objective-C,也做的非常好:他在Tiobe索引排名中興風作浪(蒐集了很多年內程式語言的成長資訊)。在Google趨向分析中,2007年之後,它一直保持在相同的排名(當iPhone第一次上市,移動應用開發變的非常有用的時候)。但是,如果Android繼續蠶食Apple在世界市場的份額,我們在未來應該可以看到Objective-C會保持穩定,而Java將會增長。

在一些通用指令碼語言中,Python持續慢速增長,JavaScript和Ruby則止步不前,Perl進入到了漫長的衰弱期。根據Google趨勢分析,Perl的搜尋量是2004年的19%。他在開源社群中的地位急劇下跌和它本身處於不可挽回的的衰落期密不可分。一個人應當很謹慎的宣佈一個程式語言已經死亡或者正在死亡,因為程式語言的復活機率是相當低的: 這裡並不包括JavaScript和Objective-C,它倆是兩個例外。但是,由於Python更具有競爭力,並且相當流行,因此,Perl看起來並不可能在實際應用中重振雄風(相反,當Objective-C和JavaScript殺回來的時候,他們並沒有替代品,因此他們可以東山再起)。

主要的原生語言,C和C++,仍然保持原樣,在不同的調查報告中有微小的上升和下降。這些資料打破了微軟的Herb Sutter關於C++“復興“的預言。Google的搜尋趨勢圖則表明了在過去的五年內,C++的搜尋量一直在穩步下滑:

enter image description here

大多數已知的程式語言在過去的五年中的Google搜尋量都處在一個下降的趨勢,因此,這種下降並不一定是消亡的象徵——雖然如果這個語言正處在復興的階段,你可能更希望看到它能處於上升趨勢中。一些其他的指標(例如在OSS中LOCs的改變),事實上非常穩定,有些甚至稍微上漲了一些。我認為Sutter那部分關於復興的期望是建立在C++11標準已經完成的基礎上的,同時也來源於最近發行的Windows 8與最新的C++相容的相當好的事實。但是,我卻沒並沒看到任何C++復興的跡象,同時,我也沒看到任何C++快速會跌落到谷底的預兆。如果C++復興可能發生的話,它必須成為可以在今天最熱門的領域中使用的主要語言之一:移動應用,或雲端計算、抑或大資料,時間將會證明這一點。但是我可以很確定的說,C++可以在它的傳統領域持續成長,成長速度可以和這些領域的成長速度相同。

一些其他想法:Lua和Tcl,在嵌入式C和C++中使用的最主要的兩種語言,在朝著相反的方向發展。Lua在遊戲領域被廣泛應用,新的、效率超高的LuaJIT讓Lua成為了一個在效能敏感環境中很有吸引力的一個選擇。另一方面,Tcl則繼續衰落,原因則是一些內部核心設計問題,版本發行太慢,以及匱乏的市場決策。

在2012年,我們報導了若干很有潛力的新興程式語言,這些語言有的有進入主流應用的傾向,尤其是DGo,以及Dart。雖然 他們目前並沒有進入到程式語言的主流層次,但它們正在以自己的方式前進著,並且獲得了一些擁護者。我們將會在今年調查更多新的、有趣的程式語言,並且以開發者所熱愛的方式報導它們的發展程式。

原文連結:The Rise and Fall of Languages in 2012

相關文章