StackOverflow 調查:富裕國家流行 Python 和 C 語言,低收入國家愛用 PHP
英文原文:A Tale of Two Industries: How Programming Languages Differ Between Wealthy and Developing Countries
在這個大數據內容和 AI 每天都搶占頭條的年代,每個人似乎都想學習一點編程知識,似乎掌握了編程技術以后,走上人生***就不再是夢。但是其實,在一開始,連選擇學習哪種編程語言,都是需有講究的。一位數據分析師,在對 IT 技術問答網站 Stack Overflow 上不同技術標簽的訪問量進行分析后,認為全球的軟件開發生態其實一分為二,不同國家風靡的編程語言,實際上也大有不同。你以為是自己選擇了一種編程語言,殊不知,也許是這種編程語言,選定了你。
在 Stack Overflow,我們有志于使用我們的數據來分享有關全球軟件開發社區的見解。最近發布的關于??手機移動端開發者的帖子??就是一個好例子:這篇帖文探索了世界各地訪問 Android 相關問題的流量,發現低收入國家比高收入國家更經常使用 Android 系統。
這篇帖子使我們想知道富國和窮國之間的編程技術有何不同,以及這會如何影響我們對全球軟件開發行業的看法。在本文中,我們將探討這些差異,并證明在軟件開發行業中,將高收入國家和世界其他地區區分看待,是有益的。
本文中探討的所有分析都是在 2017 年 1 月至 8 月期間展開的,我們選擇了那段時間流量***的 250 個標簽進行研究。為了減少其他不必要的影響,我們只分析了在這段時間內至少貢獻了 500 萬次問題訪問量的 64 個國家。值得注意的是,這些數據代表了那些了解英語的開發者們的活動。一些針對西班牙語和葡萄牙語網站的分析表明,類似的趨勢同樣出現在非英語國家,比如墨西哥和巴西。
科技與人均 GDP 相關
在最近的一篇文章中,我們看到關于 Android 問題的流量(占一個國家 Stack Overflow 訪問量的百分比)往往與一個國家的人均 GDP 呈負相關。 這不禁讓我們懷疑,其他標簽是否也有這樣的相關性。
當我們搜索主要的編程語言和平臺時,除了 Android 之外,還有一些也比較突出,包括 PHP,Python 和R.
標簽流量 vs 人均 GDP
流向 Android 和 PHP 的流量數與一個國家的人均收入水平呈負相關,而 Python 和R的話題流量則與國家人均收入水平呈正相關。但無論哪種情況,我們都可以看到有一些例外(韓國使用 Android 的人數比我們預期的要多,中國則更多人使用 Python),但通常情況下,相關性的呈現還是比較明顯的。 (在調整并進行多次測試之后,每個R^2 值都在 0.5-0.6 之間,p值<10^-6)。
在此有必要強調一下,我們并不是要指出這當中必然存在的因果關系;也不是說選擇哪種編程語言會影響一個國家的平均收入;也不是說一個國家的財富水平直接影響他們對科技的使用。我們懷疑造成這些相關性的原因可能由各種經濟和社會因素混合而成的(比如,教育水平,軟件行業的發展時間,外包水平),總的來說,這些因素通常都與一個國家的財富相關聯。
我們如何將軟件開發行業分為兩部分?
當我們研究這種趨勢時,把國家分為兩組:高收入國家和非高收入國家,而不是把所有國家混在一起考慮。國家的財富水平,作為一種既有分類,我們可以引用世界銀行的資料數據。下圖顯示的是按人均 GNI(國民總收入)為標準,各國呈現出的不同財富水平。
圖中共有 78 個高收入經濟體,除了美國、加拿大,還有一些西歐國家,部分中東和東亞國家,以及澳大利亞/新西蘭。我已經做過一些關于國家間差異的基本原因分析(如主要成分分析),證明這是一個合理的劃分方法,并且這種劃分方法比其他劃分方法更有意義,例如按國家的地理位置,如東半球與西半球來歸類國家。 例如,來自澳大利亞的用戶所訪問的科技標簽,通常更接近美國和歐洲的訪問情況,而不是中國或印度尼西亞的。
根據收入分類,排行 Stack Overflow 的流量主要來自哪些國家
這種區分方法將 Stack Overflow 流量分為三分之二和另外三分之一:Stack Overflow 上 63.7% 流量來自高收入國家。 這可能是由于高收入國家軟件開發量占全球比例更大,更多人口能享受互聯網,以及英語用戶數量較多的緣故。來自非高收入國家的大部分流量來自印度,其次是巴西,俄羅斯和中國。
高收入國家在使用的技術上有何不同?
我們現在將軟件開發世界分為兩部分。 高收入國家和非高收入國家在技術使用方面有何不同?
高收入國家和低收入國家在訪問技術標簽上的差異
我們從圖中可以得出幾個有趣的見解:
數據科學技術上的差異:正如我們前面看到的,Python 和R與一個國家的收入呈正相關。在高收入國家,Python 標簽的訪問頻率是世界其他地區的兩倍,而R標簽的訪問量大約是其他國家的三倍。我們也可能會注意到,在比較小眾的標簽中,許多科學領域的重大轉變是由 Python 語言和R語言編寫的,例如 Panda,numpy,matplotlib 和 ggplot2。這說明,高收入國家更多人使用這兩種語言可能是因為在高收入國家,科學技術和學術研究更受到重視。這就能夠解釋,為什么在較富裕的工業化國家這兩種語言更為常見。往往在高收入國家中,科學研究占經濟的比重較大,同時,這些國家的程序員更有可能具備高學歷。
C/C ++:C/C ++ 是另外兩種著名的編程語言,受到高收入國家的青睞。一個假設是,這可能與教育有關:正如我們在??之前的文章??中能看到的,C和 C++ 語言尤其受到美國各大學的青睞。當然,這也可能與電子行業和制造業的全球地理分布有關。
PHP 和 Android:在之前的文章中,我們探討了全球的 Android 開發,Android 系統在較低收入國家更受歡迎。PHP 是一種受較低收入國家顯青睞的語言。 CodeIgniter 是一個 PHP 開源框架,這個技術標簽在低收入國家的訪問量***,遠遠超過來自其他國家的訪問量,是一個訪問量地域分布極不平衡的標簽。 進一步的檢查表明,這個標簽在南亞/東南亞地區(特別是印度,印度尼西亞,巴基斯坦和菲律賓)的訪問量特別大,而來自美國和歐洲的訪問量就很少。 可能許多外包公司,在構建網站的時候,就常常會選擇 CodeIgniter。
結論:為什么做這種研究很有必要?
我當然對這些結果十分感興趣, 因為我認為它們展示了編程語言生態系統中有趣的事實。 它們也將對我們在不久的將來會發布的其他數據研究,產生影響。
當我們提出有關軟件開發行業的問題時,重要的是我們要明白,我們其實是“混合”著回答了兩個分開的問題,因為軟件開發行業本身,就是依據國家的收入水平,一分為二的。
知曉將這個行業一分為二的原因,則會給我們提供更多的信息。
例如,我們通常有興趣了解哪些技術標簽可以帶來最多流量,例如查看 Flash 技術標簽的人隨著時間推移,逐漸減少。 如果我們要創建一個擁有最多訪問次數的編程技術清單,那么高收入和低收入國家的清單將會非常不同:
根據國家收入排名人們最常訪問的編程技術標簽
例如,截止到 2017 年,Python 是高收入國家中訪問次數第二高的技術標簽,但在世界的其他地區,它的訪問量排名只能排到第八位。我學習的語言,R語言,是高收入國家中訪問量排名第 15 的標簽,但它的訪問量在世界其他地區甚至沒有進入前 50。
當我們使用 Stack Overflow 上的數據來了解開發者生態時,我們很有必要了解軟件開發中兩個不同的世界,這是一條很重要的背景知識,意味著一位對這個行業的未來非常感興趣的美國技術招聘人員,一個不確定要學習什么編程語言的印度學生,和一名想要了解肯尼亞科技公司的投資者,他們對于各種編程語言的看法,可能都會非常不同。
在未來的文章中,我們有時會回顧這一劃分,這將有助于我們繼續探索全球開發者生態。