注: IT 圈有一個(gè)很多年懸而未決的世界謎題:“Java 到底什么時(shí)候會(huì)死啊?” 今年以來,一些比較流行的語言都呈現(xiàn)出穩(wěn)定下降的趨勢(shì),像 Java 和 C 語言就是其中的大代表。
Java 屢“被死亡”?C 語言一蹶不振?
過去 16 年來(自 2001 年起),TIOBE 編程語言排行榜的三甲位置一直被 Java、C 與 C++ 長期占據(jù)。
Java 語言一度陷入狗帶風(fēng)波,“被死亡”和“被復(fù)活”了那么多次,現(xiàn)在它依然穩(wěn)坐榜首。C 語言去年底就被爆一蹶不振,今年也是前三甲。
C# 與 Python 雖然已經(jīng)被廣泛認(rèn)定為下一時(shí)代的核心編程語言,但在人氣方面仍未得到充分體現(xiàn)。
C# 之所以無法進(jìn)軍三甲,主要是因?yàn)槠湓诜?Windows 領(lǐng)域的采用率仍然不夠理想。另一方面,Python 的動(dòng)態(tài)類型化特性導(dǎo)致開發(fā)者們不傾向在大型以及/或者關(guān)鍵性軟件系統(tǒng)中加以運(yùn)用。
不過必須承認(rèn),三巨頭與其他編程語言間的差距正在迅速縮小。而在三巨頭逐漸失去壓倒性優(yōu)勢(shì)之后,未來前景將如何變化目前還很難給出定論。
事實(shí)上,目前的趨勢(shì)顯示雜糅使用正步入主流,以單一編程語言開發(fā)的應(yīng)用程序正變得越來越罕見。
按照這樣的發(fā)展進(jìn)程,未來 TIOBE 排行榜上還將出現(xiàn)更多人氣縮水的語言選項(xiàng)。激動(dòng)人心的時(shí)刻終于到來,相信大家和我們一樣,也期待著看到未來幾年中各類編程語言將迎來怎樣的命運(yùn),又有哪些語言能夠登上新時(shí)代的三甲寶座。
TIOBE 9 月編程語言排行榜 TOP20
TOP10 語言 TIOBE 指數(shù)走勢(shì)
10 個(gè)編程語言歷史排名(1987-2017)
編程語言“名人榜”(2003-2016)
注: 以下排名位次取決于 12 個(gè)月的平均值
“年度編程語言”獲獎(jiǎng)名單如下圖所示,該獎(jiǎng)項(xiàng)授予一年中評(píng)分最高的編程語言:
【說明】TIOBE 編程語言社區(qū)排行榜是編程語言流行趨勢(shì)的一個(gè)指標(biāo),每月更新,這份排行榜排名基于互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的程序員、課程和第三方廠商的數(shù)量。排名使用著名的搜索引擎(諸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)進(jìn)行計(jì)算。請(qǐng)注意這個(gè)排行榜只是反映某個(gè)編程語言的熱門程度,并不能說明一門編程語言好不好,或者一門語言所編寫的代碼數(shù)量多少。
這個(gè)排行榜可以用來考查你的編程技能是否與時(shí)俱進(jìn),也可以在開發(fā)新系統(tǒng)時(shí)作為一個(gè)語言選擇依據(jù)。
21 世紀(jì)編程語言死亡名單
看完了上面一大堆的排行榜,咱們進(jìn)入正題,在前面在眾多“Java 已死”的月經(jīng)帖中,今天終于有人正面回應(yīng)了 Java 的死期。
據(jù)國外顧問機(jī)構(gòu)約翰·庫克博士的預(yù)測(cè),到 2039 年 Java 將壽終正寢。換句話說,Java 只剩 22 年可活。
這時(shí)可能就會(huì)有人跳出來反駁約翰·庫克,你憑什么這么說?有什么科學(xué)依據(jù)呢?
你還別說這還真不是空口說白話,確有科學(xué)依據(jù)的。
《反脆弱》書里介紹了一個(gè)林迪效應(yīng):
對(duì)于會(huì)自然消亡的事物生命每增加一天,預(yù)期壽命就會(huì)縮短一些。
對(duì)于不會(huì)自然消亡的事物,生命每增加一天,意味著更長的預(yù)期剩余壽命。
林迪效應(yīng)指出,經(jīng)歷的時(shí)間越長則未來生存的時(shí)間也越長。這適用于創(chuàng)造出來的事物,而不適用于生命體。一只小狗的壽命可能比一只老狗更長,但是一本已經(jīng)在出版界發(fā)行了一個(gè)世紀(jì)的書可能在下一個(gè)世紀(jì)也會(huì)出現(xiàn)。
此前介紹了林迪效應(yīng)的數(shù)學(xué)細(xì)節(jié):冪律分布等等。而這篇文章所要闡述的關(guān)鍵事實(shí)是,如果某種東西具有林迪效應(yīng)所描述的那種生存分布狀態(tài)的話,那么其預(yù)期的未來壽命就等于當(dāng)前的年齡。
例如,開頭提到的那本 100 歲的書預(yù)計(jì)也會(huì)出現(xiàn)在下一個(gè) 100 年里。
請(qǐng)注意,這一切都是以概率分布為基礎(chǔ)的,這并不是說,所有的新生事物都會(huì)很快消失,所有的東西都曾經(jīng)是新的。
有人在哈姆雷特上演的首演那夜推測(cè),幾年后就沒人會(huì)去關(guān)心哈姆雷特了。但現(xiàn)在我們知道哈姆雷特已經(jīng)存在四個(gè)世紀(jì)了,而且還在變得越來越有名。林迪效果預(yù)測(cè),人們?cè)?25 世紀(jì)還能看到哈姆雷特的演出。
請(qǐng)注意,除了生存期之外,林迪效果絲毫沒有考慮事物本身。某些人可能會(huì)基于一些其他信息而看好哈姆雷特,比如首演那天的演出效果等等,但這已經(jīng)超出了林迪效應(yīng)的考慮范圍。
林迪效應(yīng)可以簡(jiǎn)單地概括為“越活越年輕”。如果我們將林迪效應(yīng)應(yīng)用于編程語言,我們只考慮他們已經(jīng)存在了多久,以及他們當(dāng)前是否流行。根據(jù) 2017 年 9 月編程語言排行榜,Java、C 與 C++ 三巨頭到底還能統(tǒng)治排行榜多久?
例如,你可能會(huì)認(rèn)為,Go 語言將會(huì)因?yàn)楣雀韫镜木薮笥绊懥ΧL期存在,但是林迪效應(yīng)并不會(huì)考慮這些信息。
所以,在這里,我們假設(shè)林迪效應(yīng)成立,下面是我們預(yù)測(cè)的編程語言的壽命。
你可以質(zhì)疑這個(gè)預(yù)測(cè)對(duì)某個(gè)語言的壽命有什么意義。例如,我認(rèn)為 Lisp 會(huì)生存的更久一點(diǎn),但如果將來人們用 Clojure 編程而不是用常見的 Lisp 呢。再比如,其他人不同意我這個(gè)看法。
“我們不知道到了 2100 年程序員會(huì)用什么語言進(jìn)行編程。然而,我們知道它將被稱為 FORTRAN?!?C.A.R. Hoare 說。那么這和 Java 的死亡有什么關(guān)系呢?
較老的編程語言,例如 FORTRAN,BASIC 和 COBOL 等雖然不是最流行的編程語言,但是它們?cè)谔囟I(lǐng)域都有一定的應(yīng)用。
而對(duì)于較新的編程語言,如 Go,Python,Java 和 C,則可能會(huì)被其他更新更好的語言所替代。也許生命周期還長不過較老的編程語言。
除了Java,約翰·庫克博士還預(yù)言了其他編程語言的生命周期。最先會(huì)掛掉的是近年來很熱的 Go 語言( 2025 年),C#(2034 年),Python(2043 年),Haskell(2044 年),C(2062 年),Lisp(2075 年),F(xiàn)ORTRAN(2077 年)。
換句話說,在本世紀(jì)結(jié)束時(shí),這些語言都將消失。面對(duì)這種局面,程序員們有什么想說的:
網(wǎng)友A:搞得好像哪個(gè)程序員能編 22 年一樣……
網(wǎng)友B:那還好,估計(jì)能撐到我退休,哈哈。
網(wǎng)友C:23333,全都滅亡了,將來就是我PHP的天下了。
網(wǎng)友D:大家先別動(dòng)手,先弄死喊 PHP 的。
網(wǎng)友E:什么,我大 Java 要亡了???
網(wǎng)友F:2077 年之后用什么語言呢?
對(duì)于上面網(wǎng)友的疑問,您有什么看法呀?您覺得哪些語言不會(huì)死亡?為什么?歡迎在下方留言評(píng)論!