介紹
截至2020年,大約有700種編程語言可用。其中一些傾向于僅適用于特定領域,而其他一些則因其能夠在各種應用中工作的能力而廣受贊賞。在過去的十年中,軟件的應用幾乎穩(wěn)定增長,并且為了滿足需求而開發(fā)了新的語言。在本文中,我們將探討數(shù)據科學和云開發(fā)領域中一些最常用的編程語言和潛在的新星。
決定在業(yè)余時間學習一種相對較新的編程語言有時可能是對我們時間的冒險投資,因為我們不確定未來幾年就業(yè)市場將如何看待這種新語言。另一方面,在大多數(shù)情況下,較新的編程語言都經過精心設計,以充分利用最新的技術進步,因此從長遠來看有可能為我們提供優(yōu)勢。因此,使用更新的編程語言的一些主要優(yōu)點可能是:
- 硬件優(yōu)化(GPU,多核CPU系統(tǒng))。
- 改進的網絡。
- 更簡潔的代碼。
- 鍵入推斷。
- 更輕松的容器化和云支持。
根據2020年Stackoverflow開發(fā)人員調查,以下編程語言是2020年開發(fā)人員最喜歡的語言(圖1)。作為本文的一部分,我們將考慮其中的5個。
> Figure 1: Most loved programming languages
此外,根據Stackoverflow開發(fā)人員調查,這是2020年排名前10位的付費編程語言(圖2)。
> Figure 2: Languages associated with the highest salaries worldwide
編程語言
Julia
像Python和R這樣的編程語言由于易于使用,現(xiàn)在在諸如數(shù)據科學,機器學習和通用計算/數(shù)字任務等領域非常流行。但是,這些語言最初并不是為在高度可擴展的系統(tǒng)上工作而設計的。因此,這對于大型企業(yè)解決方案而言,很難使用這種類型的編程語言。為了克服這種類型的問題,Julia是由麻省理工學院(MIT)的一組研究人員創(chuàng)建的。朱莉婭的一些關鍵特征是:
- 為與并行和分布式系統(tǒng)一起使用而優(yōu)化。
- 內置包管理器。
- 支持C編程功能。
- 動態(tài)鍵入。
為了促進采用,已經實現(xiàn)了許多數(shù)據科學和機器學習庫,例如ScikitLearn.jl,TextAnalysis.jl,StatsModels.jl。此外,Julia還可以在傳統(tǒng)的Jupyter筆記本中使用。如果您有興趣了解有關Julia的更多數(shù)據科學知識,那么此YouTube課程是一個很好的起點。
從圖3可以看出,在過去的幾年中,茱莉亞到目前為止Google搜索的整體數(shù)量在增加。
> Figure 3: Julia Google Trends [3]
Go
Go是當今最有前途的系統(tǒng)編程語言之一。實際上,這種編程語言是Google開發(fā)的,目的是簡化應用程序和開發(fā)的規(guī)模。Go的一些關鍵特征是:
- 專為云原生開發(fā)而設計。實際上,主流工具(例如Docker和Kubernetes)已使用Go開發(fā)。
- 內存管理(與C和C ++等語言不同,它具有嵌入式的Garbage Collector)。
- 出色的并發(fā)支持。
在2014年左右達到頂峰后,Go多年來一直在Google搜索量中保持一致。Go是當前在Cloud平臺(例如Google Cloud Platform和Microsoft Azure)上最受歡迎的編程語言之一。
> Figure 4: Go Google Trends [3]
如果您對使用Go語言編寫機器學習算法感興趣,那么GoLearn是一個很好的起點。
Python
如今,Python是用于數(shù)據科學和機器學習任務的最受歡迎的編程語言。它是由Guido van Rossum于1991年首先開發(fā)的,此后它的受歡迎程度才剛剛提高(圖5)。
> Figure 5: Python Google Trends [3]
用于數(shù)據科學和機器學習的一些最受歡迎的Python庫是:
- Pandas
- Numpy
- scikit學習
- TensorFlow
- Pytorch
如前所述,與Python相關的關鍵問題之一是它的可伸縮性性能不佳。為了嘗試解決此問題,已實現(xiàn)了不同的系統(tǒng)(例如Cython和Numba),以在使用Python進行編碼時創(chuàng)建類似C的性能級別。
Scala
目前,Scala被認為是函數(shù)式編程的最佳編程語言之一(盡管它仍然提供對面向對象編程方法的支持)。就搜索受歡迎程度而言,Scala似乎在2018–2019年間在Google搜索上達到頂峰(圖6)。
> Figure 6: Scala Google Trends [3]
使用Scala的一些主要優(yōu)點是:
- Scala是一種靜態(tài)類型的語言。
- 與Python等編程語言相比,速度要快得多。
- 與Java的兼容性。
- 能夠結合功能和面向對象的編程。
Scala受歡迎的主要原因之一是Apache Spark(使用Scala構建的數(shù)據管理工具)。實際上,Apache Spark是用于Hadoop集成(快速處理大量數(shù)據)的最受歡迎的大數(shù)據工具之一。
JavaScript
最后,JavaScript是目前最流行的網絡編程語言之一,幾乎可以在任何類型的應用程序(例如服務器,移動設備,云,微控制器等)上運行。
在網絡開發(fā)的早期,Javascript的普及率達到了頂峰,此后在過去十年中一直保持穩(wěn)定的趨勢(圖7)。
> Figure 7: Javascript Google Trends [3]
之所以將Javascript包含在此列表中,主要原因之一是它能夠在網絡上共享數(shù)據科學和機器學習項目。實際上,在過去的幾年中,已經開發(fā)了不同的框架,例如TensorFlow.js,ONNX.js,Plotly.js,Dash等,以便在以Python等編程語言創(chuàng)建的Web項目上可訪問。
結論
總體而言,Python和Javascript無疑是目前最受歡迎的兩種編程語言。盡管,如本文所示,Julia,Go和Scala等不同的替代產品由于其各種好處(現(xiàn)在的方式可能與過去十年中的Python相同)現(xiàn)在開始在就業(yè)市場上獲得越來越多的關注。