寫在前面:一直以爲中國的程序員想法多,肯鑽研肯學習,但殊不知道原來中國的程序員是世界上最牛的程序員。說來可能不信,但根據HackerRank官網的一篇報道,數據顯示中國的程序員就是世界上最牛的程序員。特將此文翻譯成中文,分享給你們。程序員
若是問哪裏的程序員最牛,不少人確定會認爲是美國。畢竟美國擁有不少傑出的程序員,如比爾·蓋茨、 肯·湯普森、 C 語言之父丹尼斯·裏奇、唐納德·克努特。可是,這些年,印度的程序員規模增加是全世界最快的,俄羅斯的黑客也愈來愈鋒芒畢露。有什麼辦法來肯定哪一個國家的程序員是最牛的嗎?算法
在HackerRank網站上,哪些國家在編程挑戰賽中表現最厲害呢?經過數據,咱們但願能夠找到問題的答案。shell
在 HackerRank網站上,爲了幫助程序員提升技能,咱們舉行過數以千計的編程挑戰賽。來自世界各地成千上萬的程序員參加了這些挑戰賽,從 Python 到算法到安全到分佈式系統都有涉及。咱們的社區也有超過150萬開發者的排名,而且社區的人數天天都在增加。編程
根據咱們的數據顯示,中國和俄羅斯擁有最具才華的程序員。中國程序員在數學、功能程序設計和數據結構方面超過了世界其餘國家的程序員,而俄羅斯程序員則在算法領域佔據主導地位,算法也是最流行和最具競爭力的領域。雖然美國和印度在HackerRank上也有很多優秀的程序員,但他們也只能排在第28和第31。安全
一、總體綜合排名數據結構
咱們先從程序員中最受歡迎的測試類型開始分析。HackerRank程序員可選擇參與15個不一樣領域,下表顯示了各個領域的比例 :架構
遙遙領先的領域是算法領域,這個領域獲得了近40%的程序員青睞。這個領域包括數據排序,動態編程,搜索關鍵字和其餘基於邏輯的任務方面的挑戰。對於算法測試,程序員可以使用他們選擇的語言,這可能也解釋了該領域如此受歡迎的部分緣由。排在第二位和第三位的Java和數據架構分別都佔到了接近 10%的比例。而分佈系統和安全的佔比最低。 那麼,基於這些測試,哪一個國家的程序員總體得分最高呢?框架
爲了弄清楚,咱們查看了各個國家所在領域的平均得分。計算平均得分前咱們又爲每一個領域制定了打分標準(經過從每一個分數減去平均值,而後除以標準差,也稱爲z分數),這樣的話,即便每一個領域的難度有差別,但咱們也能對不一樣領域的我的打分,並造成從總體到個體的比較體系。爲了讓結果更直觀,咱們根據 z 分數框架的原理,作了一個 1-100 分數框架來解釋。編程語言
咱們統計了 HackerRank 上程序員最多的 50 個國家,得出下面這張表單:分佈式
因爲中國的程序員得分最高,因此將中國的分數做爲 100 的基準分,則俄羅斯的分數爲 99.9 ,兩國僅相差 0.01 。另外,波蘭和瑞士也以 98 的高分進入前列。巴基斯坦得分僅爲 57.4 。
印度和美國爲全世界貢獻了最多的程序員,但沒有進入榜單的前 25名 ,只分別以 76 和 78 的分數排名 31 和 28 。
二、特定領域排名
雖然中國的排名很出衆,但也不僅是雄霸全部榜單。哪一個國家的程序員在特定領域的表現最好?咱們來看看各個領域中上榜的國家。
能夠看到中國在一些領域至關出色。中國程序員在在數據結構、數學和函數式編程方面戰勝了其餘國家的程序員。另外,俄羅斯程序員在挑戰舉辦最多的算法領域也摘得桂冠。其次是分別處於第2、第三位置的波蘭和中國。
怎麼解釋不一樣國家在不一樣領域的水平差別?有多是由於俄羅斯的程序員更喜歡參加算法類的比賽,也就會在這一領域投入更多精力,而大部分中國程序員則更喜歡參與數據結構類的項目。
在HackerRank工做的一個軟件工程師就是這樣的,他叫Shimi Zhang,是咱們函數型編程領域排名前十位的程序員之一。他來自中國重慶市,兩年前來到美國攻讀計算機科學碩士,而後來到HackerRank工做。
來自中國的頂尖程序員Shimi Zhang就中國程序員的不一樣凡響之處表達了他的見解: "和其餘國家相比,中國的高等教育資源比較少,中國的年輕人學習編程的路原本就窄。不少非凡的年輕人在獲得來之不易的變成比賽,會真正癡迷於此。
在中國,不少年輕人在中學時期就開始自學編程了,甚至還嘗試解決的一些在全世界也沒有多少人能解決的難題。
舉辦專門針對青少年工程師的全國性競賽,如 NOIp ( 全國青少年信息學奧林匹克聯賽)和 NOI ( 全國青少年信息學奧林匹克競賽),今年至少有 3 我的在 NOI 中同時得到了冠軍。這種針對青少年舉行的編程比賽是近十年內的趨勢。
而且, NOI 中還有一個牛逼的特別規定:若是一位選手在 NIO 中得到了金牌,他就不能參加國際信息學奧林匹克競賽的中國隊選拔賽,這就意味着,在國際信息學奧林匹克競賽中得到金牌的中國選手,都是首戰告捷。"
三、不一樣國家程序員的偏好
接下來,咱們又比較了每一個國家程序員在不一樣挑戰賽上花費的時間,而後與HackerRank用戶平均花費的時長進行比較。這樣一來,就能找出不一樣國家程序員在特定領域的偏好了。
如上表所示,中國程序員在數學競賽中的參與度遠遠高於咱們預期的平均水平,這就能解釋爲何他們能在這個領域高踞榜首了。捷克人貌似很喜歡 shell,在這個單項他們是第一。
四、不一樣國家程序員的編程語言偏好
可是除了這兩個國家,其它國家的選擇偏好和擅長領域好像並無必然聯繫。咱們也想知道其餘國家的程序員對特定的編程語言是否有特殊嗜好。好比印度程序員是否是對C++更感興趣?墨西哥程序員是否是都用Ruby編碼?
總的來講,世界各地的程序員選用 Java 的比例都要高於其它語言(只有極少數的例外:如馬來西亞和巴基斯坦的程序員更喜歡 C++,臺灣的程序員更喜歡 Python )。而斯里蘭卡程序員也是JAVA比例使用最高的國家,在HackerRan中也排名排在第八的位置。
巴基斯坦、斯里蘭卡和尼日利亞目前排名位於低端,他們能夠學習學習瑞士的毅力。程序員在HackerRank社區上沒有努力就放棄了挑戰,得分爲零。瑞士的零記分用戶比例是最低,瑞士程序員也可謂稱得上世界上最頑強的程序員。 其實對於世界各地的程序員來講,不管你來自何處,都有可能成爲一下個蓋茨或者克努特。
根據這些數據,若是咱們舉辦一場黑客奧林匹克比賽,中國將贏得金牌,俄羅斯將得到銀牌,而波蘭則拿下銅牌。儘管美國和印度的程序員讓人值得稱讚,但想進入前25,仍是須要再繼續努力的。
翻譯的內容比較多,若有部分語句措辭不當的,歡迎指出。
原文出處:https://blog.hackerrank.com/which-country-would-win-in-the-programming-olympics/