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