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