0
本文作者: 三川 | 2017-01-10 18:06 |
對于開發(fā)者來說,掌握什么編程語言能更容易找到機(jī)器學(xué)習(xí)或者數(shù)據(jù)科學(xué)的工作?
這是個許多人關(guān)心的問題,非常實(shí)際,也在許多論壇被翻來覆去地討論過。非常顯著的是 “Python 是大趨勢”這一論調(diào),似乎它即將在機(jī)器學(xué)習(xí)領(lǐng)域一統(tǒng)天下。那么這種說法到底有幾分事實(shí)?
首先要指出的是,大多數(shù)對編程語言的討論都比較主觀。比如說,有的開發(fā)者(尤其是初學(xué)者)會因為一門語言的某個特性很契合自己的使用習(xí)慣、用著最順手,就狂贊這門語言,而對其他語言的優(yōu)點(diǎn)選擇性失明。而這篇雷鋒網(wǎng)編譯自 IBM 開發(fā)者論壇的文章,則盡量避免了主觀判斷,用數(shù)據(jù)來展示各門開發(fā)語言在工業(yè)界的實(shí)際使用情況,可以說是十分難得。畢竟,統(tǒng)計學(xué)習(xí)的核心就是用數(shù)據(jù)說話。AI 開發(fā)者應(yīng)該更明白可靠數(shù)據(jù)相比主觀臆測的價值。
閑話少說,我們來看看 2016 年開發(fā)語言使用情況統(tǒng)計,到底哪門語言的使用人數(shù)上升最快?居前幾位的都是哪些?
圖1:機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)領(lǐng)域各語言的雇主招聘指數(shù)對比
如圖所示,這是利用美國職位搜索引擎 indeed.com 得出的機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)招聘趨勢:對這些領(lǐng)域內(nèi)開發(fā)職位所列出的編程語言要求進(jìn)行了統(tǒng)計。它展示出公司、雇主們都在尋找哪些語言技能。但注意:
這并不能精確體現(xiàn)各公司開發(fā)人員正在使用哪些語言。
這是美國的機(jī)器學(xué)習(xí)業(yè)界趨勢,與中國、學(xué)界關(guān)系不是那么緊密。
沒有包涵在搜索結(jié)果內(nèi)的語言,不代表它們的招聘職位比上述語言要少。
我們可以清楚看出,美國雇主最需要的前四大語言排名是 Python,Java,R,C++。其中,Python 在 2015 年中超過 Java 躍升至第一。
然后,把搜索結(jié)果限制在機(jī)器學(xué)習(xí)領(lǐng)域(去掉數(shù)據(jù)科學(xué)),數(shù)據(jù)其實(shí)差不多:
圖2:機(jī)器學(xué)習(xí)領(lǐng)域各語言的雇主招聘指數(shù)對比
這張折線圖中包含了 Lua,但由于它的招聘職位實(shí)在太少,代表 Lua 的線與坐標(biāo)軸重合。
我們能從這兩組數(shù)據(jù)中推斷出什么?
Python 是市場的領(lǐng)先者,作為最受歡迎的機(jī)器學(xué)習(xí)語言當(dāng)之無愧。 另外,Python 與 Java 之間的差距正在被拉開。但是 Java 與 R 之間的差距正在被縮小。雷鋒網(wǎng)獲知,有業(yè)內(nèi)人士對居第二位的語言是 Java 而不是 R 感到驚訝。通常,大家的主觀感受是除了 Python,使用 R 語言開發(fā)機(jī)器學(xué)習(xí)應(yīng)用最普遍。
Python 并沒有成為霸主。各主流語言的招聘需求都很多。對小眾語言如 Lua 和 Julia ,目前業(yè)界的需求確實(shí)小些,但其他語言都占有了相當(dāng)?shù)谋壤?/p>
進(jìn)入 2016 年后,市場對所有語言的需求都大幅上漲。Python 并沒有與其他語言拉開明顯差距。這表現(xiàn)出,最近一年里業(yè)界對機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)整體的興趣和重視。
Scala 在 2014 年之后的增長十分驚人。2014 年之前,對它幾乎沒有招聘需求。但那年之后一直在穩(wěn)定增長。2016 年,它趕上了 Javacript,達(dá)到主流語言陣營的水平。
作為一門口碑不錯的新興語言,Julia 的普及程度還很低。但在 2016 下半年有了巨幅增長?,F(xiàn)在還看不出來它是否會成為主流語言。
關(guān)于 Scala 和 Julia 的增長趨勢,在它們的增長率折線圖中,我們可以很明顯的看出來:
圖3:Scala,Julia,Lua 在機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)領(lǐng)域的雇主招聘指數(shù)增長率
然后,當(dāng)我們省略掉 Scala、Julia 和 Lua,統(tǒng)計主流語言的增長率,可以明白無誤看出 Python 和 R 的增長速度遠(yuǎn)超其他主流語言:
圖4:機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)領(lǐng)域,主流語言的雇主招聘增長率
R 的增長率始終高于 Python,位居第一,更是遠(yuǎn)超 Java。以此來看,在可預(yù)測的將來,R 不但不會消失,還會成為更受歡迎的主流機(jī)器學(xué)習(xí)語言。因此,說“Python 是未來大趨勢”肯定是不對的。
但是,當(dāng)我們聚焦于細(xì)分領(lǐng)域“深度學(xué)習(xí)”,數(shù)據(jù)就變得很不一樣:
圖4:深度學(xué)習(xí)領(lǐng)域各語言的雇主招聘指數(shù)對比
在深度學(xué)習(xí)市場,對 Python 的招聘需求仍然最高。但前五大語言的排序變成了Python,C++,Java,C,R。這里有很明顯的對高性能計算語言的側(cè)重。 而且,Java 的增長速度驚人,它可能很快成為深度學(xué)習(xí)市場的第二位。在可預(yù)期的將來,R 還不會成為最受歡迎的深度學(xué)習(xí)語言。令人驚訝的是 Lua 的存在感之低。要知道,開源框架巨頭之一的 Torch 便是基于 Lua,許多開發(fā)者因此會認(rèn)為它在深度學(xué)習(xí)市場占有特殊地位。
對于文章開頭提出的問題——雇主需要掌握什么語言的開發(fā)者,答案已經(jīng)很明確了:
在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)市場,Python, Java, 和 R 的招聘需求最大;
在深度學(xué)習(xí)領(lǐng)域, Python, Java, C++ 以及 C 更被公司歡迎。
但雷鋒網(wǎng)的讀者們請注意,這只是私營公司的招聘需求。學(xué)界研究人員的偏好會有很大出入。另外,自學(xué) AI 的業(yè)余愛好者、暫時沒打算在這行謀生的,也不需要對這些數(shù)據(jù)太過在意。
至于文章原作者的個人觀點(diǎn)(雷鋒網(wǎng)再次提醒:請注意是“個人”觀點(diǎn),僅給大家做參考),他本人較傾向 Python。原因有二:1. 基于 Python 的頂級機(jī)器學(xué)習(xí)框架選擇較多。2. 作者來自計算機(jī)專業(yè)背景,Python 的邏輯更適合。相比之下,R 語言就更適合統(tǒng)計學(xué)、數(shù)學(xué)背景的開發(fā)者。在 Python 之外,作者更傾向于使用 C++,這是因為他用 C++ 寫代碼寫了半輩子,已經(jīng)習(xí)慣了。其他人、新人可能更適合學(xué)習(xí)其他語言。比如說,寫代碼功底不深的統(tǒng)計學(xué)背景開發(fā)者通常用 R 語言更順手。經(jīng)驗豐富的 Java 開發(fā)者可以接著用 Java,尤其有那么多開源 Java API 。
歸納起來,還是程序猿的個人學(xué)習(xí)、開發(fā)經(jīng)歷,以及知識背景影響了他的語言偏好。很少有人能夠涉獵所有主流語言,即便只掌握幾門語言,也未必在每一門上的開發(fā)經(jīng)驗都夠深。因此,老司機(jī)對新入門開發(fā)者的語言推薦都帶有強(qiáng)烈主觀色彩。即使拿這篇以陳述數(shù)據(jù)為主的文章來說,也有它的主觀局限:Matlab/Octave 和 Lisp,這兩門重頭語言并沒有包括在內(nèi)。這大約是由于作者并沒有充分接觸這三門語言。而 AI 大牛吳恩達(dá)對新手的建議就是選擇 Octave 或者 Matlab 起步。
對于新入門、正猶豫選擇哪門語言的技術(shù)宅,關(guān)鍵還是在投入大量時間之前多聽、多看、多了解;比較不同人的觀點(diǎn),選擇最適合自己的。雷鋒網(wǎng)與旗下 AI 科技評論頻道常年更新針對新老開發(fā)者的技術(shù)文章,以及追蹤 AI 界的重大新聞事件,感興趣可關(guān)注公眾號。
更多對機(jī)器學(xué)習(xí)編程語言的介紹請參考上期文章 入門必讀 機(jī)器學(xué)習(xí)六大開發(fā)語言。
via ibm developer
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。