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