應該掌握哪門編程語言,才能獲得機器學習或數(shù)據(jù)科學的工作機會呢?這是一個銀彈的問題。許多論壇都在辯論這個問題。我會在本文中提供自己的答案,并解釋原因,但是我們要先來查看一些數(shù)據(jù)。畢竟,機器學習和數(shù)據(jù)科學的從業(yè)者應該記住這一點:沒有調查就沒有發(fā)言權。
現(xiàn)在,讓我們來看一些數(shù)據(jù)。我們用indeed.com網(wǎng)站提供的趨勢搜索來提取統(tǒng)計數(shù)據(jù)。這些數(shù)據(jù)是從招聘信息中搜索出特定工作崗位隨時間變化的出現(xiàn)頻率,表明了雇主正在尋求哪些掌握什么技能的人才。但請注意,這并不是對哪些技能最有用的民間調查,而是體現(xiàn)了崗位技能流行度如何演變的一種趨勢(更確切地說,它可能接近崗位技能流行度的一階導數(shù),因為后者是招聘信息所列技能加上就業(yè)再培訓技能減去退休和離職技能的結果。)
好了,讓我們看數(shù)據(jù)吧。我搜索了與“機器學習”和“數(shù)據(jù)科學”結合使用的技能,其中比較顯眼的編程語言是 Java、C、C++和 JavaScript。我還加上了就像 Scala之于 Spark那樣的機器學習和數(shù)據(jù)科學的流行語言 Python和 R——以及被認為是下一代熱門語言的 Julia。經(jīng)查詢之后,我們得到結果如下圖。
?
當我們只關注機器學習時,得到類似的數(shù)據(jù)如下圖。
?
我們可以從這些數(shù)據(jù)中得出什么結論呢?
首先,我們可以從圖表中看出,眾口難調。在這種情況下,許多語言都相當受歡迎。
其次,所有這些語言的人氣都在暴漲,這表明了人們在過去幾年里對機器學習和數(shù)據(jù)科學的興趣正在增加。
第三,Python明顯領先,緊隨其后的依次是 Java、R、C++。Python超越 Java并逐漸拉開差距,與此同時,Java與 R之間的差距逐漸減小。我必須承認,我看到 Java位居第二其實很驚訝,我本來以為 R是第二位呢。
第四,Scala的增長令人印象深刻。三年前幾乎沒有人使用Scala,而現(xiàn)在卻能與其他成熟語言同場競技了。
我們在indeed.com從趨勢示意圖切換到實際數(shù)據(jù)視圖時,會發(fā)現(xiàn)這點尤為明顯。
?
第五,Julia的人氣比較差,但最近幾個月肯定有所增長。Julia會成為機器學習和數(shù)據(jù)科學的流行語言之一嗎?這得由時間來做出回答。
如果我們隱藏 Scala和 Julia,以便放大其他語言增長的視圖,那么可以確定的是,Python和 R的增長速度超過了其他語言。
?
從這條曲線來看,也許 R的流行度將會很快超過 Java。當我們換成“深度學習”來進行查詢時,得到的數(shù)據(jù)就大為不同。
?
在這個查詢中,Python依舊領先,但緊隨其后的依次是 C++、Java、C。R只排在第五名。這里顯然強調這些是高性能計算語言。作為一個通用的機器學習語言,Java很快能占據(jù)第二的位置,R語言在短時間內不會登頂。令我驚訝的是作為深度學習框架Torch的主要語言,Lua竟然不在榜上,并且Julia也缺席。
最初那個問題的答案現(xiàn)在應該很清楚了吧?在機器學習和數(shù)據(jù)科學的工作中,Python、Java和 R是最流行的語言。如果你的精力集中在深度學習而非一般的機器學習,那么應該多學習 C++,其次 C也是需要關注和學習的。然而要記住,這只是看問題的一個途徑。如果你想尋找學術界的工作,或者只是想在業(yè)余時間學習機器學習和數(shù)據(jù)科學,那么你可能會得到不同的答案。
至于我個人的答案,我今年早些時候在博客上做出了回答。除了能夠支持許多主流機器學習框架,Python對我而言很適合,只是因為我有計算機科學背景而已。我也喜歡使用 C++開發(fā)新的算法,因為我的大部分職業(yè)生涯中都用 C++編程。但這只是我個人情況,不同專業(yè)背景的人可能會覺得另一門語言更好些。編程技能有限的統(tǒng)計學家會更青睞 R。有實力的 Java開發(fā)者可以繼續(xù)使用他鐘愛的 Java,因為 Java有數(shù)量可觀的開源 Java API。同理,其他語言也如此。
因此,我的建議是閱讀討論同一個問題的其他博客,然后投入大量的時間去學習一門語言。
評論
查看更多