新聞中心
我們鐘愛我們已知的。

成都創(chuàng)新互聯(lián)長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為禹城企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè),禹城網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
當(dāng)今許多老牌的編程語言已經(jīng)都非常古老了。PHP 語言20年、Python 語言23年、HTML 語言21年、Ruby 語言和 JavaScript 語言已經(jīng)19年,C 語言更是高達(dá)42年之久。
這是沒人能預(yù)料得到的,即使是計算機(jī)科學(xué)家 Brian Kernighan 也一樣。他是寫著***本關(guān)于 C 語言的作者之一,直到今天這本書還在印刷著。(C 語言本身的*** Dennis Ritchie 是 Kernighan 的合著者,他于 2011 年已辭世。)
“我依稀記得早期跟編輯們的談話,告訴他們我們已經(jīng)賣出了5000冊左右的量,”最近采訪 Kernighan 時他告訴我說。“我們設(shè)法做的更好。我沒有想到的是在2014年的教科書里學(xué)生仍然在使用***個版本的書?!?/p>
關(guān)于 C 語言的持久性特別顯著的就是 Google 開發(fā)出了新的語言 Go,解決同一問題比用 C 語言更有效率。不過,我仍然很難想象 Go 能徹底殺死 C,無論它有多么好。
“大多數(shù)語言并不會消失或者至少很大一部分用戶承認(rèn)它們不會消失,”他說?!癈 語言仍然在一定的領(lǐng)域獨領(lǐng)風(fēng)騷,所以它很接地氣?!?/p>
編寫所熟悉的
為什么某些計算機(jī)編程語言要比其它的更流行?因為開發(fā)者都選擇使用它們。邏輯上來說,這解釋已經(jīng)足夠,但還想深入了解為什么開發(fā)人員會選擇使用它們呢,這就有點棘手了。
分別來自普林斯頓大學(xué)和加州大學(xué)伯克利分校的研究者 Ari Rabkin 和 Leo Meyerovich 花費了兩年時間來研究解決上面的問題。他們的研究報告,《編程語言使用情況實例分析》,記錄了對超過 200,000 個 Sourceforge 項目和超過 13,000 個程序員投票結(jié)果的分析。
他們主要的發(fā)現(xiàn)是什么呢?大多數(shù)時候程序員選擇的編程語言都是他們所熟悉的。
“這些我們使用的語言還繼續(xù)存在是因為我們經(jīng)常使用他們,” Rabkin 告訴我。“例如:天文學(xué)家就經(jīng)常使用 IDL [交互式數(shù)據(jù)語言]來開發(fā)他們的計算機(jī)程序,并不是因為它具有什么特殊的亮點功能或其它特點,而是因為用它形成習(xí)慣了。他們已經(jīng)用些語言構(gòu)建出很優(yōu)秀的程序了,并且想保持原狀?!?/p>
換句話說,它部分要歸功于這些語言所創(chuàng)立的老牌度仍保持較高。當(dāng)然,這并不意味著流行的語言不會變化。Rabkin 指出我們今天在使用的 C 語言就跟 Kernighan ***次創(chuàng)建時的一點都不同,那時的 C 編譯器跟現(xiàn)代的也不是完全兼容。
“有一個古老的,關(guān)于工程師的笑話。工程師被問到哪一種編程語言人們會使用30年,他說,‘我不知道,但它總會被叫做 Fortran’,” Rabkin 說到。“長期存活的語言跟他們在70年代和80年代剛設(shè)計出來的時候不太一樣了。人們通常都是在上面增加功能,而不會刪除功能,因為要保持向后兼容,但有些功能會被修正?!?/p>
向后兼容意思就是當(dāng)語言升級后,程序員不僅可以使用升級語言的新特性,也不用回去重寫已經(jīng)實現(xiàn)的老代碼塊。老的“遺留代碼”的語法規(guī)則已經(jīng)不用了,但舍棄是要花成本的。只要它們存在,我們就有理由相信相關(guān)的語言也會存在。
PHP: 存活長久語言的一個案例學(xué)習(xí)
遺留代碼指的是用過時的源代碼編寫的程序或部分程序。想想看,一個企業(yè)或工程項目的關(guān)鍵程序功能部分是用沒人維護(hù)的編程語言寫出來的。因為它們?nèi)云鹬饔茫矛F(xiàn)代的源代碼重寫非常困難或著代價太高,所以它們不得不保留下來,即使其它部分的代碼都變動了,程序員也必須不斷折騰以保證它們能正常工作。
任何編程語言,存在了超過幾十年時間都具有某種形式的遺留代碼問題, PHP 也不例外。PHP 是一個很有趣的例子,因為它的遺留代碼跟現(xiàn)在的代碼明顯不同,支持者或評論家都承認(rèn)這是一個巨大的進(jìn)步。
Andi Gutmans 是已經(jīng)成為 PHP4 的標(biāo)準(zhǔn)編譯器的 Zend Engine 的***之一。Gutmans 說他和搭檔本來是想改進(jìn)完善 PHP3 的,他們的工作如此成功,以至于 PHP 的原*** Rasmus Lerdorf 也加入他們的項目。結(jié)果就成為了 PHP4 和他的后續(xù)者 PHP5 的編譯器。
因此,當(dāng)今的 PHP 與它的祖先——即最開始的 PHP 是完全不同的。然而,在 Gutmans 看來,在用古老的 PHP 語言版本寫的遺留代碼的地方一直存在著偏見以至于上升到整個語言的高度。比如 PHP 充滿著安全漏洞或沒有“集群”功能來支持大規(guī)模的計算任務(wù)等概念。
“批評 PHP 的人們通常批評的是在 1998 年時候的 PHP 版本,”他說。“這些人都沒有與時俱進(jìn)。當(dāng)今的 PHP 已經(jīng)有了很成熟的生態(tài)系統(tǒng)了?!?/p>
如今,Gutmans 說,他作為一個管理者最重要的事情就是鼓勵人們升級到***版本?!癙HP有個很大的社區(qū),足以支持您的遺留代碼的問題,”他說?!暗偟膩碚f,我們的社區(qū)大部分都在 PHP5.3 及以上的。”
問題是,任何語言用戶都不會全部升級到***版本。這就是為什么 Python 用戶仍在使用 2000 年發(fā)布的 Python 2,而不是使用 2008 年發(fā)布的 Python 3 的原因。甚至在六年后,大多數(shù)像 Google 這樣的用戶仍沒有升級。這種情況是多種原因造成的,但它使得很多開發(fā)者在承擔(dān)風(fēng)險。
“任何東西都不會消亡的,”Rabkin 說?!叭魏握Z言的遺留代碼都會一直存在。重寫的代價是非常高昂的,如果它們不出問題就不要去改動。”
開發(fā)者是稀缺的資源
當(dāng)然,開發(fā)者是不會選擇那些僅僅只是為了維護(hù)老舊代碼的的程序語言的。當(dāng)談?wù)摰綄φZ言選擇的偏好時,Rabkin 和 Meyerovich 發(fā)現(xiàn)年齡僅僅只代表個數(shù)字。Rabkin 告訴我說:
有一件事使我們被深深震撼到了。這事最重要的就是我們給人們按年齡分組,然后詢問他們知道多少編程語言。我們主觀的認(rèn)為隨著年齡的增長知道的會越來越多,但實際上卻不是,25歲年齡組和45歲年齡組知道的語言數(shù)目是一樣的。幾個反復(fù)詢問的問題這里持續(xù)不變的。您知道一種語言的幾率并不與您的年齡掛鉤。
換句話說,不僅僅年長的開發(fā)者堅持傳統(tǒng),年輕的程序員也會認(rèn)可并采用古老的編程語言作為他們的***們語言。這可能是因為這些語言具有很有趣的開發(fā)庫及功能特點,也可能是因為在社區(qū)里開發(fā)者都是喜愛這種開發(fā)語言的一伙人。
“在全球程序員關(guān)注的語言的數(shù)量是有定數(shù)的,” Rabkin 說?!叭绻粋冋Z言表現(xiàn)出足夠獨特的價值,人們將會學(xué)習(xí)和使用它。如果是和您交流代碼和知識的的某個人分享一門編程語言,您將會學(xué)習(xí)它。因此,例如,只要那些 Python 庫存在、 社區(qū)也對 Python 語言很有經(jīng)驗的話,那么 Python 仍將會大行其道?!?/p>
研究人員發(fā)現(xiàn)關(guān)于語言實現(xiàn)的功能,社區(qū)是一個巨大的因素。雖然像 Python 和 Ruby 這樣的高級語言并沒有太大的差別,但,程序員總是容易覺得一種比另一種優(yōu)越。
“Rails 不一定要用 Ruby 語言編寫,但它用了,這就是社區(qū)因素在起作用,” Rabkin 說?!袄?,復(fù)活 Objective-C 語言這件事就是蘋果的工程師團(tuán)隊說‘讓我們使用它吧,’ 他們就沒得選擇了。”
通觀社會的影響及老舊代碼這些問題,我們發(fā)現(xiàn)最古老的和***的計算機(jī)語言都有巨大的惰性。Go 語言怎么樣才能超越 C 語言呢?如果有合適的人或公司說它超越它就超越。
“它歸結(jié)為誰傳播的更好誰就好,” Rabkin 說。
新聞標(biāo)題:為什么一些古老的編程語言不會消亡?
文章路徑:http://www.dlmjj.cn/article/dpsjchs.html


咨詢
建站咨詢
