有些語言誕生幾十年了依然是世界上最流行的語言,比如C語言。有些語言雖然號稱新興的語言卻很少有人使用。在編程語言這個領域裡似乎不符合長江後浪推前浪這個規律。這恐怕不止語言本身的因素,裡面的緣由值得研究者好好去探索一番。
近年來,谷歌一直致力於開發出自己的編程語言以取代當今世上最常用的C、C++和JavaScript。在系統語言方向,谷歌的Go語言能夠為用戶在數據中心內建立大型軟件提供更多的便捷,有望取代C語言和C++的地位;而在網絡開發方面,谷歌希望憑借Dart取代JavaScript。編程語言的世界裡可謂是江山代有人才出,可有那麼一位引領風騷達數十年之久,它就是C語言。
編程語言之間的競爭一天也沒能停歇,長江後浪推前浪,一代更比一代強。它們之中只有屈指可數的少數能夠被市場接納,成為程序員們日日夜夜的伴侶。究竟怎樣的編程語言才能夠成為大浪淘沙中的幸運兒?普林斯頓大學(Princeton)和加州大學伯 克利分校(University of California at Berkeley)的研究者雷歐·馬耶若維奇(Leo Meyerovich)和阿裡·拉布金(Ari Rabkin)希望通過自己的研究,來解開編程語言世界的叢林法則。他們在探尋一個問題——為何C語言雖垂垂老矣卻能屹而不倒?
雷歐和阿裡采訪了數以萬計的程序員,又在全球最大的軟件倉庫SourceForge梳理了超過30萬份的程序。“為什麼C語言沒有被淘汰?”拉布金提出了這個問題。的確,C語言距問世之初已經有了35年的歷史。在這期間裡,計算機邁出了不可測量的發展步伐,軟件和操作系統也早就今非昔比,編程語言中不乏叱咤風雲的新生代,而C語言也有了升級版。即便如此,C語言依舊風采不減當年。
拉布金剛剛取得了加州大學伯克利分校的計算機博士學位,如今在普林斯頓大學攻讀博士後學位。“在學術領域,現今的趨勢是解決那些尚未出現的難題,”拉布金說,“學者們希望能夠標新立異地建立起一個全新的語言系統,就沒有考慮這麼一套編程語言是否有實踐的價值。編程語言的開發者們缺少一個明確的目標。”他指出,有些編程語言甚至缺失了最基礎的東西,比如文檔(Documentation);還有些開發者不停地在語言系統上畫蛇添足,弄到最後搞的程序員們只能因為它太“豐富”了不得不放棄。馬耶若維奇認為:“我們發現這個問題事實上不是一個技術領域的問題,它是因為整個學術界不夠注重實踐需求所造成的”。
新興編程語言Scale是一個很好的例子。數據分析機構Slice-Data的創始人之一張洋(音譯)是Scale眾多使用者中的一員,他從2006年起開始接觸Scale。Scale在問世之初文件編制就存在很大的缺陷,這給用戶的學習使用造成了很大的不便和痛苦。“我當時肯定是個受虐狂。”他回憶道。
除卻新興語言本身的問題,這裡面還有一個要素是程序員的學習能力。試驗中收集的信息表明,因為學習新語言太辛苦困難了,程序員們在使用一款新型的編程語言前並不會認認真真地去學習一番。馬耶若維奇拿Adobe公司開發的ActionScript作為例子。ActionScript是一款以用戶為導向的編程語言,程序員們普遍認為ActionScript的使用比較簡單。可是當要用ActionScript做新的事時,比如從媒體開發轉向游戲開發,因為沒有系統的學習過,他們就束手無策了。
我們普遍認為,程序員年齡越大,經驗就越老道,掌握的語言就越多。事實又是怎樣的呢?雷歐和阿裡在試驗中發現,多數程序員都掌握了3至4種程序語言,但當他們到了35-40歲時,很多人就會步入管理崗位。脫離了編程一線,學習新語言的動機和機會就大打折扣了。
馬耶若維奇認為,他們正在研究的這個課題十分重要,關乎整個行業是否能夠高速和健康地發展。他和拉布金把實驗數據都發布在網絡上,希望他人能夠給出新的視角,同時為如何解決這一問題提供建議與幫助。
英文原文鏈接:http://www.wired.com/wiredenterprise/2012/06/berkeley-programming-languages/