世界编程竞赛中国码农拿下全球第一!
世界编程竞赛中国码农拿下全球第一!世界着名的编程竞赛组织 HackerRank 刚刚发布报告:根据各国程序员在各项比赛中的表现,排出算法、数据结构、分布式系统、编程语言等几个领域的冠亚季军。在总得分榜上,中国程序员获得了第一名。美国则只排在了 28 位。
这一事实或多或少让人感到惊讶。美国拥有世界上最为知名的黑客文化,几十年间 “江山代有人才出”。而中国互联网行业更引以为豪的是模式创新。如果中国的程序员已经拥有如此强大的技术水平,那么距离 Facebook、谷歌这样的世界一流企业,我们还缺少什么?
为此,我们翻译了这篇来自 Priceonomics 的文章,并采访了一系列创业公司 CEO 如何看待 “中国工程师技术能力世界第一”。他们有的是国内最大开发者社区的 CTO,有的则在谷歌、亚马逊工作十余年,对这一问题都有一定的思考。在他们的回答中,“技术领导力” 一词被反复提及。就像特色场地预订平台百场汇 CTO 朱瑞清所说的,“相比编程能力,给公司的技术方展、框架设计提供经验、商业上的指导更为重要。”
哪个国家能够在编程奥林匹克竞赛中获胜?最好的程序员哪家强?
许多人会认为是美国。毕竟,美国是比尔·盖茨,肯·汤普森(Ken Thompson),丹尼斯·里奇(Dennis Ritchie, 与 Ken Thompson 联合发明了 C 语言和 Unix 系统) 和唐纳德·克努斯(Donald Knuth,现代计算机科学的先驱人物,创造了算法分析学科)等诸多编程名人的故乡。但话又说回来,印度拥有许多诸如印度理工学院等着名科技院校,而俄罗斯的黑客一向以 “高效率” 而着称。
那么,是否有一种方法可以来衡量哪个国家拥有最好的程序员呢?
通过分析来自 HackerRank(Priceonomics 的客户之一)的数据,我们找到了答案。HackerRank 定期为程序员举办众多的编码挑战,通过参与挑战来提高程序员的编码技能。成千上万来自世界各地的程序员参加了各种编程语言以及知识领域的挑战,诸如 Python 语言、算法、安全领域以及分布式系统等。HackerRank 根据程序员完成挑战的准确性和速度,对他们进行评分和分级。
根据数据显示,中国和俄罗斯拥有最具才华的程序员。中国程序员在数学、函数式编程以及数据结构领域的挑战中击败了其他所有国家,而俄罗斯程序员在最受欢迎以及最具竞争的算法领域具有统治地位。尽管美国和印度有众多程序员参与了 HackerRank 的挑战,但在排名方面,他们仅获得了第 28 和第 31 名。
在开始进一步分析之前,我们先来观察一下参加比赛的程序员最热衷参与的挑战类型。在 HackerRank 比赛中,程序员可以选择参与 15 个不同领域的挑战。有一些领域要比另一些更受欢迎。下表显示了各领域完成挑战的参与度比例。
最受欢迎的是算法领域,有接近 40% 的程序员参与其中。这个领域的挑战包括数据排序、动态规划、关键词检索以及一些其它基于逻辑的任务。而作为算法领域的挑战者,程序员可以使用任何编程语言,这也部分解释了为什么该领域如此受欢迎。(算法也是程序员面试过程中的一个关键内容。)
与算法相比,参与度第二的 Java 领域和第三的数据结构领域就相差很远了,这两个领域分别有接近 10% 的开发人员参与挑战。而分布式系统领域和安全领域是参与度最低的挑战领域。
那么,基于这些挑战,哪一个国家的程序员得分最高呢?
为了找到答案,我们分析了每个国家在各领域中的平均分。在取平均分之前,我们首先对每一个领域的得分进行了标准化处理(将每一个独立得分减去平均值后再除以标准差,即 z-score)。这样处理后,我们就能够在不同领域之间进行平等的分数对比。接下来,为了方便理解,我们将得到的 z-score 换算成 1-100 的分值度量。
我们选取了 50 个国家的数据。来自这些国家的程序员在 HackerRank 比赛中参加了数以千计的比赛(最少的也参加了 2000 多个)。下面是我们的发现:
中国得分最高,因此中国程序员获得了 100 的分值,名列第一。然而和第二名相比,中国只是以十分微小的优势取胜——俄罗斯的得分是 99.9 分。波兰和瑞士则得到了接近 98 分的好成绩,分列第三和第四位。在名单中,巴基斯坦以 57.4 分垫底。
印度和美国虽然贡献了最多数量的程序员,但甚至没有进入到榜单的前半部分。印度得到了 76 分,名列 31 位;美国得到了 78 分,名列 28 位。
虽然中国在平均分上战胜了其他所有国家,但这并不意味着它在每个领域都能排名第一。那么,在某一特定的技能领域方面,哪个国家贡献了最优秀的程序员呢?让我们再看看在每个领域方面名列前茅的国家。
不出所料,中国在很多领域的表现都相当优秀。来自该国的程序员在数据结构,数学和函数式编程领域击败了对手,排名第一。
另一方面,俄罗斯在最受欢迎的算法领域拔得头筹。在该领域波兰和中国分别排名第二和第三。
那么,如何解释不同国家在不同领域中的表现差异呢?一个可能的解释是俄罗斯的程序员更热衷于参与算法领域的挑战,并从中获得了更多的锻炼机会。而中国程序员更热衷于参与数据结构领域的挑战。
我们还比较了各国程序员,在不同挑战类型中所花费的时间,并将其与参加该项挑战的 HackerRank 用户的平均数据进行对比。经过这样的分析后,我们发现了在各个领域中,哪些国家的程序员更愿意接受挑战。
中国程序员在数学领域的参与度远高于该领域的统计平均值。这也许可以帮助解释为什么在该领域中国程序员能够占据榜首。同样,捷克程序员在 Shell 领域展现出了很高的参与度,而在该领域捷克排名第一。
但除了这两个例子以外,其他国家的数据并没有显示出这样的相关性。一个国家的程序员更愿意参加某项领域的比赛,并不代表他们在该领域的得分排名就能更高。
我们也想知道不同国家是否对编程语言具有特殊偏好。印度程序员是否更钟情于 C++?墨西哥人会使用 Ruby 编程吗?
总的来说,各国程序员对 Java 挑战的参与度要高于任何其他编程语言挑战(也有少数例外,例如马来西亚和巴基斯坦的程序员更喜欢参与 C++ 挑战,而在台湾,Python 挑战最受欢迎)。斯里兰卡对 Java 挑战的偏爱度排名第一。而为 HackerRank 贡献了大量程序员用户的印度位列第八。
巴基斯坦、斯里兰卡和尼日利亚在榜单中垫底,这些国家的程序员可以向瑞士程序员学习他们的坚韧不拔的精神。当一名程序员在 HackerRank 进行挑战时,如果在挑战开始就放弃,那他/她只能得到零分。而在所有国家中,瑞士程序员的零分比例最低,这也使瑞士程序员成为当之无愧的 “全世界最顽强的程序员”。
每一天,世界上的程序员都在相互竞争,希望能够成为下一个比尔·盖茨或唐纳德·克努斯。
如果我们现在举办一场编程奥林匹克竞赛,数据显示中国将获得金牌,俄罗斯将带着银牌回家,而波兰将取得铜牌。尽管美国和印度在科技展示推广方面做出的努力值得称赞,但他们连排名的前25位都进不了。
2898站长资源平台手机网站排行榜:http://www.2898.com/webmain/sjwz.htm