為什么有些編程語言會死而有些能活下來?
谷歌打算要改變我們這個世界寫軟件的方法。近年來,這個搜索引擎巨頭試圖在這個星球中已經(jīng)最廣泛使用的編程語言上做改進,已經(jīng)推出了2種新的編程語言。
通過一種叫Go的語言,谷歌試圖拿它來替換年事已高的C或C++語言,希望它能提供一種更加快捷的在數(shù)據(jù)中心里開發(fā)大型軟件平臺的方法。而通過一種叫Dart的語言,谷歌想用它來替代JavaScript,改進我們開發(fā)運行在Web瀏覽器里的軟件的方法。
但是,不管這些新的編程語言多么的具有吸引力,我們不得不問一句,它們需要多久才能真正的流行起來——如果能夠的話。畢竟,新的編程語言不停的誕生。但只有很少一部分能被廣泛的接受。
在普林斯頓大學(xué)和伯克利的加州大學(xué),兩位研究人員試圖在為什么有些編程語言能走進它們的黃金時代而眾多余下的卻不能的原因上貢獻出自己的智慧。在一個他們自稱為“業(yè)余研究”里,Leo Meyerovich 和 Ari Rabkin 調(diào)查了數(shù)萬個程序員,梳理了流行的代碼庫SourceForge上超過30萬個項目——所有的這些努力都是為了能清楚為什么老的編程語言仍然處于霸權(quán)地位。
“為什么沒有語言能夠真正的超越C語言?”Rabkin問道。自從C語言誕生以來的35年里,我們操作系統(tǒng)和軟件設(shè)計都獲得了巨大的飛躍,但是,雖說C語言中這段時間里有了加強,但也有很多新的非常成功的語言出現(xiàn),可C語言仍然是開發(fā)語言中的中堅力量。
“為什么我們不能真正的超越C語言?” — Ari Rabkin |
部分的原因,他說,是因為語言的設(shè)計者并不都具有一個讓這些語言實用化的目標(biāo)。“學(xué)院派人的一個習(xí)慣就是喜歡去研究解決沒有人真正遇到過的問題,”Rabkin說。 Rabkin最近剛剛獲得了伯克利加州大學(xué)的計算機科學(xué)博士學(xué)位,現(xiàn)在在普林斯頓大學(xué)做博士后研究工作。
Rabkin說,學(xué)院派的人經(jīng)常想要開發(fā)出一種不同凡響的語言,但他們卻從來不思考如何能讓這種語言變的實用。在一些案例中,他們在一些最簡單的事 情上都做的很失敗,比如說為這種新語言寫文檔。在另一些案例中,設(shè)計者不停的往一種語言里添加新的的特征,成功的使試圖使用這種語言的技術(shù)人員的大腦因超 載而宕機。
“這樣的問題的解決辦法并非都是技術(shù)范疇,”Meyerovich說。“我們需要去發(fā)明一些能夠被“大眾了解”的語言。
張揚(Yang Zhang),Slice-Data分析公司的共同創(chuàng)始人,曾在攻讀麻省理工博士學(xué)位中途退學(xué),他曾是眾多的追隨一種新的叫做Scala的語言的信徒之一,但他承認(rèn),這種語言之初糟糕的文檔和只能從語言的設(shè)計者哪里獲得幫助的情況給學(xué)習(xí)者造成了巨大的障礙。“我當(dāng)時真是一個受虐狂,”他這樣描述2006年學(xué)習(xí)這種語言經(jīng)歷。
Meyerovich說,他和Rabkin收集到的數(shù)據(jù)顯示,程序員在開始使用一種新的語言時并不總是去花時間好好學(xué)習(xí)它們——這使得他們的編程過程跌跌絆絆。例如,他舉例個例子,ActionScript,這是一個由Adobe公司開發(fā)的一個面向?qū)ο蟮木幊陶Z言。根據(jù)Meyerovich統(tǒng)計的數(shù)據(jù)顯示,程序員都認(rèn)為ActionScript很容易。但是,當(dāng)他們開始使用這種語言開發(fā)一些新的東西——比如他們從多媒體開發(fā)轉(zhuǎn)到游戲開發(fā)——問題就出現(xiàn)了。
另外一個問題是程序員的自滿。大部分的程序員都會學(xué)習(xí)3到4種編程語言,然后他們就停步了,這兩位研究者說。“隨著閱歷的增加,你會認(rèn)為這些程序員年齡在增長,他們會變得更加智慧,他們會學(xué)更多的語言。但是我們發(fā)現(xiàn)這不是實情。他們在停步不前。”Meyerovich說。
部分的原因是,當(dāng)程序員的年齡達(dá)到35、40年齡段時,他們通常會從親自動手編程的角色上轉(zhuǎn)移去管理其他的程序員。從這點上看,他們學(xué)習(xí)或?qū)崿F(xiàn)新的編程語言的動機減少了。
Meyerovich認(rèn)為,我們的編程語言還有很多問題,需要整個開發(fā)社區(qū)繼續(xù)為之奮斗和探索。正向他和Rabkin挖掘這些數(shù)據(jù)一樣(你可以在網(wǎng)上分類查詢它們),他們不僅希望能找到產(chǎn)生這些問題的根源,還希望能在如何解決這些問題的方法是發(fā)現(xiàn)一些新的視角。
“這是一個很熱門的問題,我們甚至不認(rèn)為從分析這些數(shù)據(jù)的過程中看到了事情的真相。”Meyerovich說。
英文原文:Why Do Some Programming Languages Live and Others Die?
本文鏈接:http://www.aqee.net/why-do-some-programming-languages-live-and-others-die/