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