2021年數據科學從業者應該學習哪些程式語言?

2021-01-09 AI環球速遞

在新的十年裡,什麼程式語言看起來最有希望應用於數據科學?

導言

過去的十年也許已經結束了,下一個十年也許看起來並不那麼有希望,但數據科學的未來肯定是光明的。數據科學無疑仍然是一個熱門職業,而機器學習技術也從未像現在這樣令人興奮!作為一名數據科學家,作為解決問題的最開始的環節,您需要回答的最重要的問題之一是,您應該實際使用什麼語言來獲得您想要的結果。

在過去的幾年裡,我們確實看到了各種語言的數據科學工作生態系統的繁榮。話雖如此,對於許多不同的程式設計師來說,進入這個領域或在語言方面邁出下一步可能是相當困難的。在數據科學領域更是如此,那裡的事情會持續地激動人心。當然,這就是數據科學的樂趣所在;不斷有新的東西要去認識和學習。話雖如此,理想的情況下,可能會有一些新的語言,你可以從這個語言列表中檢查出來,我認為這些語言是有價值的,而且在明年可能會變得更有價值。

Python

在大多數領域,無論是開發,軟體工程,甚至是Web開發,一個新的程式設計師可能想要開始學習如何用Python程式語言來編程。Python不僅是一種多樣化的程式語言,具有數據科學之外的許多功能,而且可能是高級數據分析的最佳工具之一。

通過Pandas,SkLearn,Tensorflow,Keras,NumPy等軟體包,Python的生態系統顛覆了大多數競爭對手。話雖如此,儘管有些人可能更喜歡其他語言的語法,但很難對這種程式語言可用的軟體包數量之少提出異議!幸運的是,許多語言(如R和Julia)的解決方案都有用於調用Python包的包,通常使用C,因為這兩種語言都是基於LLVM的,並且在編譯器方面與C共享類似的體系結構。

除此之外,Python還有非常棒的數值包。不用說,NumPy是一個很好的例子,它是一個用於Python線性代數的實用程序包。Pandas在處理數據方面也很棒,在我個人看來,在用戶友好性方面是無與倫比的。

Python最大的缺點當然是速度。然而,鑑於Python是由基於LLVM的語言C來解釋的,因此它在使用這個編譯器庫的其他語言中將是普遍可擴展的。這就是Python相對於R的真正優勢所在,也是它與其他程式語言(有時是低級程式語言)非常接近的地方。這無疑是Python的一大優勢,因為它不像一種解釋的腳本語言,而是更像一種用於基於C的模塊調用的應用程式編程接口(API)。

R

最受歡迎的數據科學語言選擇是R編程。R是一種很棒的程式語言,它在範式上不同於大多數程式設計師使用的許多其他語言,並且肯定通過這種範式讓人受益很多。R還有一個很棒的數據科學生態系統。

雖然Python有超過200,000個註冊包——比R多得多,但R本質上是一種更加面向統計的語言。話雖如此,R擁有許多久經考驗的工具,如gleam和ggplot2。還有很多更好的軟體包起源於R,現在已經擴展到各種程式語言和軟體包中。

R最大的缺點可能是它的速度。雖然Python也不算是一種速度很快的語言,但是C語言對它的解釋使得將C代碼作為Python模塊運行是非常可行的。話雖如此,更多的分析和基於可視化的數據科學家肯定會更喜歡R的聲明式函數語法,而同時他們仍然會編譯完全構建的應用程式。如果使用R的原因不是為了以專業的方式使用它,也不是為了將它部署到生產中,那麼它當然仍然可以作為一種突出的學習經驗。

最近,在數據科學領域,R肯定已經退居Python之後。我認為這些理由當然是有道理的,我當然喜歡這兩種語言,因為它們在不同方面各有其用武之地。這兩個肯定都值得一挑。

雖然R是一種用於統計,數據分析和機器學習的優秀語言,但它也不是沒有問題。當然,一個明顯的問題就是語言的速度。一些數據科學家也從來不需要運行調用大量線程的機器學習算法。話雖如此,在數據科學中,仍然有一些方法可以用R來處理任何事情,儘管可能不是沒有一些問題。但是,如果你像我一樣,也痴迷於機器學習,那麼你可以選擇一種較新的程式語言Julia,它是一種編譯後的JIT語言,以其速度而備受推崇。

Julia

對於機器學習的未來,如果有什麼我可以肯定地說我感到興奮的話,那毫無疑問就是Julia程式語言和它的生態系統。Julia是一種使用多重分派作為範例的高性能編譯程式語言。它可以採取程式設計師在典型程式語言中習慣的對類型的簡單處理,並且對其賦予全新的用途。

Julia相對於競爭對手的最大優勢當然是速度。雖然Julia是一種專注於數學計算的完美範例的語言,但不用說速度也是它的優勢的一部分。Julia的速度通常可以與C媲美,這也是數據科學界許多人推崇它的一個潛在原因。

話雖如此,我認為關於Julia的一些東西也被低估了,那就是語言是如何對待它的範式的。它是一種令人愉快的語言,因為語言本身永遠不會妨礙程式設計師想要表達的算術。此外,Julia代碼的編寫非常類似於常規數學的語法,這使得它特別適合我們這些科學迷。

2021年學習Julia語言的最大障礙肯定是生態系統。雖然能夠編寫自己的算法是很棒的,但一天只有這麼幾個小時,有時開源開發人員已經將某些東西的偉大實現寫進了其他程式語言。話雖如此,Julia語言還是有一些令人興奮的軟體包值得一查!

此外,Julia之所以偉大,是因為它不僅是一種編譯速度快的語言,而且編寫速度也快。雖然Julia的速度和編譯可能會吸引其他人,但一些科學程式設計師可能對Julia的語法非常感興趣。Julia使用多重分派作為範例。這意味著Julia中的任何內容,從函數調用到類型和表達式,都將使用斷言運算符生成lambdified表達式。對於那些不熟悉其他語言中lambda表達式的人來說,它允許只通過創建一個表達式就可以將變量調用到函數中。這就是Julia讓人著迷的地方。

在這令人驚嘆的優勢中,最亮眼的還是我之前提到的——速度。

當然,Julia的速度是出了名的。Julia使用Just In Time(JIT)編譯,它允許在執行時編譯語言。這意味著首先,編譯器的啟動時間更短,其次,類型可以被難以置信地動態處理。通過讓編譯器知道要準備哪種類型,甚至可以用不同的Julia代碼迭代,從而獲得更快的速度。

Scala

另一種以速度著稱的有趣程式語言是Scala。雖然Scala曾經是大多數機器學習工程師的大數據分析工具,但最近隨著新的解決方案的推出,它的受歡迎程度也在逐漸下降。話雖如此,雖然掌握Scala或Java可能不如十年前對數據科學有價值,但對Hadoop和Spark的了解無疑是非常重要的,並且這些技能可以轉化為對其他伺服器體系結構和其他語言包的了解,例如PySpark。

話雖如此,我在日常工作中使用Scala的次數比預期的少得多。但並不是所有的工作都是一樣的,Scala無疑是一種很棒的程式語言。影響Scala的最大問題主要是時間,以及依賴項缺乏現代化。很多時候,在科學中,依賴關係真的會變得一團糟。對於Python和Julia這樣的語言,包管理器的能力可能有點太過分了,而有時Scala的情況就不那麼簡單了。

Scala的最大障礙可能是採用。Scala已經慢慢地但肯定地變得越來越不受歡迎了。我認為這部分歸功於數據分析的興起,以及最近機器學習生態系統的快速發展。雖然Scala在處理大數據時可能仍然被少量使用,但這種情況似乎正在迅速變化。

C++

今年我會考慮的最後一種數據科學語言是C++。雖然人們通常認為C++與數據科學不像Python那樣和諧,但它是一種經過14年發展的久負盛名的語言。您可能有幾個原因想要使用C++,但當然也有一些原因會讓數據科學中不考慮使用C++。

最大的原因是因為C++本質上是一種相對命令式的語言,它需要更多的狀態和內存管理,而不是使用更多的聲明性語言,比如像Python那樣。話雖如此,對於實驗來說,C++可能不是我會使用的語言——因為它是靜態類型的,當涉及到處理數據時可能會引起一些相當大的麻煩。

話雖如此,雖然C++可能不是用於實驗和分析的最佳語言,但在生態系統中有一些引人注目的庫可能會吸引任何機器學習工程師的注意。這裡有幾個很好的例子可以提及,比如Shogun,MLPack,OpenCV,以及所有典型的埠,這些埠可以在最後一種語言中找到,比如Tensorflow。此外,與Python和R等其他的語言相比,C++自然是一種快得多的語言。這意味著用C++代碼和C++生態系統構建的算法通常比它的競爭對手運行得快得多。

信不信由你,C++實際上是機器學習中相當流行的語言。對於更多的基於數據管道/模型的數據科學工作,這一點尤其正確,這些工作可能在一個大型團隊中共享。這與該語言不適合分析項目的原因相同,因為許多程式設計師可能更頻繁地一起為同一個目標工作。

目前C++語言的最大障礙可能是採用。雖然C++確實有一系列可以選擇的包,但是調試或解決問題可能會非常困難。就通用性而言,C++無疑是當今最好的語言之一,但由於其他語言具有更強的聲明性(和數學)能力,它可能不是專門用於數據分析的好選擇。這當然是一個取決於個人的東西,而且需要明確的是,C++可能也不想成為你可以學習的第一門數據科學語言。

另一方面,使用C++語言有很多很大的優勢。它可以提供一些其他語言無法實現的非常棒的功能!如果您想儘快開始使用C++,那麼學習一下線性代數是一個很好的起點。

結論

在2021年,數據科學家們在選擇上會變得異常任性。雖然大多數行業都轉向了Python,但幸運的是Python不是唯一可用的程式語言和/或生態系統。R當然也已經存在很長時間了,而且它將是語言中另一個很好的選擇。此外,在過去的一年裡,新崛起的Julia的生態系統和用戶群確實蓬勃發展,使得Julian ML,stats和analytics變得更加可行。

此外,仍然有幾十萬不同的工作崗位在拼命地尋找Scala,C和C++開發人員——特別是具有DS/ML技能的開發人員。話雖如此,我認為所有這些語言肯定都是可行的選擇!

那麼,在2021年,你應該選擇這些偉大的語言中的哪一種來學習或使用DS/ML呢?當然,答案幾乎普遍取決於你需要練習和體驗的技能。C++可能比學習Python,R,甚至Julia要難得多。Scala也不像其他一些語言那麼容易,但是那些在基於Java的程式語言方面有經驗的人可能會發現這種語言很有吸引力。那些完全沒有經驗的人也可能希望從查詢框架開始,比如SQL。

相關焦點

  • 2021 年最值得學習的機器學習程式語言TOP 5
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握
  • 2021年 最值得學習的機器學習程式語言TOP 5
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握
  • 2021年哪十大程式語言值得投入精力學習?
    2021年熱門程式語言 GoGo 可能是本文中我們討論的所有程式語言中極不為人所知的一種。它是谷歌開發的,2007年的APIS和Web應用。2021年熱門程式語言 Swift我們擁有蘋果公司開發的通用開源程式語言。它深受Python的影響,因此速度快,學習起來很容易,主要用於開發本地Ios和MacOSX應用程式。
  • 大數據專業大一期間應該學習哪些程式語言
    首先,大一期間應該把學習精力主要放在基礎學科上,包括數學課程和統計學課程,因為大數據是一個典型的交叉學科,數學和統計學對於大數據專業的學生來說是非常重要的。從某種程度上來說,數學和統計學能夠決定大數據研發人員未來的成長高度,因此一定要在大一、大二期間打下一個紮實的基礎。
  • 2021 年最值得學習的 5 大機器學習程式語言!
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握 AI 和機器學習?可供選擇的語言很多,你需要通過戰略選擇最能滿足個人需求,以及保證自己將來能夠在 AI 和機器學習領域順利發展的程式語言。
  • 程式設計師應該學習的5種程式語言
    了解一種或者真正的編碼語言是很好的,但作為一個真正的多語言開發人員是如何實現真正的主要狀態。我在某處讀到程式設計師應該每年學習一種新的程式語言(我認為它的代碼完整,但不確定),但如果你不能這樣做,我建議你至少學習以下五種程式語言,以便在你的職業生涯中取得好成績。 。
  • 你應該學習的最好的程式語言是什麼?
    Angular.js可以控制網站的前端,換句話說,就是用戶看到的那些東西Node.js工作在伺服器,用來存放你的所有網站內容Express.js在中間層,控制著數據的流向MongoDB是數據存儲中心,裡面存放著你的網站用戶的所有數據。
  • 2021 年,這8種程式語言最流行
    無論你的需求是數據科學,機器學習還是 Web 開發,你都可以通過 Python 來完成。總之,Python 的語法,易用性和通用性使其成為最受初學者歡迎的程式語言。Python 是最受初學者歡迎的程式語言,因為它為全新的開發者提供了強大的支持網絡。你可以使用 Python.org 上面向初學者的免費教程開始編程。
  • 從業者誠懇推薦!10個數據科學領域學習資源
    隨著我對這份工作恐懼漸深,我意識到這份工作不適合我,所以我制定了一個目標,大概在2011年進入分析和數據科學領域。從那時起,慕課就成了我學習新知識的首選平臺,通過它我收穫了很多新知識。好的也有和壞的也有。如今,到了2020年,數據科學領域的日新月異,不會缺少學習數據科學的資源。
  • 2019年學習哪些程式語言不會過時
    目前世界上有大概600種程式語言,每一種程式語言都有其特定的應用場景,但是目前廣為流行的程式語言也就在幾十種,看一下2018年TIOBE語言排行榜:在這個語言排行榜上出現的程式語言都是目前被廣泛使用的程式語言,這些程式語言也都有大量的用戶基礎
  • 數據領域最強程式語言Python和R要合作了!
    AI 前線導讀: 是的,你沒有看錯,數據科學領域從業者最離不開的兩大程式語言,當紅炸子雞 Python 和「過氣網紅」R 真的要展開合作了。近日,URSA 實驗室宣布,R 和 Python 正攜手合作,旨在讓使用不同程式語言的數據科學家能夠更輕鬆地協作,避免不同語言開發人員的過多重複工作,這或許會成為今年最雄心勃勃的交叉事件。
  • 文科生想學習一門程式語言來提升就業競爭力,該學習哪門程式語言
    首先,當前對於文科生來說,學習一門程式語言是有必要的,隨著工業網際網路整合行業資源的能力越來越強,未來大量傳統行業的從業者都需要藉助於工業網際網路來完成工作任務,而掌握一門程式語言也會在一定程度上拓展職場人的能力邊界。
  • 【TD精選】學習數據科學的102個資源
    8 - R統計簡介(Datacamp)https://www.datacamp.com/introduction-to-statistics通過Datacamp的互動演練,學習R(數據科學中常用的程式語言)和統計數據。9 - 統計101 https://www.youtube.com/playlist?
  • 初學者如何迅速學習Python程式語言
    首先,當前Python語言有比較多的應用場景,而且近兩年隨著大數據和人工智慧的發展,Python語言的上升趨勢也非常明顯,所以當前不僅IT行業的從業者需要重視Python語言的學習,很多職場人也需要掌握Python語言,比如金融、統計等領域目前對於Python語言的依賴程度就相對比較高
  • 初中生是否應該重點學習Python編程
    首先,當前對於初中生來說,如果有時間學習一些編程知識是完全可以的,但是一定不能佔用太多的學習時間。程式語言僅僅是一個工具,要想真正發揮出程式語言的作用,一定要有一個紮實的知識基礎,所以初中生還是應該把主要的學習精力放在文化課上,爭取考上更好的高中,將來選擇一個學科實力比較強的大學,這對於未來的發展有非常直接的影響。
  • AI和數據科學大熱的年代,是時候學習一門程式語言了!
    最最最重要的是:還不開始學習編程,恐怕過幾年就連小學生都不如了...1, 如果有很好的編程基礎,已經掌握其他的程式語言,如Java、C等。除了課程中的Project開發經驗,剩下的可以通過免費資源自學,不過大把的時間投入也是必不可少的。2,反之,初學程式語言,又希望儘快掌握。
  • 學習編程和學習程式語言是兩碼事
    你可能正在學習一門程式語言,而不是編程本身計算機科學不是學習計算機,很震驚吧。相反,它是關於藉助計算機來自動解決問題的一門學問。解決問題才是計算機科學,而不是寫代碼。這就是許多計算機科學專業的學生,似乎不理解他們為什麼學習算法和數學的原因。
  • 想學習數據科學?我們整理了一份優質編程入門課程清單
    如何選擇課程每個課程必須符合以下四個標準:介紹了編程課程,並選擇性的涉及計算機科學相關內容。 稍後會做出解釋。教學語言使用 Python 或 R 。這是迄今為止在數據科學中使用的兩種最流行的程式語言。必須是可互動的在線課程,沒有書本或文本教程。
  • 2021年零基礎轉行程式設計師,可以重點學習什麼程式語言
    首先,當前要想零基礎轉行從事程式設計師崗位,一定要慎重,一方面原因是程式設計師崗位的從業門檻比較高,需要一個系統的學習過程,不僅要學習程式語言,還需要學習一系列計算機相關知識,另一方面原因是程式設計師崗位對於從業者的學習能力、交流能力和實踐能力都有一定的要求。
  • 《R語言使用者的Python教程——數據科學方法》
    銷售亮點:•提供R語言到Python的命令轉換,反之亦然•包含兩種程式語言的示例和應用•包含所附的幻燈片網站,可用於教授和學習其中任何一種軟體•有益於懂一種語言並想學習另一種語言的從業者和學生 主題/技術簡介: