我們最近討論過,那些被世界銀行定義為高收入水平的已開發國家,在選擇使用什麼型別的技術方面,和世界上的其他地方往往有著較大的區別。這類區別中,差異最大的例子之一,就是 Python 程式語言。如果只統計高收入國家的資料,這幾年間 Python 的增長量遠超過諸如 StackOverflow 趨勢工具中顯示的全球軟體開發工具的增長情況。
今天,我們將深入挖掘一下近五年裡 Python 程式語言爆炸性增長的細節資料,主要以高收入國家使用者產生的 StackOverflow 流量為指標。當然,我們很難精確定義像“增長速度最快”這樣的說法,但我們還是找到了 Python 是近年來增長速度最快的主要程式語言的決定性證據。
除非特別表明,本文以下討論的所有資料均僅統計高收入國家範圍內;這些流量主要來自比如美國、英國、德國、加拿大等已開發國家,佔了 StackOverflow 總訪問量的約 64%;其他一些國家,比如印度、巴西、俄羅斯和中國當然也為全球軟體開發生態系統做出了巨大的貢獻,限於篇幅本文對此不再詳細討論,但我們也能看到, Python 在這些國家中也表現出增長的趨勢。
這裡要先強調一點,某種語言的使用者數量並不能用於衡量某個語言的質量:我們只是單純描述開發者使用程式語言的情況,並沒有對此做出任何評判。
高收入國家中 Python 語言的增長情況
從 StackOverflow 趨勢工具上,我們能看到近幾年 Python 的增長勢頭一直非常迅猛。但如果光考慮高收入國家的情況又如何呢?我們的統計口徑是每個問題的閱讀量,而不是回答數量——雖然二者結果類似,但閱讀量的每月干擾較小,特別對較小的標籤更是如此。
對於 StackOverflow 問題的閱讀量,我們能獲得的統計資料是從2011年末至今。在此範圍內,我們將 Python 和其他5中主要的程式語言進行對比。(注意:這個統計範圍比趨勢工具分析的範圍要小,趨勢工具的資料是從2008年至今。)這些程式語言是目前 StackOverflow 上高收入國家的使用者訪問量最多的10大標籤中的6個 —— 其他4個沒有列入對比的是 CSS 、 HTML、Android、和 JQuery。
從資料上來看,2017年6月,Python 首次超過 Javascript,成為 StackOverflow 上閱讀量最高的標籤。其中, Python 在美國和英國是國內閱讀量第一,在其他幾個高收入國家則略微小於 Java 或者 Javascript ,屈居亞軍。這可是相當引人注目的成就,要知道在2012年,它比其他5個程式語言都低,而短短的幾年內就增加了2.5倍。當然這部分原因是由於 Java 每季度的訪問變化規律:由於在大學課程中 Java 的佔比相當大,所以 Java 的閱讀量在每個學期期中和期末階段會迎來一個高峰,而到了暑假期間則相對回落。在今年底 Java 是否有可能再度反超 Python 呢?我們用了個趨勢分析模型“STL”,將季度性的變化和總體的增長趨勢進行整合,並對接下來兩年的增長趨勢進行了預測:
根據這個模型,Python 有可能繼續保持領先,也有可能在今年秋季被 Java 暫時超過(這些都在模型預期的變動範圍內),但很明顯,在2018年 Python 將毫無疑問成為閱讀量排行第一的標籤。 STL 模型還推測, Java 和 Javascript 將會繼續保持在比較相似的水平,正如它們前兩年中的趨勢一樣。
總體上看哪個標籤增長的最快?
上述資料都僅限在訪問最多的6大程式語言中。但在目前各種技術百花齊放的時候,到底誰才是當下在高收入國家裡增長最快的技術呢?
我們決定以2016年度和2017年度的閱讀量增長率為指標,分析了各大程式語言( Java 和 Python 之類)以及各種平臺(比如 iOS、Android、Windows 和 Linux)的資料,不過沒有包括類似 Angular 這樣的框架或者 Tensor Flow 這樣的工具(雖然它們很多也展現出了不俗的增長勢頭,也許我們之後會另文討論)。
由於在不同體量和增長數量上的差異,單純的增長率數字是不具有可比性的。因此,我們使用了一張平均差圖來對比每個標籤的總量和增長率。
如圖所示,擁有 27% 年增長率的 Python 可謂獨佔鰲頭:基數大的標籤中增長最快,增長快的標籤中總量最大。與其增長率類似,總量排在第二大的是 R 語言。在高收入國家,大部分總量較大的標籤的流量都保持相對穩定,除了 Android 、iOS 和 PHP 有些微的減少。之前我們還討論過的 Objective-C 、 Perl 和 Ruby 都有比較明顯的縮減。各種函數語言程式設計語言中, Scala 是總量最大增長情況也最好的,而 F# 和 Clojure 則總量很低,又呈減少趨勢,只有 Haskell 保持居中穩定態勢。
不過上圖中有一個特殊的成員無法顯示,那就是 Typescript 。它的相關問題閱讀量在去年增長了 142% 以至於沒法擺在圖上。同時,你還能看出有許多相對較小的語言的增長速度也和 Python 持平或更高(比如 R、 Go 和 Rust),而 Swift 和 Scala 也顯示出了令人印象深刻的增長勢頭。那麼他們的總閱讀量情況和 Python 相比如何呢?
類似 R 和 Swift 這些語言的增長速度確實頗為可觀, TypeScript 更是在這麼短的時間內翻了一番多。這些較小的程式語言的發展,幾乎都是從完全默默無聞,到如今在軟體生態系統中佔有了不可忽視的份額。但根據這張圖表我們可以看出,對於總量相對較小的語言,要更快地擴張還是相對容易的。
請注意我們並不是把這些語言和 Python 進行對比,只是嘗試解釋這些語言的增長速度和總量的關係——這些語言都還有非常廣闊的前景。但在目前的統計資料中, Python 確實是獨樹一幟:它既是這些語言中總閱讀量最大的,也是增速最快的之一。(事實上,它的增速還在加快!從2013年以來,每年的平均增長率都在提高。)
放眼全球
至此,我們已經分析了高收入國家中 Python 語言的相關趨勢。在全球的其他國家,比如印度、巴西、俄羅斯和中國, Python 是不是也有著類似的增長情況呢?
答案是肯定的。
在其他國家和地區, Python 依舊是增長最快的主要程式語言,它原先也還是保持著較低的水平,比高收入國家遲了兩年(2014年)才開始高速增長。事實上,在非高收入國家的使用者中, Python 相關標籤的閱讀量年增長率甚至比高收入國家的還稍微高一點點。雖然上圖沒有顯示,但另一門使用量和GDP呈正相關關係的程式語言: R 語言的訪問量在這些國家裡也呈增長趨勢。
本文中,關於問題標籤閱讀量增減情況(而不是絕對的排行)的許多結論都是基於高收入國家的資料,但在其他國家和地區也同樣成立。在這兩種不同區域間的增長率資料的斯皮爾曼相關係數達 0.979。在部分情況下——比如在 Python 語言的增長——你可以看到存在某種像是“延遲”的現象:當一種技術在高收入國家中廣泛普及後一兩年,才逐漸擴充套件到全球範圍。
下一步研究方向
我們寫這篇文可不是為了引戰。某種語言的使用者量並不能代表它的質量,當然也不能告訴你對於某種特定情況用哪種語言來解決更好。帶著這樣的觀點,我們相信,通過類似研究,我們可以瞭解到當前的軟體開發生態是由哪些語言組成的,以及據此推測整個產業將會往什麼方向改變。