在這個大數據和 AI 每天都搶佔新聞頭條的年代,每個人似乎都想學習一點程式,認為掌握了程式技術以後,走上人生巔峰就不再是夢。但是其實,在一開始,連選擇學習哪種程式語言,都是需有講究的。
一位資料分析師,在針對了 IT 技術網站 Stack Overflow 上各類型的不同技術標籤,所可檢視到的瀏覽量的多寡進行分析,再搭配不同IP地址的區域來源,有了一個有趣的發現。過去我們說現在哪一種哪一種程式語言最熱門,或許這種說法是不對的,在程式設計領域可能不能這麼簡單的論定全世界所有的程式設計趨勢都是如此。
他認為全球的軟體開發生態其實一分為二,不同國家、地區,所流行的程式語言,實際上也大有不同。你以為是自己選擇了一種程式語言,殊不知,也許是這種程式語言,選定了你。
在 Stack Overflow,我們有志於使用我們的資料來分享有關全球軟體開發社區的見解。最近發佈的關於的一篇文章「Where in the World is Mobile Development?」就是一個好例子:這篇文章探索了世界各地瀏覽 Android 相關問題的流量,發現低收入國家比高收入國家更經常使用 Android 系統。
這篇分析使我們想知道富國和窮國之間注重的程式技術有何不同,以及這會如何影響我們對全球軟體開發行業的看法。在本文中,我們將探討這些差異,並證明在軟體開發業中,將高收入國家和世界其他地區區分看待,是有益的。
本文中探討的所有分析都是在2017年1月至8月期間展開的,我們選擇了那段時間流量最高的250個標籤進行研究。為了減少其他不必要的影響,我們只分析了在這段時間內至少貢獻了500萬次流量的64個國家。值得注意的是,這些資料代表了那些瞭解英語的開發者們的活動。一些針對西班牙語和葡萄牙語網站的分析表明,類似的趨勢同樣出現在非英語國家,比如墨西哥和巴西。
科技與人均GDP相關
在最近的一篇文章中,我們看到關於 Android 問題的流量(佔一個國家Stack Overflow瀏覽量的百分比)往往與一個國家的人均 GDP 呈負相關。 這不禁讓我們懷疑,其他標籤是否也有這樣的相關性。
當我們搜索主要的程式語言和平台時,除了 Android 之外,還有一些也比較突出,包括 PHP,Python 和R.
流向 Android 和 PHP 的流量數與一個國家的人均收入水平呈負相關,而 Python 和R的話題流量則與國家人均收入水平呈正相關。但無論哪種情況,我們都可以看到有一些例外(韓國使用 Android 的人數比我們預期的要多,中國則更多人使用 Python),但通常情況下,相關性的呈現還是比較明顯的。 (在調整併進行多次測試之後,每個R^2值都在0.5-0.6之間,p值<10^-6)。
在此有必要強調一下,我們並不是要指出這當中必然存在的因果關係;也不是說選擇哪種程式語言會影響一個國家的平均收入;也不是說一個國家的財富水平直接影響他們對科技的使用。我們懷疑造成這些相關性的原因可能由各種經濟和社會因素混合而成的(比如,教育,軟體業的發展時間,外包),總的來說,這些因素通常都與一個國家的財富相關聯。
我們如何將軟體開發業分為兩部分?
當我們研究這種趨勢時,把國家分為兩組:高收入國家和非高收入國家,而不是把所有國家混在一起考慮。國家的財富作為一種既有分類,我們可以引用世界銀行的資料數據。下圖顯示的是按人均 GNI(國民總收入)為標準,各國呈現出的不同財富水平。
圖中共有78個高收入經濟體,除了美國、加拿大,還有一些西歐國家,部分中東和東亞國家,以及澳洲/紐西蘭。我已經做過一些關於國家間差異的基本原因分析(如主要成分分析),證明這是一個合理的劃分方法,並且這種劃分方法比其他劃分方法更有意義,例如按國家的地理位置,如東半球與西半球來歸類國家。 例如,來自澳洲的用戶所瀏覽的科技標籤,通常更接近美國和歐洲的情況,而不是中國或印度尼西亞的。
這種區分方法將 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 系統在較低收入國家更受歡迎。PHP 是一種受較低收入國家顯青睞的語言。 CodeIgniter 是一個 PHP 開源框架,這個技術標籤在低收入國家的瀏覽量最大,遠遠超過來自其他國家,是一個瀏覽量地域分佈極不平衡的標籤。 進一步的檢查表明,這個標籤在南亞/東南亞地區(特別是印度,印尼,巴基斯坦和菲律賓)特別大,而來自美國和歐洲的量就很少。 可能許多外包公司,在構建網站的時候,就常常會選擇 CodeIgniter。
結論:為什麼做這種研究很有必要?
我當然對這些結果十分感興趣, 因為我認為它們展示了程式語言生態系統中有趣的事實。
當我們提出有關軟體開發業的問題時,重要的是我們要明白,我們其實是「混合」著回答了兩個分開的問題,因為軟體開發行業本身,就是依據國家的收入水平,一分為二的。
知曉將這個行業一分為二的原因,則會給我們提供更多的資訊。
例如,我們通常有興趣瞭解哪些技術標籤可以帶來最多流量,例如查看 Flash 技術標籤的人隨著時間演變,逐漸減少。 如果我們要創建一個擁有最多瀏覽次數的程式技術清單,那麼高收入和低收入國家的清單將會非常不同:
例如,截止到2017年,Python 是高收入國家中瀏覽量次數第二高的技術標籤,但在世界的其他地區,它瀏覽量排名只能排到第八位。我學習的語言,R語言,是高收入國家中排名第15的標籤,但它在世界其他地區甚至沒有進入前50。
當我們使用 Stack Overflow 上的資料來瞭解開發者生態時,我們很有必要瞭解軟體開發中兩個不同的世界,這是一條很重要的背景知識,意味著一位對這個行業的未來非常感興趣的美國技術招聘人員,一個不確定要學習什麼程式語言的印度學生,和一名想要瞭解肯亞科技公司的投資者,他們對於各種程式語言的看法,可能都會非常不同。
- 本文授權轉載自:36kr(36氪)
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!