一直覺(jué)得中國(guó)的程序員想法多,肯鉆研肯學(xué)習(xí),但卻不知道原來(lái)中國(guó)的程序員是世界上最牛的程序員。說(shuō)來(lái)可能不信,但根據(jù)HackerRank官網(wǎng)的一篇報(bào)道,數(shù)據(jù)顯示中國(guó)的程序員就是世界上最牛的程序員。特將此文翻譯成中文,分享給大家。
如果問(wèn)哪里的程序員最牛,很多人肯定會(huì)認(rèn)為是美國(guó)。畢竟美國(guó)擁有很多杰出的程序員,如比爾·蓋茨、 肯·湯普森、 C 語(yǔ)言之父丹尼斯·里奇、唐納德·克努特。但是,這些年,印度的程序員規(guī)模增長(zhǎng)是全世界最快的,俄羅斯的黑客也越來(lái)越鋒芒畢露。有什么辦法來(lái)確定哪個(gè)國(guó)家的程序員是最牛的嗎?
在HackerRank網(wǎng)站上,哪些國(guó)家在編程挑戰(zhàn)賽中表現(xiàn)最厲害呢?通過(guò)數(shù)據(jù),我們希望可以找到問(wèn)題的答案。
在 HackerRank網(wǎng)站上,為了幫助程序員提高技能,我們舉行過(guò)數(shù)以千計(jì)的編程挑戰(zhàn)賽。來(lái)自世界各地成千上萬(wàn)的程序員參加了這些挑戰(zhàn)賽,從 Python 到算法到安全到分布式系統(tǒng)都有涉及。我們的社區(qū)也有超過(guò)150萬(wàn)開(kāi)發(fā)者的排名,并且社區(qū)的人數(shù)每天都在增長(zhǎng)。
根據(jù)我們的數(shù)據(jù)顯示,中國(guó)和俄羅斯擁有最具才華的程序員。中國(guó)程序員在數(shù)學(xué)、功能程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)方面超過(guò)了世界其他國(guó)家的程序員,而俄羅斯程序員則在算法領(lǐng)域占據(jù)主導(dǎo)地位,算法也是最流行和最具競(jìng)爭(zhēng)力的領(lǐng)域。雖然美國(guó)和印度在HackerRank上也有不少優(yōu)秀的程序員,但他們也只能排在第28和第31。
1、整體綜合排名
我們先從程序員中最受歡迎的測(cè)試類型開(kāi)始分析。HackerRank程序員可選擇參與15個(gè)不同領(lǐng)域,下表顯示了各個(gè)領(lǐng)域的比例 :
遙遙領(lǐng)先的領(lǐng)域是算法領(lǐng)域,這個(gè)領(lǐng)域得到了近40%的程序員青睞。這個(gè)領(lǐng)域包括數(shù)據(jù)排序,動(dòng)態(tài)編程,搜索關(guān)鍵字和其他基于邏輯的任務(wù)方面的挑戰(zhàn)。對(duì)于算法測(cè)試,程序員可使用他們選擇的語(yǔ)言,這可能也解釋了該領(lǐng)域如此受歡迎的部分原因。排在第二位和第三位的Java和數(shù)據(jù)架構(gòu)分別都占到了接近 10%的比例。而分布系統(tǒng)和安全的占比最低。
那么,基于這些測(cè)試,哪個(gè)國(guó)家的程序員整體得分最高呢?
為了弄清楚,我們查看了各個(gè)國(guó)家所在領(lǐng)域的平均得分。計(jì)算平均得分前我們又為每個(gè)領(lǐng)域制定了打分標(biāo)準(zhǔn)(通過(guò)從每個(gè)分?jǐn)?shù)減去平均值,然后除以標(biāo)準(zhǔn)差,也稱為z分?jǐn)?shù)),這樣的話,即使每個(gè)領(lǐng)域的難度有差異,但我們也能對(duì)不同領(lǐng)域的個(gè)人打分,并形成從整體到個(gè)體的比較體系。為了讓結(jié)果更直觀,我們根據(jù) z 分?jǐn)?shù)框架的原理,做了一個(gè) 1-100 分?jǐn)?shù)框架來(lái)解釋。
我們統(tǒng)計(jì)了 HackerRank 上程序員最多的 50 個(gè)國(guó)家,得出下面這張表單:
由于中國(guó)的程序員得分最高,所以將中國(guó)的分?jǐn)?shù)作為 100 的基準(zhǔn)分,則俄羅斯的分?jǐn)?shù)為 99.9 ,兩國(guó)僅相差 0.01 。另外,波蘭和瑞士也以 98 的高分進(jìn)入前列。巴基斯坦得分僅為 57.4 。
印度和美國(guó)為全世界貢獻(xiàn)了最多的程序員,但沒(méi)有進(jìn)入榜單的前 25名 ,只分別以 76 和 78 的分?jǐn)?shù)排名 31 和 28 。
2、特定領(lǐng)域排名
雖然中國(guó)的排名很出眾,但也不只是雄霸所有榜單。哪個(gè)國(guó)家的程序員在特定領(lǐng)域的表現(xiàn)最好?我們來(lái)看看各個(gè)領(lǐng)域中上榜的國(guó)家。
可以看到中國(guó)在一些領(lǐng)域相當(dāng)出色。中國(guó)程序員在在數(shù)據(jù)結(jié)構(gòu)、數(shù)學(xué)和函數(shù)式編程方面打敗了其他國(guó)家的程序員。另外,俄羅斯程序員在挑戰(zhàn)舉辦最多的算法領(lǐng)域也摘得桂冠。其次是分別處于第二、第三位置的波蘭和中國(guó)。
怎么解釋不同國(guó)家在不同領(lǐng)域的水平差異?有可能是因?yàn)槎砹_斯的程序員更喜歡參加算法類的比賽,也就會(huì)在這一領(lǐng)域投入更多精力,而大部分中國(guó)程序員則更喜歡參與數(shù)據(jù)結(jié)構(gòu)類的項(xiàng)目。
在HackerRank工作的一個(gè)軟件工程師就是這樣的,他叫Shimi Zhang,是我們函數(shù)型編程領(lǐng)域排名前十位的程序員之一。他來(lái)自中國(guó)重慶市,兩年前來(lái)到美國(guó)攻讀計(jì)算機(jī)科學(xué)碩士,然后來(lái)到HackerRank工作。
來(lái)自中國(guó)的頂尖程序員Shimi Zhang就中國(guó)程序員的不同凡響之處表達(dá)了他的看法:
“和其他國(guó)家相比,中國(guó)的高等教育資源比較少,中國(guó)的年輕人學(xué)習(xí)編程的路本來(lái)就窄。很多非凡的年輕人在得到來(lái)之不易的變成比賽,會(huì)真正癡迷于此。
在中國(guó),很多年輕人在中學(xué)時(shí)期就開(kāi)始自學(xué)編程了,甚至還嘗試解決的一些在全世界也沒(méi)有多少人能解決的難題。
舉辦專門針對(duì)青少年工程師的全國(guó)性競(jìng)賽,如 NOIp ( 全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽)和 NOI ( 全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽),今年至少有 3 個(gè)人在 NOI 中同時(shí)獲得了冠軍。這種針對(duì)青少年舉行的編程比賽是近十年內(nèi)的趨勢(shì)。
并且, NOI 中還有一個(gè)牛逼的特別規(guī)定:如果一位選手在 NIO 中獲得了金牌,他就不能參加國(guó)際信息學(xué)奧林匹克競(jìng)賽的中國(guó)隊(duì)選拔賽,這就意味著,在國(guó)際信息學(xué)奧林匹克競(jìng)賽中獲得金牌的中國(guó)選手,都是首戰(zhàn)告捷。”
3、不同國(guó)家程序員的偏好
接下來(lái),我們又比較了每個(gè)國(guó)家程序員在不同挑戰(zhàn)賽上花費(fèi)的時(shí)間,然后與HackerRank用戶平均花費(fèi)的時(shí)長(zhǎng)進(jìn)行比較。這樣一來(lái),就能找出不同國(guó)家程序員在特定領(lǐng)域的偏好了。
如上表所示,中國(guó)程序員在數(shù)學(xué)競(jìng)賽中的參與度遠(yuǎn)遠(yuǎn)高于我們預(yù)期的平均水平,這就能解釋為什么他們能在這個(gè)領(lǐng)域高踞榜首了。捷克人貌似很喜歡 shell,在這個(gè)單項(xiàng)他們是第一。
4、不同國(guó)家程序員的編程語(yǔ)言偏好
但是除了這兩個(gè)國(guó)家,其它國(guó)家的選擇偏好和擅長(zhǎng)領(lǐng)域好像并沒(méi)有必然聯(lián)系。我們也想知道其他國(guó)家的程序員對(duì)特定的編程語(yǔ)言是否有特殊嗜好。比如印度程序員是不是對(duì)C++更感興趣?墨西哥程序員是不是都用Ruby編碼?
總的來(lái)說(shuō),世界各地的程序員選用 Java 的比例都要高于其它語(yǔ)言(只有極少數(shù)的例外:如馬來(lái)西亞和巴基斯坦的程序員更喜歡 C++,***的程序員更喜歡 Python )。而斯里蘭卡程序員也是JAVA比例使用最高的國(guó)家,在HackerRan中也排名排在第八的位置。
巴基斯坦、斯里蘭卡和尼日利亞目前排名位于低端,他們可以學(xué)習(xí)學(xué)習(xí)瑞士的毅力。程序員在HackerRank社區(qū)上沒(méi)有努力就放棄了挑戰(zhàn),得分為零。瑞士的零記分用戶比例是最低,瑞士程序員也可謂稱得上世界上最頑強(qiáng)的程序員。
其實(shí)對(duì)于世界各地的程序員來(lái)說(shuō),無(wú)論你來(lái)自何處,都有可能成為一下個(gè)蓋茨或者克努特。
根據(jù)這些數(shù)據(jù),如果我們舉辦一場(chǎng)黑客奧林匹克比賽,中國(guó)將贏得金牌,俄羅斯將獲得銀牌,而波蘭則拿下銅牌。盡管美國(guó)和印度的程序員讓人值得稱贊,但想進(jìn)入前25,還是需要再繼續(xù)努力的。
評(píng)論
查看更多