誰(shuí)才是機器學(xué)習時(shí)代最合適的編程語(yǔ)言?
開(kāi)發(fā)者到底應該學(xué)習哪種編程語(yǔ)言才能獲得機器學(xué)習或數據科學(xué)這類(lèi)工作呢?這是一個(gè)非常重要的問(wèn)題。我們在許多論壇上都有討論過(guò)?,F在,我可以提供我自己的答案并解釋原因,但我們先看一些數據。畢竟,這是機器學(xué)習者和數據科學(xué)家應該做的事情:看數據,而不是看觀(guān)點(diǎn)。
本文引用地址:http://dyxdggzs.com/article/201711/371947.htm讓我們看一些數據。我將在Indeed.com上使用趨勢搜索。它可以根據時(shí)間搜尋實(shí)際工作機會(huì )中特定的條款。這表明了雇主們正在尋找擁有該技能的人才。然而,請注意,這并不是一項有效使用技能的民意調查。這種指標更能體現技能的受歡迎程度。
話(huà)不多說(shuō),上數據。我搜索了與“機器學(xué)習”和“數據科學(xué)”一起使用的技能,搜索選項包括編程語(yǔ)言Java、C、C+++和JavaScript。然后還包括了Python和R,因為我們知道它在機器學(xué)習和數據科學(xué)方面很受歡迎,當然還有Scala,考慮到它與Spark的關(guān)系,再加上Julia,一些開(kāi)發(fā)中認為這是“the next big thing”。運行這個(gè)查詢(xún),我們得到的數據如下:

當我們關(guān)注機器學(xué)習時(shí),我們得到了類(lèi)似的數據:

我們能從這些數據中得到什么啟示呢?
首先,我們看到并不是一招通吃。在這種情況下,各種機器學(xué)習編程語(yǔ)言都很受歡迎。
其次,所有這些編程語(yǔ)言都在急劇增長(cháng),反映出在過(guò)去幾年里,企業(yè)對機器學(xué)習和數據科學(xué)的關(guān)注和需求正在急速增加。
第三,Python很明顯的領(lǐng)導者,其次是Java,然后是R,再然后是C++。Python對Java的領(lǐng)先優(yōu)勢正在增加,而Java在R上的領(lǐng)先地位正在下降。必須承認,我很驚訝地看到Java名列第二;我本來(lái)是以為是R語(yǔ)言。
第四,Scala的增長(cháng)令人印象深刻。它在三年前幾乎是不存在的,現在和這些成熟的編程語(yǔ)言幾乎在同一個(gè)層面。當我們切換到Indeed.com上的數據的相對視圖時(shí),這更容易發(fā)現。

第五,Julia的受歡迎程度雖然不明顯,但肯定有上升的趨勢。Julia將成為一種流行機器學(xué)習和數據科學(xué)編程語(yǔ)言嗎?未來(lái)會(huì )告訴你。
如果我們忽略Scala和Julia,以便能夠聚焦其他編程語(yǔ)言的增長(cháng),那么我們毫無(wú)疑問(wèn)可以確認:Python和R的增長(cháng)速度要快于通用語(yǔ)言。

考慮到增長(cháng)率的差異,R的受歡迎程度可能很快就會(huì )超過(guò)Java。
當我們專(zhuān)注于深度學(xué)習這個(gè)問(wèn)題時(shí),數據是完全不同的:

這時(shí),Python仍然是領(lǐng)導者,但C++現在是第二,然后是Java,而C在第四,R只在第5。這里顯然強調了高性能計算語(yǔ)言。Java正在快速發(fā)展。它可以很快達到第二名,就像一般的機器學(xué)習一樣。R不會(huì )很快接近頂部。令我驚訝的是Lua的缺席,盡管它在一個(gè)主要的深度學(xué)習框架(orch)中使用,而Julia不存在。
到這時(shí),到底哪種語(yǔ)言才是最受歡迎的編程語(yǔ)言呢?答案應該很清楚了。當涉及到機器學(xué)習和數據科學(xué)工作時(shí),Python、Java和R是最流行的技能。如果你想專(zhuān)注于深度學(xué)習,而不是一般的機器學(xué)習,那么,在某種程度上來(lái)說(shuō)C++、C也是值得考慮的。然而,請記住,這只是看待問(wèn)題的一種方式。如果你想找一份工作,或者你只是想在業(yè)余時(shí)間學(xué)習機器學(xué)習和數據科學(xué),你可能會(huì )得到不同的答案。
我的個(gè)人答案呢?除了有許多頂級機器學(xué)習框架的支持之外,Python對我來(lái)說(shuō)很適合,因為我有計算機科學(xué)的背景。對于開(kāi)發(fā)新的算法,我也會(huì )感到很舒服,因為我的大部分職業(yè)生涯都是用這種語(yǔ)言編程的。但這就是我,有不同背景的人可能會(huì )覺(jué)得用另一種語(yǔ)言更好。一個(gè)擁有有限編程技能的統計學(xué)家肯定會(huì )更喜歡R。一個(gè)強大的Java開(kāi)發(fā)人員可以使用他最喜歡的語(yǔ)言,因為有大量的Java API的開(kāi)放源代碼。對于這些圖表上的任何一種語(yǔ)言,都可以有類(lèi)似的例子。
因此,我的建議是,在花大量時(shí)間學(xué)習一門(mén)語(yǔ)言之前,根據自己的情況來(lái)決定選擇哪種編程語(yǔ)言,切記千萬(wàn)不可跟風(fēng)。
評論