IEEE 2019編程語言排行榜出爐:趨勢、開源、職位需求,Python都是第一
IEEE Spectrum 剛剛發(fā)布了第六屆編程語言排行榜。在新的排名方式下,Python 再次名列第一,而且與第二名的差距正在加大。名列后幾位的分別是 Java、C 語言、C++和 R 語言。
這是 IEEE Spectrum 的第六次年度編程語言排行統(tǒng)計(jì)。今年的統(tǒng)計(jì)進(jìn)行了重大改革,一些基礎(chǔ)指標(biāo)進(jìn)行了重構(gòu),而最終的排行榜也進(jìn)一步得到了簡化。但其基本理念讓仍然相同:將多個(gè)數(shù)據(jù)源的編程語言流行度排名結(jié)合起來,得出目前業(yè)內(nèi)人們關(guān)注度最高的語言。
這些信息來源包括谷歌搜索、谷歌趨勢、推特、GitHub、Stack Overflow、Reddit、Hacker News、CareerBuilder、IEEE Job Site 和 IEEE Xplore Digital Library。
對于編程語言的統(tǒng)計(jì)而言,人們總會面臨兩個(gè)主要問題:(1)理論上沒有人可以審查所有程序員正在敲的代碼屬于哪種語言;(2)有些時(shí)候,一種語言是另一種的基礎(chǔ),有的時(shí)候兩種語言所使用的領(lǐng)域完全沒有相關(guān)性。IEEE 的榜單致力于解決這些問題,呈現(xiàn)出最為準(zhǔn)確的編程語言流行程度排行。統(tǒng)計(jì)者們從 8 種信息渠道獲取數(shù)據(jù),并設(shè)定了 11 種排名方式——這些指標(biāo)是過濾語言排名的最優(yōu)方式——然后將所有結(jié)果以不同權(quán)重結(jié)合起來,獲得了最終的排名。當(dāng)然,如果你對于權(quán)重有異議,也可以在 IEEE 的可交互頁面上設(shè)置自己想要的權(quán)重:
在 IEEE Spectrum 網(wǎng)站上,你可以根據(jù)自己的需求設(shè)定權(quán)重,獲得不同的編程語言排名。
在 IEEE 的默認(rèn)設(shè)置之下,對找工作有利的排行方式獲得了更高的權(quán)重。雖然標(biāo)準(zhǔn)的變化讓今年的統(tǒng)計(jì)結(jié)果和往年有所不同,不過整體看來趨勢還是一樣的:Python 在所有分項(xiàng)目中都名列榜首。Python 如此受到人們歡迎很大程度上是因?yàn)榇嬖诖罅繉S玫墓ぞ邘熳鳛橹С?,尤其是在人工智能(AI)領(lǐng)域。Keras 是每個(gè)進(jìn)入人工智能、特別是深度學(xué)習(xí)領(lǐng)域的開發(fā)者所熟知的庫:它提供了 TensorFlow、CNTK 和 Theano 深度學(xué)習(xí)框架的友好界面和工具包。當(dāng)然,深度學(xué)習(xí)也不是 Python 的唯一應(yīng)用方向,而且在 1991 年首次推出時(shí)也預(yù)料不到會對深度學(xué)習(xí)產(chǎn)生影響。隨著微控制器上算力的急劇增長,CircuitPython 和 MicroPython 等嵌入式 Python 版本越來越受到制造商們的歡迎。
排在 Python 之后的是 Java、C 語言和 C++,這是一組長期爭奪第二名的語言——盡管 IEEE 調(diào)整了指標(biāo),這些語言與 Python 之間的差距還是在越拉越大。C++的分?jǐn)?shù)落后于 Python 12.5 分(在所有排名中,第一名的編程語言為 100 分,排在其后的語言以頭名為標(biāo)準(zhǔn)依次遞減)。主要用于數(shù)學(xué)計(jì)算的語言 R 排名來到了第五。盡管 R 語言相比其他對手專業(yè)性很高,但由于大數(shù)據(jù)的應(yīng)用愈發(fā)廣泛,近年來它的流行程度一直在提高。
在前 10 名中,由 MathWorks 開發(fā)并用于數(shù)值計(jì)算的專用語言 Matlab 的出現(xiàn)著實(shí)有些出乎預(yù)料,但這簡單明了地反映了編程語言在硬件工程中的突出地位——特別是那些對通過 MathWorks 的圖形化 Simulink 軟件包運(yùn)行模擬或創(chuàng)建控制系統(tǒng)的人而言。
在第 10 名以下,還有一些值得一提的語言,其中包括在 11 位的 Arduino 和第 12 位的 HTML/CSS。在此前的統(tǒng)計(jì)中,部分人認(rèn)為它們不應(yīng)出現(xiàn)在榜單之中:因?yàn)椴淮嬖谶@樣的語言,而「Arduino」實(shí)際上是某種語言運(yùn)行的一系列硬件平臺的名稱,而這種語言應(yīng)該被稱為 Wiring(有時(shí)它們也被歸類為 C 語言或 C++的一種)。IEEE 表示,在這方面我們應(yīng)當(dāng)以簡單的實(shí)用主義為導(dǎo)向:當(dāng)面對編程問題時(shí),絕大多數(shù) Arduino 的開發(fā)者使用諸如「Arduino Code for ......」之類的關(guān)鍵詞來進(jìn)行谷歌搜索——而不是使用其他的方法。通過選擇更為常用的名字,IEEE 讓統(tǒng)計(jì)的準(zhǔn)確性有所提高,避免了 Arduino 和類似的微控制器上很多內(nèi)容未被統(tǒng)計(jì)的情況。
在 HTML 上,反對意見仍然是:它不是真正的語言,因?yàn)樗鼪]有分支或者循環(huán)結(jié)構(gòu)。但因?yàn)?HTML 和 CSS 在開發(fā)者中的流行程度,以及它已經(jīng)占據(jù)了數(shù)以十億計(jì)的計(jì)算機(jī),任何關(guān)于圖靈完整性的學(xué)術(shù)論點(diǎn)都不是最重要的,標(biāo)記語言仍然是一種語言。
最后,一些較為古老的語言仍然處于活躍狀態(tài)。如已經(jīng)有 60 多年歷史的 Fortran 仍然排在了第 38 名,這可能是因?yàn)樵伎茖W(xué)計(jì)算語言仍然具有巨大的傳統(tǒng)力量。Fortran 語言仍在發(fā)展,最新的 Fortran 標(biāo)準(zhǔn)是在 2018 年末推出的,其中包括和 C 語言互操作性的改進(jìn)以及對于大規(guī)模并行化計(jì)算的支持優(yōu)化。