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