哪個編程語言最流行?
經常有人問哪個編程語言最流行?這問題很簡單,但是回答起來可沒那麼簡單。
首先,我們要知道,為什麼人們會問這樣的問題?
一般問這樣的問題是人大多是學生,他們想知道這個問題的答案是因為他們想要找份工作,所以尋求一種可以增加面試成功率的技能。對於大多數人來說,進入一個新的領域時了解什麼是最流行的,是很有意義的。
而對於其他人來說,比如說已經掌握了一種或幾種編程語言的程序員,他可能在想要掌握一門新的編程語言時,會考慮一下當前最流行的編程語言作為參考。而對於要開發一個產品的程序員來說,也希望了解當前最流行的編程語言是因為他們希望所開發的產品能夠迎合客戶的環境和需求,顯然支持流行的語言的 API 會被更多人使用。
甚至,就算是你想啟動一個項目時,你也需要考慮是否選擇一個流行的編程語言。雖然你首先要考慮的是這種語言能夠滿足你的需求,比如說如果用一個流行的編程語言你需要花費更多的時間和成本,而不那麼流行的編程語言或許會更快捷和輕鬆,顯然你還是會選擇那個不太流行的——但是如果各個方面都差不多,不用說你會選擇流行的那個,因為這樣你可以找到更多的程序員,遇到問題也有更多的解決方案。
怎麼才算是流行?
那麼,哪個語言是最流行的?其實回答這個問題並沒有你想像的那麼簡單。關鍵是,你該怎麼定義這個「流行」?
這個問題並沒有固定的答案,不過在維基上有一篇文章提到了如何測量編程語言的流行度[1]。在這篇文章中,列出了幾個測量流行度的因素:
- 該語言在搜索中提及的次數,比如在谷歌趨勢中
- 在招聘廣告中提及該語言的次數
- 傳授和介紹該語言的書籍銷售量
- 以該語言編寫的現存代碼的行數,不流行的語言在公開搜索中可能根本就找不到
- 在 GitHub、Freecode 上使用該語言的項目數量
- 在論壇和新聞組中討論該語言的帖子數量
此外,你還可以考量如下指標:
- 編程培訓班裡面該語言的培訓課程銷售數量
- 編程培訓班裡面學生的數量
- 視頻網站裡面關於該語言的視頻數量
- Stack Overflow 和 Reddit 裡面關於該語言的帖子數量
甚至,你還可以增加一些其它的統計維度,比如根據國家和城市來統計,你知道在北京哪種編程語言最流行么?上海呢?
所以,這個問題的回答並不是一個簡單的答案。
統計數據來源的不同
即使我們知道了流行度取決於多種因素,但是人們還是希望能夠了解到底哪個語言比較流行,以此來指導他們的培訓和公司的決策。
有一些網站依據不同的標準,公開發布了一些語言流行度指標。 IEEE Spectrum[2] 對這些指標做了一個有趣的整合[3],它可以讓你通過自行設置不同因子的權重來得到你自己的編程語言流行度排行榜。
Coding Dojo 也有一個圖表[4],聚合了工作搜索引擎 Indeed.com 的數據;而有名的 Tiobe[5] 排行榜一直使用搜索引擎聚合來計算流行度; PyPl[6] 則是根據谷歌來查看語言的流行度。
然而,這並沒什麼大用。如果你想知道你該學習那種語言,或者是你需要支持的語言,最困難的還是你並不知道這裡的哪個圖表才是適合你的。
好吧,我明白了,那麼到底那種編程語言是流行的?
為了幫助你找到方向,我組合了上述提及的幾種數據源,包括三種 IEEE 分類:「趨勢」代表語言的增長度,「工作」代表 http://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 語言依然歷久彌新[7],而 Swift 雖然出現才幾年就登上了排行榜。你今天學習到的或許不夠你整個職業生涯揮霍,所以「怎樣學習語言」要比「學習語言」更重要,最好的辦法就是多學幾門。
我的推薦非常簡單,無論是 C++ 還是 Java,選一個學習就好了。然後是 JavaScript,越來越多的基於 Web 的應用需要良好的 JavaScript 技能。再然後是 PHP、Swift 或 Python 中選一個,這要看你的工作種類了。當你在這三個梯隊中都學會一門後,你就可以根據你的情況學習更多的語言和框架了。
好了,努力吧,學習一些編程語言,做點漂亮的成績出來。如果你有什麼想法,歡迎在下面和我們分享。
[1]: Measuring programming language popularity[2]: Interactive: The Top Programming Languages 2016[3]: Interactive: The Top Programming Languages 2016[4]: The 9 Most In-Demand Programming Languages of 2016 - Coding Dojo Blog[5]: TIOBE - The Software Quality Company[6]: PYPL PopularitY of Programming Language index[7]: What Happened in 1972 including Pop Culture, Prices, Events and Technology編譯自: Which programming languages are most popular (and what does that even mean)? | ZDNet
作者: David Gewirtz譯者: wxy
推薦閱讀: