哪種程式語言最流行?

發表於2017-01-03

經常有人問哪個程式語言最流行?這問題很簡單,但是回答起來可沒那麼簡單。

首先,我們要知道,為什麼人們會問這樣的問題?

一般問這樣的問題是人大多是學生,他們想知道這個問題的答案是因為他們想要找份工作,所以尋求一種可以增加面試成功率的技能。對於大多數人來說,進入一個新的領域時瞭解什麼是最流行的,是很有意義的。

而對於其他人來說,比如說已經掌握了一種或幾種程式語言的程式設計師,他可能在想要掌握一門新的程式語言時,會考慮一下當前最流行的程式語言作為參考。而對於要開發一個產品的程式設計師來說,也希望瞭解當前最流行的程式語言是因為他們希望所開發的產品能夠迎合客戶的環境和需求,顯然支援流行的語言的 API 會被更多人使用。

甚至,就算是你想啟動一個專案時,你也需要考慮是否選擇一個流行的程式語言。雖然你首先要考慮的是這種語言能夠滿足你的需求,比如說如果用一個流行的程式語言你需要花費更多的時間和成本,而不那麼流行的程式語言或許會更快捷和輕鬆,顯然你還是會選擇那個不太流行的——但是如果各個方面都差不多,不用說你會選擇流行的那個,因為這樣你可以找到更多的程式設計師,遇到問題也有更多的解決方案。

怎麼才算是流行?

那麼,哪個語言是最流行的?其實回答這個問題並沒有你想象的那麼簡單。關鍵是,你該怎麼定義這個“流行”?

這個問題並沒有固定的答案,不過在維基上有一篇文章提到了如何測量程式語言的流行度。在這篇文章中,列出了幾個測量流行度的因素:

  • 該語言在搜尋中提及的次數,比如在谷歌趨勢中
  • 在招聘廣告中提及該語言的次數
  • 傳授和介紹該語言的書籍銷售量
  • 以該語言編寫的現存程式碼的行數,不流行的語言在公開搜尋中可能根本就找不到
  • 在 GitHub、Freecode 上使用該語言的專案數量
  • 在論壇和新聞組中討論該語言的帖子數量

此外,你還可以考量如下指標:

  • 程式設計培訓班裡面該語言的培訓課程銷售數量
  • 程式設計培訓班裡面學生的數量
  • 視訊網站裡面關於該語言的視訊數量
  • Stack Overflow 和 Reddit 裡面關於該語言的帖子數量

甚至,你還可以增加一些其它的統計維度,比如根據國家和城市來統計,你知道在北京哪種程式語言最流行麼?上海呢?

所以,這個問題的回答並不是一個簡單的答案。

統計資料來源的不同

即使我們知道了流行度取決於多種因素,但是人們還是希望能夠了解到底哪個語言比較流行,以此來指導他們的培訓和公司的決策。

有一些網站依據不同的標準,公開發布了一些語言流行度指標。 IEEE Spectrum 對這些指標做了一個有趣的整合,它可以讓你通過自行設定不同因子的權重來得到你自己的程式語言流行度排行榜。

哪種程式語言最流行?

Coding Dojo 也有一個圖表,聚合了工作搜尋引擎 Indeed.com 的資料;而有名的 Tiobe 排行榜一直使用搜尋引擎聚合來計算流行度; PyPl 則是根據谷歌來檢視語言的流行度。

然而,這並沒什麼大用。如果你想知道你該學習那種語言,或者是你需要支援的語言,最困難的還是你並不知道這裡的哪個圖表才是適合你的。

好吧,我明白了,那麼到底那種程式語言是流行的?

為了幫助你找到方向,我組合了上述提及的幾種資料來源,包括三種 IEEE 分類:“趨勢”代表語言的增長度,“工作”代表 Dice.com 和 CareerBuilder 上的招聘量,“開源”代表開源專案數量。

排名結果如下表:

哪種程式語言最流行?
但是問題是,上圖並不能告訴我們重點所在。要解決這個問題,我們需要做一點資料分析。我聚合了這六個資料來源中的五個(我去掉了 Coding Dojo 是因為它僅顯示了前九),然後我根據程式語言出現在圖表中的位置和次數進行加權,這樣我得到了如下的前十排名。

哪種程式語言最流行?

如你所見,這些語言分成了三大類。第一梯隊包括 Java、C、Python 和 C++,毫無疑問,你肯定經常聽到它們的名字。第二梯隊包括 JavaScript、C#、PHP 和 Swift。剩下的兩個是 Objective-C 和 R。

這給我們帶來什麼啟發?

第一梯隊的語言 Java、C、Python 和 C++ 都是非常通用的語言,它們並不侷限於特定的程式設計平臺或用途。

最值得關注的是第二梯隊,它包括 JavaScript、C#、PHP 和 Swift。JavaScript 和 PHP 是主要的 Web 開發語言。C# 是微軟的程式語言,而 Swift 是蘋果新推出的主力語言。基本上來說,第二梯隊是平臺相關的。

那麼這反映了什麼?如果你懂一點現代程式設計,你就知道程式設計其實不僅僅是使用這種語言,而更重要的是開發一些什麼,比如說嵌入式系統、iPhone 應用、Web 應用或者微軟的伺服器端應用等等。

對語言的熟悉程度其實只是一小部分。舉個例子說,不管你是多麼的喜歡 Python 或者古老而常青的 C,但如果你要為 WordPress 開發外掛或主題,你只能使用 JavaScript 和 PHP。這無關於哪個語言更流行。

字裡行間的發現

或者你會注意到一些有趣的地方。

首先,Coding Dojo 的程式語言排行榜的第一名是 SQL,只有它一家是這樣。你很少會單獨在 SQL 裡面程式設計,通常都是在其它的語言裡面使用它來管理資料。所以,學會 SQL 是很有用的,甚至是必要的。然而,去上一門 SQL 的培訓課程並不能幫你找到一份工作,也不會多掙多少錢。

其次,蘋果特有的語言在排行榜中排名很低,這或許和你的預期不同,因為 iOS 的應用是如此的流行。不過確實是這樣的,如果你不是要開發你自己的應用的話,那學它們其實不如學習別的語言,因為其實沒有那麼多的公司僱傭蘋果應用開發人員。這就是 Swift 語言掉到了榜尾的原因,而 Objective-C 正在被  Swift 所替代,在前面也看到了它也處於榜單的後面。

C 家族的語言仍然是主流。Java、C++、C、C#,甚至 Objective-C 都是基於 C 的語言。如果你只想學一門語言,你可以從其中選擇一個。我推薦你選擇 Java 或 C++,它們可以為你開啟進入 C 語言家族的大門。

以我的職業生涯的經驗來看,不是特別複雜的場景的話,我大概能用 20 來種語言來程式設計,通常我只用幾天就可以學會一門新的語言。這是因為我在學校的專業就是語言設計,我也教程式設計超過了 20 年了。掌握這麼多的語言對我很有幫助,因為我總是根據我要做的事情選擇一種語言,而不是專門去上課學習一種語言。這聽起來好像有點難,但是其實你也能做到的。

我的建議就是,如果你要程式設計,那麼就去學習多種程式語言和各種框架吧。用程式語言去做點東西出來,程式設計不僅僅是一種智力鍛鍊,而且你可以實際用它做點什麼出來。

掌握多種語言和框架是重要的,因為計算機行業變得太快了。C 語言依然歷久彌新,而 Swift 雖然出現才幾年就登上了排行榜。你今天學習到的或許不夠你整個職業生涯揮霍,所以“怎樣學習語言”要比“學習語言”更重要,最好的辦法就是多學幾門。

我的推薦非常簡單,無論是 C++ 還是 Java,選一個學習就好了。然後是 JavaScript,越來越多的基於 Web 的應用需要良好的 JavaScript 技能。再然後是 PHP、Swift 或 Python 中選一個,這要看你的工作種類了。當你在這三個梯隊中都學會一門後,你就可以根據你的情況學習更多的語言和框架了。

好了,努力吧,學習一些程式語言,做點漂亮的成績出來。如果你有什麼想法,歡迎在下面和我們分享。

相關文章