程式語言是人類控制電腦的手段,所以絕大多數程式語言都試圖使這個過程更加強大和簡單。也正因此這個領域誕生了數百種程式語言,不過其中許多程式語言目前已經不再使用,還有一些可能在未來幾年裡會過時,然而還有很多語言將不斷髮展,在目前以及未來都佔有重要的位置。
比較程式語言是一件非常複雜的事,因此我們創作了很多好玩的圖片或段子用來表達對各種程式語言的定義,本文就以下圖開始吧:
下面提供的兩個表格總結了過去五年(2015-2019)裡程式語言的流行趨勢。該資料來自 2015-2019 年的 Stackoverflow 人氣調查。
為了清楚準確地理解,我們將程式語言分為兩組,第一組是 2000 年以前誕生的語言,第二組是 2000 年以後誕生的語言。將 2000 年作為邊界是隨機的選擇,但對於理解這兩組程式語言的趨勢非常有幫助。該表還列出了這些程式設計/指令碼語言的起源年份和主要應用領域。

第一組觀察結果

除了 Python 之外,從 2018 年到 2019 年所有語言的流行度都在下降。
1. Python
Python 是過去五年來人氣不斷上升的唯一語言。這是一門通用語言,如果你希望在 2020 年只學習一門程式語言,並希望涵蓋更廣泛的軟體開發領域,不妨考慮 Python。
2. Java
Java 的市場佔有率一直在不斷上升,但在 2019 年有所下降,原因是背靠 Google 的 Kotlin 在 Android 開發領域獲得了極大的普及。毫無疑問 Java 是一個不錯的選擇,但它現在屬於 Oracle 公司,由於公司的商業利益衝突,谷歌正在推廣 Kotlin。
事實上,由於使用 Java 的龐大開發群體、框架和遺留應用程式,大量公司仍在使用 Java 並將繼續使用 Java。
3. C/C++
C 和 C++ 仍然保持著大約 20% 的市場佔有率,並且由於其固有的功能和遺留系統,它將會繼續存在。
4. JavaScript
JavaScript 的受歡迎程度可歸因於諸如 Node.js 等流行的 JavaScript 庫和框架的增長。JavaScript 是用於構建動態網站的語言,它將成為未來幾年 Web 開發的首選語言。而且,如果我們想要進行 Web 開發,絕對無法繞開 JavaScript。
5. R 語言
R 語言近年來越來越受歡迎,原因在於資料分析需求的增長和普及。R 語言主要是資料科學家在使用,與 Python 這種通用語言相比,它擁有貢獻了大量資料科學庫和模組的活躍開發者。不過如果只能選一個的話,相信更多的資料科學家會傾向於 Python。
6. Ruby
與 PHP 一樣,在 Web 開發的後端構建方面,Ruby 也面臨來自 JavaScript 甚至 Python 的激烈競爭。因此,對於 Web 開發而言,JavaScript 和 Python 會是比 Ruby 更好的選擇(Python 的服務端框架 Flask 和 Django),而且更加靈活。
7. PHP
2019 年,PHP 流行度急劇下降,這可以追溯到伺服器端對 JavaScript 和 Python 的接受程度。如果有人想要進行伺服器端 Web 開發,PHP 仍然是一個很好的選擇 —— 有大量流行的框架,如 CakePHP,Codeigniter 等,否則選擇通用程式語言會更好。
8. Objective-C
在 Apple 遷移到 Swift 語言之前,Objective-C 是開發 Apple 軟體(如 macOS,iOS 等平臺)的主要語言。因此,這種轉變反映在兩種語言的流行中,即 Objective-C 的受歡迎程度下降,而 Swift 的普及率正在上升。所以,如果有人希望成為 Apple 產品的開發者,Swift 理所當然應該是首選語言。

第二組觀察結果

1. Swift

Swift 取代了 Objective-C 作為 Apple 相關軟體和應用程式開發的主要語言。
由於 Apple 的支援推廣,因此自成立以來 Objective-C 的受歡迎程度越來越高,Apple 也將繼續使用它。如果有人正在尋找特定於 Apple 的開發平臺,那麼 Swift 將成為一種必須知道的程式語言。不過 Swift 主要是面向特定供應商和產品的語言,在 Apple 生態系統之外的使用率非常低。
2. Go
Google 不斷地在維護、使用和推廣 Go 語言。而它最初的開發動機是解決對一些流行語言的不足,同時將最好語言的特性集於一身。
自 2017 年以來,Go 的受歡迎程度越來越高,並且在 Google 的支援下,它在未來幾年內都將會繼續保持高速發展。Google 也將 Go 作為新專案的主要語言並用 Go 取代其他語言,這種趨勢在未來幾年會繼續保持,因此如果想學習一門新的程式語言,Go 值得擁有。
3. Kotlin
Kotlin 最初作為用於 Android 開發的 Java 替代方案而迅速“上位”。憑藉著 Android 的增長、Google 的支援以及其簡潔的語法,它成為了 Android 開發者的一個可選方案,更是學習 Android 開發的不錯選擇。Kotlin 將成為 Android 開發的“最優”方案。
4. Scala
Scala 試圖取代 Java,但開發者似乎不太認可。它沒有來自任何大公司的大力支援,另外,由於 Scala 是一門函數語言程式設計語言,以及對 JVM 的依賴,使得它並沒有得到太多的普及,雖然會有穩定的增長,但速度很慢,而且肯定不是適合初學者學習的語言。
5. Julia
Julia 旨在將 C 的速度和 Python 的簡便整合在一起,但奇怪的是,在 Stackoverflow 調查中並沒有體現 Julia 的受歡迎程度,但它在資料科學領域頗受歡迎,並且從長遠來看它也被視為 R 和 Python 的挑戰者。當然,Julia 會繼續增長,但對於工作和成長來說,Python 或 R 更好。
6. C#
C# 是用於 .NET 框架的程式語言,由微軟開發。它的受歡迎程度在過去幾年中基本保持不變,並將繼續保持類似的趨勢。這是特定於供應商的語言,因此如果需要在微軟提供的開發環境中工作,可以選擇此語言。最近,微軟已開源 .NET,因此它會出現一些上升趨勢,但它畢竟是特定於供應商的,因此不會受到太大影響。
7. Rust
Rust,Clojure 等是具有使用者基礎但不那麼流行的語言,所以人氣方面不會有太大的上升。

一圖勝千言

要了解頭部程式語言增長的清晰趨勢和現狀,可通過各種圖表來了解它。下圖描繪了一個非常清晰的現狀,即在舊的語言棧中,JavaScript 遠遠領先於其他的語言,並且將繼續在 Web 開發中佔據一席之地。C 和 C++ 共同與 Java 競爭,並且非常接近後者的地位。
Python 的受歡迎程度也越來越高,而且在過去的五年裡,它是唯一一個人氣不斷上升的語言。
新語言越來越流行,其中大多數語言都受到跨國公司如微軟、Google 和 Apple 等 IT 巨頭的支援。

開發者喜歡和希望學習的語言

從上面的表格和圖表我們可以看到,喜歡 Rust 的人數在過去五年中正在逐步增長,而 Swift 慢慢失去了開發者的喜愛,Python 則處於這兩者之間。
另一個獨特的觀察結果是,開發者喜愛的 5 門語言中有 4 門來自 2000 後誕生的程式語言,且只有 Python 是較舊的語言,對 Kotlin 的喜愛則是從 2017 年 Google 官方支援它作為 Android 開發的一級語言開始。
從上表可以看出,開發者使用 JavaScript 和 Python 進行開發的願望在過去幾年中不斷增長,這反映了大眾對這兩門語言的喜愛。另外,Java 在這方面的資料則出現了急劇下降的趨勢,這是因為 Kotlin 成為了 Android 開發的替代方案,以及 Oracle 對使用 Java 的政策發生了變化。

技術和程式語言

在此圖中,我們可以看到最大的簇集是 Web 開發和 JavaScript 以及它們的各種框架。第二大簇集是微軟技術和 Python 技術,這裡又再次印證開發者對該語言的歡迎和熱愛。其中 Python 技術的簇集主要與資料科學技術相關,這些技術與 Python 的增長息息相關。

TIOBE 指數

用於對程式語言進行排名的 TIOBE 指數基於搜尋引擎的搜尋結果。在 TIOBE 指數中, Java 在過去二十年中一直佔據主導地位,C 在過去三十年裡也一直保持著第一或者第二的位置。而在過去的二十年裡, Python 的排名飛速增長,從 1999 年的第 24 名,到 2019 年的第 3 名。
在新語言(2000 年後誕生)中,Rust 的排名上升明顯,從第 33 位升至第 28 位,Julia 也從第 50 位升至第 39 位。值得注意的是,Kotlin 似乎從未進入過前 20 名。

PYPL 指數

PYPL 指數的來源主要是通過分析語言在 Google 上的搜尋頻率。被搜尋得越多意味著該語言就越受歡迎。原始資料來自 Google Trends。
由下圖可見,TOP 3 的程式語言分別是 Python, Java 和 JavaScript。C#, PHP 和 C/C++ 也處於頭部位置,這種趨勢類似於 Stackoverflow 的語言流行度和 TIOBE 指數。
上圖顯示,在新的程式語言中,即 2000 年後誕生的 Kotlin, Go, Rust 和 Julia,它們的排名也在不斷上升。

就業市場與薪酬

薪酬取決於產品的地理區域和需求,基於程式語言的薪資比較只是預測或估計薪資趨勢的工具。我們根據程式語言的流行調查對薪資進行了彙總,即 2018 年的 Dice 薪資調查和 2018 年和 2019 年的 Stackoverflow 薪資調查。
從上表可以看出,Go 開發是市場上薪酬非常高的工作,在 2019 年的 Stackoverflow 調查和 2018 年 Dice 薪資調查中,它都在高薪工作中排名第一。原因其實很簡單,因為 Go 是 Google 支援的語言,主要用於 Google 內部,另外 Google 希望推廣這種語言所以自然會用高薪來吸引開發者。
這裡要提一個經濟術語——價格彈性,企業對崗位的需求具有彈性,這就導致崗位的薪酬不穩定。因此很明顯,全球平均工資不是選擇語言的合理因素。
假如存在一門接近衰亡的程式語言,但應用它的遺留系統很少,因此為了維護這些產品,公司往往提供非常高的薪酬,不過這些職位總是十分稀有。另一方面,由於主流語言提供了大量的工作崗位,平均工資自然就會下降。
作為結束語,可以看到預測程式語言的趨勢十分簡單,但只選擇一門語言來學習是一個非常艱難的抉擇,這完全取決於個人選擇和他們未來的計劃。
例如,如果你想從事 Web 開發工作,那麼你就不能忽視 Javascript;如果你想從事 Apple 產品的開發工作,絕對不能無視 Swift;如果你青睞於系統的底層開發,那麼 C 和 C++ 會是你的好朋友。Python 則會讓你在很多領域跑得更快,不過目前主要用於資料科學。
所以,每種語言都會帶您踏上不同的旅程。選擇目的地,你需要做的就是使用通往終點的語言。