Python、R、Java、 C++ 等:從業界反饋看機器學習語言趨勢

2021-01-15 雷鋒網

對於開發者來說,掌握什麼程式語言能更容易找到機器學習或者數據科學的工作?

這是個許多人關心的問題,非常實際,也在許多論壇被翻來覆去地討論過。非常顯著的是 「Python 是大趨勢」這一論調,似乎它即將在機器學習領域一統天下。那麼這種說法到底有幾分事實?

首先要指出的是,大多數對程式語言的討論都比較主觀。比如說,有的開發者(尤其是初學者)會因為一門語言的某個特性很契合自己的使用習慣、用著最順手,就狂贊這門語言,而對其他語言的優點選擇性失明。而這篇雷鋒網編譯自 IBM 開發者論壇的文章,則儘量避免了主觀判斷,用數據來展示各門開發語言在工業界的實際使用情況,可以說是十分難得。畢竟,統計學習的核心就是用數據說話。AI 開發者應該更明白可靠數據相比主觀臆測的價值。

閒話少說,我們來看看 2016 年開發語言使用情況統計,到底哪門語言的使用人數上升最快?居前幾位的都是哪些?

圖1:機器學習與數據科學領域各語言的僱主招聘指數對比

如圖所示,這是利用美國職位搜尋引擎 indeed.com 得出的機器學習、數據科學招聘趨勢:對這些領域內開發職位所列出的程式語言要求進行了統計。它展示出公司、僱主們都在尋找哪些語言技能。但注意:

我們可以清楚看出,美國僱主最需要的前四大語言排名是 Python,Java,R,C++。其中,Python 在 2015 年中超過 Java 躍升至第一。

然後,把搜索結果限制在機器學習領域(去掉數據科學),數據其實差不多:

圖2:機器學習領域各語言的僱主招聘指數對比

這張折線圖中包含了 Lua,但由於它的招聘職位實在太少,代表 Lua 的線與坐標軸重合。

我們能從這兩組數據中推斷出什麼?

Python 是市場的領先者,作為最受歡迎的機器學習語言當之無愧。 另外,Python 與 Java 之間的差距正在被拉開。但是 Java 與 R 之間的差距正在被縮小。雷鋒網(公眾號:雷鋒網)獲知,有業內人士對居第二位的語言是 Java 而不是 R 感到驚訝。通常,大家的主觀感受是除了 Python,使用 R 語言開發機器學習應用最普遍。

Python 並沒有成為霸主。各主流語言的招聘需求都很多。對小眾語言如 Lua 和 Julia ,目前業界的需求確實小些,但其他語言都佔有了相當的比例。

進入 2016 年後,市場對所有語言的需求都大幅上漲。Python 並沒有與其他語言拉開明顯差距。這表現出,最近一年裡業界對機器學習和數據科學整體的興趣和重視。

Scala 在 2014 年之後的增長十分驚人。2014 年之前,對它幾乎沒有招聘需求。但那年之後一直在穩定增長。2016 年,它趕上了 Javacript,達到主流語言陣營的水平。

作為一門口碑不錯的新興語言,Julia 的普及程度還很低。但在 2016 下半年有了巨幅增長。現在還看不出來它是否會成為主流語言。

關於 Scala 和 Julia 的增長趨勢,在它們的增長率折線圖中,我們可以很明顯的看出來:

圖3:Scala,Julia,Lua 在機器學習、數據科學領域的僱主招聘指數增長率

然後,當我們省略掉 Scala、Julia 和 Lua,統計主流語言的增長率,可以明白無誤看出 Python 和 R 的增長速度遠超其他主流語言:

圖4:機器學習與數據科學領域,主流語言的僱主招聘增長率

R 的增長率始終高於 Python,位居第一,更是遠超 Java。以此來看,在可預測的將來,R 不但不會消失,還會成為更受歡迎的主流機器學習語言。因此,說「Python 是未來大趨勢」肯定是不對的。

但是,當我們聚焦於細分領域「深度學習」,數據就變得很不一樣:

圖4:深度學習領域各語言的僱主招聘指數對比

在深度學習市場,對 Python 的招聘需求仍然最高。但前五大語言的排序變成了Python,C++,Java,C,R。這裡有很明顯的對高性能計算語言的側重。 而且,Java 的增長速度驚人,它可能很快成為深度學習市場的第二位。在可預期的將來,R 還不會成為最受歡迎的深度學習語言。令人驚訝的是 Lua 的存在感之低。要知道,開源框架巨頭之一的 Torch 便是基於 Lua,許多開發者因此會認為它在深度學習市場佔有特殊地位。

對於文章開頭提出的問題——僱主需要掌握什麼語言的開發者,答案已經很明確了:

在機器學習和數據科學市場,Python, Java, 和 R 的招聘需求最大;

在深度學習領域, Python, Java, C++ 以及 C 更被公司歡迎。

但雷鋒網的讀者們請注意,這只是私營公司的招聘需求。學界研究人員的偏好會有很大出入。另外,自學 AI 的業餘愛好者、暫時沒打算在這行謀生的,也不需要對這些數據太過在意。

至於文章原作者的個人觀點(雷鋒網再次提醒:請注意是「個人」觀點,僅給大家做參考),他本人較傾向 Python。原因有二:1. 基於 Python 的頂級機器學習框架選擇較多。2. 作者來自計算機專業背景,Python 的邏輯更適合。相比之下,R 語言就更適合統計學、數學背景的開發者。在 Python 之外,作者更傾向於使用 C++,這是因為他用 C++ 寫代碼寫了半輩子,已經習慣了。其他人、新人可能更適合學習其他語言。比如說,寫代碼功底不深的統計學背景開發者通常用 R 語言更順手。經驗豐富的 Java 開發者可以接著用 Java,尤其有那麼多開源 Java API 。

歸納起來,還是程序猿的個人學習、開發經歷,以及知識背景影響了他的語言偏好。很少有人能夠涉獵所有主流語言,即便只掌握幾門語言,也未必在每一門上的開發經驗都夠深。因此,老司機對新入門開發者的語言推薦都帶有強烈主觀色彩。即使拿這篇以陳述數據為主的文章來說,也有它的主觀局限:Matlab/Octave 和 Lisp,這兩門重頭語言並沒有包括在內。這大約是由於作者並沒有充分接觸這三門語言。而 AI 大牛吳恩達對新手的建議就是選擇 Octave 或者 Matlab 起步。

對於新入門、正猶豫選擇哪門語言的技術宅,關鍵還是在投入大量時間之前多聽、多看、多了解;比較不同人的觀點,選擇最適合自己的。雷鋒網與旗下 AI 科技評論頻道常年更新針對新老開發者的技術文章,以及追蹤 AI 界的重大新聞事件,感興趣可關注公眾號。

更多對機器學習程式語言的介紹請參考上期文章 入門必讀 機器學習六大開發語言。

via ibm developer

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • Python 拓展之詳解深拷貝和淺拷貝
    其實單從表面意思來說,copy 就是將某件東西再複製一份,但是在很多程式語言中,比如 Python,C++中,它就不是那麼的簡單了。>>> first = {'name':'rocky','lanaguage':['python','c++','java']}>>> second = first.copy()>>> second{'name': 'rocky', 'lanaguage': ['python', 'c++', 'java
  • C/C++、Java、JavaScript、PHP、Python分別用來開發什麼?
    首先,我們先普及一下程式語言的基礎知識。用任何程式語言來開發程序,都是為了讓計算機幹活,比如編寫一篇文章,下載一首MP3等,而計算機幹活的CPU只認識機器的指令,所以,儘管不同的程式語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。理論上任何語言幹任何事情幾乎都可以,但是主要幹什麼那就不一樣了。
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    關於語言的共性——累積學習程式語言,跟一個人學習一門自然語言(英語、日語)是差不多的。學習在某種情景下使用語言的詞彙/語句來表達。比如表達善意的問候:「你好」、「hello」、「こんにちは(抗你知哇)」。語言的學習,就是不斷的累積相應情景下的語言表達。
  • 相比於Java,python到底有哪些優勢?
    談到編程,首先不可避免的是程式語言。由於在AI的帶動下python更是異軍突起,撼動了許多老大哥的地位。可唯獨java穩如泰山,不可動搖!自然而然的就會出現python與Java的討論聲。本文的目的在於討論python和java相比到底有哪些優勢,至於缺點暫且不提!
  • Python學習,這些高階函數和高階特性值得一學
    Python語言這麼火,不論是對於剛開始學習的編程小白或者有接觸過其他語言(c/c++/java等等)的同學來說,寫代碼的時候難免會受本身慣性思維或者其他語言的影響!解決問題的思路有的時候會比較單一,其實Python有很多靈活的解法,比如python的幾個高階函數或者特性!
  • 打工人打工魂,打工的必會java調用python的幾種用法
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫圖丨pexelsjava調用python的幾種用法(看這篇就夠了)在java類中直接執行python語句準備工作:創建maven工程,結構如下:到官網https://www.jython.org
  • 《小灰教你零基礎學python》-Python入門語言
    二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython>c語言php(有人稱php是最好的程式語言)這裡包括咱本套課程需要學習的python,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 剖析C語言中a=a+++a的無聊問題
    這種純屬C語言 「二」 級的問題應該是從a+++a引申出來的吧。於是乎兄弟姐妹們開始討論它的運算結果,以及改如何理解。更有人寫出(a++)+(++a) a+(++(++a)) ((a++)++)+a這樣的東西,問應該如何計算。我表示鴨梨很大...
  • Go語言學習筆記之字符串一
    Go語言是一個年輕人,身上擁有c++,java,python等語言的特點。在網絡通信、並發和並行編程擁有極好的體驗,當然不僅僅在這上上面,還有網絡編程,web應用,應用下載等有著非常大的潛力。這裡列舉一些 Go 語言的特點: 簡化問題,易於學習 內存管理,簡潔語法,易於使用 快速編譯,高效開發 高效執行 並發支持,輕鬆駕馭, 靜態類型 標準類庫,規範統一 易於部署 文檔全面 免費開源學習go語言有幾天了,今天突然想到把學的寫成筆記,記錄一下。如有不正確的請指教。
  • 用R也可以跑Python了
    但如果你還想來搞點深度學習,整個自然語言處理,那你可還真得用Python。如果你處於交叉領域,很可能就需要兩種語言切換。後果是,寫個for loop還出bug真的是家常便飯。報警!如果你真的想提高你在數據科學領域的能力,這兩種語言你確實都應該學習。不過現在好消息來了!
  • Python與Java:你應該學習哪種語言,他們有什麼區別?
    Python與Java:你應該學習哪種語言,他們有什麼區別? 在企業招聘中, Python和Java經常是需求比較大的程式語言。這兩種編程功能強大,靈活且面向對象的語言,通常在組織中和各種其他設置中使用。
  • 除了Python,為什麼機器學習還需要一種新的程式語言?
    編者按:任何足夠複雜的機器學習系統都需要一個特定的、非強制要求、優弊共存的程式語言。 如今 Python 雖然在人工智慧領域應用廣泛,但是也存在一定的弊端,那麼是否有必要為機器學習量身打造一門新的程式語言?而究竟什麼樣的程式語言才是最適合機器學習呢?接下來,本文將為大家一一揭曉答案。
  • Java API + Python AI,實現跨平臺任務調度
    1,Java + Spring Boot開發Web服務是常用搭配,豐富的組件和易用的功能;2,Python在AI領域是主流開發語言,實現業務處理更方便,不需要代碼移植;3,招聘工程師組建技術團隊有針對性,發揮各自優勢。
  • 業界| 四大機器學習程式語言對比:R、Python、MATLAB、Octave
    作者列出了這些語言(工具)的優缺點,希望對想開始學習它們的人有用。 R 是一種用於統計計算和圖的語言及環境。 Octave Octave 可以看作是商業語言 MATLAB 的 GNU 版本,它是一種腳本矩陣語言(ing matrix language),其語法有大約 95% 可與 MATLAB 兼容。
  • Python和R之間轉換的基本指南:有效學習另一種語言的簡單方法
    Python和R之間轉換的基本指南這裡介紹的方法與我們自學習外語的時候使用的方法是有共同之處的,例如我們要學習英語,可以使用以下三個關鍵的練習幫助我從笨拙地將中文單詞翻譯成英語,轉變為直接用英語思考和回答(英語思維)。把新的英語單詞和我已經知道的中文單詞關聯起來。把英語和中文的單詞作比較,使我能很快地領會這個生詞的意思。
  • 2021年,JavaScript會是最好的語言嗎
    程式語言沒有做好,只有最合適的,要評價一門語言,主要看用來做什麼,語言本身的流行度和社區/支持的活躍度對語言的發展也至關重要。3.python:python的流行主要受數據科學的快速發展,雖然python也幾乎發展成為了無所不能的語音,但是更典型的應用還是在數據科學和網際網路應用方面。在其他比如桌面應用程式方面稍為遜色。4.c++/c語言。
  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。個人認為,對於機器學習的結果來說,使用matplot來做模型的結果的檢測就足夠了,比如說查看是否過擬合,AUCROC圖。而plotly更加適合做報表系統,因為對於報表來說,不僅要展示圖的大體信息,比如上圖中每個股票的趨勢,而且更加的是這個圖是否能夠體現出更多的細節,從而可以讓決策者發現比較重要的信息。那在這種需要下,plotly就是一種比較不錯的選擇。
  • 學習Python對辦公真的有用嗎?用經驗告訴你答案
    他們會在廣告文章或者視頻中突出這麼一點:同事下班比我早,就是因為用了python辦公;面對海量數據和文檔要整理,我卻無能為力,但是用了python便可以快速搞定;學習一種程式語言,可以讓自己的職業發展更加有力。不得不說,現在的廣告很能抓住人的心理,學習python可以讓職業發展更加順暢這一點確實擊中我了。