📖 ZKIZ Archives


如果辦一屆編程奧運會,哪個國家能奪金?

世界上哪個國家的程序員最優秀?

很多人可能會猜是美國。畢竟,比爾·蓋茨、肯·湯普森、丹尼斯·里奇和高德納這些鼎鼎大名的程序員都來自美國。但與此同時,印度也不示弱,它的程序員隊伍正在飛速壯大。俄羅斯程序員亦在國際上有著不小的名聲。比如今年美國民主黨全國委員會郵件遭泄,引發所謂的“郵件門2.0”事件,給美國大選都造成了不小的影響,美國方面就認為是俄羅斯黑客所為。

那麽哪個國家的程序員最為優秀呢?我們不妨從編程競賽的角度,對各國作一番評比。

HackerRank是一家經常性地提供編程測試的網站,發布過數以萬計的編程難題,幫助開發者提升編程技能。它吸引了來自世界各地的幾十萬開發者的參與,分成算法、安全、分布式系統等15個不同的競賽類別,允許各種不同的編程語言,包括Java、C++、PHP、Python、SQ等。這個社群逐日擴張,現在已經有超過150萬名開發者參與競賽。HackerRank將參賽人數最多的50個國家和地區提出來,作了一個評比,評分過程既考慮了準確度也考慮了答題速度,並作了一定的數據處理,使難度各異的不同類別具備可比性。

中國綜合實力居首

從HackerRank的統計數據來看,得分最高的是中國,俄羅斯緊隨其後。中國程序員在數學、函數式程序設計和數據結構競賽中獨領風騷。

俄羅斯主導了最受歡迎、競爭最激烈的算法競賽。算法競賽中包含數據排序、動態規劃、關鍵詞搜索等各種邏輯任務。由於算法考試常在程序員面試中唱主角,所以很多程序員都會用算法競賽練手。這也在一定程度上解釋了這個類別的高人氣。

再來看看開頭提到的美國和印度,雖然HackerRank的參賽者絕大多數都來自美國和印度,但這兩個國家都沒有進入前25,只分列第28和31位。

HackerRank員工張世彌(音)是一位來自中國重慶的軟件工程師,在HackerRank的函數式程序設計競賽中躋身前十。對於中國程序員的出色表現,他作了這樣一個分析:“和其他國家比起來,中國大學的教育資源相對有限,所以學生在走程序這條路的時候,面臨的選擇也比較少。很多優秀學生都去參加編程競賽了,因為這些競賽提供了其中一條出路。”

“中國還有很多學生從初高中時代就開始編程了,而且專啃全世界都鮮有人能夠解答的難題。中國還舉辦專門針對年輕程序員的編程競賽,比如全國青少年信息學奧林匹克聯賽(NOIp)和全國青少年信息學奧林匹克競賽(NOI),每年都會在國內選拔4名選手出征國際信息學奧林匹克競賽(IOI),今年派出的4人當中就有3人奪金,1人奪銀。這種趨勢已經維持了將近十年。”

張世彌補充說,“而且其中還有一個特殊的規則:選手在贏得金牌以後就不能繼續參與下一屆比賽了,所以但凡是奪金的中國選手都是首次出征便得勝歸來的。可見他們有多優秀。”

各國程序員的偏好與特色

相對而言,中國程序員對數學類競賽表現出了特別濃厚的興趣,也順理成章地拿下了這一類別的冠軍。與此同時,捷克開發者對Shell的偏愛也非其他國家能及,並且也稱霸該領域。

就編程語言來看,在絕大多數國家,程序員參賽用的最多的都是Java,但也有少數是例外,比如馬來西亞和巴基斯坦程序員最多用的是C++,中國的程序員最多用的是Python。

程序員在參與HackerRank的競賽時,如果沒有取得任何進展就放棄了,也會留下一個分數,分值為零。瑞士的零分用戶占比最低,僅為2.5%,因此可以說,瑞士程序員是世界上最堅持不懈的程序員。中國程序員在這一項上排名居中,零分用戶比例為4%。最容易放棄的是巴基斯坦的程序員,零分用戶比例達到10.1%,這個國家的總體得分也是50個國家與地區中最低的。

綜合來看,如果我們今天舉辦一場編程奧運會,那麽獎牌榜排名前三的國家將依次是中國、俄羅斯和波蘭。美國和印度若想進入前25,還得再下一番功夫才行。

PermaLink: https://articles.zkiz.com/?id=213572

Next Page

ZKIZ Archives @ 2019