`
尹公子
  • 浏览: 4809 次
  • 来自: 青岛
社区版块
存档分类
最新评论

数据显示:中国的程序员是世界上最牛的程序员【译】

阅读更多

写在前面:一直觉得中国的程序员想法多,肯钻研肯学习,但却不知道原来中国的程序员是世界上最牛的程序员。说来可能不信,但根据HackerRank官网的一篇报道,数据显示中国的程序员就是世界上最牛的程序员。特将此文翻译成中文,分享给大家。

 

如果问哪里的程序员最牛,很多人肯定会认为是美国。毕竟美国拥有很多杰出的程序员,如比尔·盖茨、 肯·汤普森、 C 语言之父丹尼斯·里奇、唐纳德·克努特。但是,这些年,印度的程序员规模增长是全世界最快的,俄罗斯的黑客也越来越锋芒毕露。有什么办法来确定哪个国家的程序员是最牛的吗?

 

在HackerRank网站上,哪些国家在编程挑战赛中表现最厉害呢?通过数据,我们希望可以找到问题的答案。

 

在 HackerRank网站上,为了帮助程序员提高技能,我们举行过数以千计的编程挑战赛。来自世界各地成千上万的程序员参加了这些挑战赛,从 Python 到算法到安全到分布式系统都有涉及。我们的社区也有超过150万开发者的排名,并且社区的人数每天都在增长。

根据我们的数据显示,中国和俄罗斯拥有最具才华的程序员。中国程序员在数学、功能程序设计和数据结构方面超过了世界其他国家的程序员,而俄罗斯程序员则在算法领域占据主导地位,算法也是最流行和最具竞争力的领域。虽然美国和印度在HackerRank上也有不少优秀的程序员,但他们也只能排在第28和第31。

1、整体综合排名

我们先从程序员中最受欢迎的测试类型开始分析。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 中获得了金牌,他就不能参加国际信息学奥林匹克竞赛的中国队选拔赛,这就意味着,在国际信息学奥林匹克竞赛中获得金牌的中国选手,都是首战告捷。"

3、不同国家程序员的偏好

接下来,我们又比较了每个国家程序员在不同挑战赛上花费的时间,然后与HackerRank用户平均花费的时长进行比较。这样一来,就能找出不同国家程序员在特定领域的偏好了。

如上表所示,中国程序员在数学竞赛中的参与度远远高于我们预期的平均水平,这就能解释为什么他们能在这个领域高踞榜首了。捷克人貌似很喜欢 shell,在这个单项他们是第一。

4、不同国家程序员的编程语言偏好

但是除了这两个国家,其它国家的选择偏好和擅长领域好像并没有必然联系。我们也想知道其他国家的程序员对特定的编程语言是否有特殊嗜好。比如印度程序员是不是对C++更感兴趣?墨西哥程序员是不是都用Ruby编码?


总的来说,世界各地的程序员选用 Java 的比例都要高于其它语言(只有极少数的例外:如马来西亚和巴基斯坦的程序员更喜欢 C++,台湾的程序员更喜欢 Python )。而斯里兰卡程序员也是JAVA比例使用最高的国家,在HackerRan中也排名排在第八的位置。

巴基斯坦、斯里兰卡和尼日利亚目前排名位于低端,他们可以学习学习瑞士的毅力。程序员在HackerRank社区上没有努力就放弃了挑战,得分为零。瑞士的零记分用户比例是最低,瑞士程序员也可谓称得上世界上最顽强的程序员。

其实对于世界各地的程序员来说,无论你来自何处,都有可能成为一下个盖茨或者克努特。

 

根据这些数据,如果我们举办一场黑客奥林匹克比赛,中国将赢得金牌,俄罗斯将获得银牌,而波兰则拿下铜牌。尽管美国和印度的程序员让人值得称赞,但想进入前25,还是需要再继续努力的。

 

翻译的内容比较多,如有部分语句措辞不当的,欢迎指出。

原文出处:https://blog.hackerrank.com/which-country-would-win-in-the-programming-olympics/

分享到:
评论

相关推荐

    前端Mock的使用,用于构造动态数据

    适用于前端开发,前端构建动态数据

    SQL语句的基本用法案例.pdf

    “SQL语句的基本用法案例”的文档,是一份非常实用的学习资料,为初学者和进阶者提供了丰富的SQL操作示例。通过这份文档,读者可以系统地了解SQL语言在数据库管理中的应用,掌握从创建数据库到删除数据库的整个流程。 文档开篇便介绍了如何创建一个新的数据库,并详细说明了选择数据库、创建表以及插入数据的具体步骤。这不仅为读者展示了SQL语句的基础用法,也为后续的查询、更新和删除操作打下了坚实的基础。 在查询数据部分,文档通过多个示例展示了SQL查询的灵活性和强大功能。无论是查询所有学生信息,还是根据特定条件筛选数据,都能通过简单的SQL语句实现。此外,文档还介绍了如何计算学生的总数、平均年龄等统计信息,以及如何对数据进行排序和限制结果。 除了基础的增删改查操作,文档还深入介绍了子查询、连接表以及窗口函数等高级用法。这些功能在实际应用中非常常见,能够帮助用户解决更为复杂的数据处理问题。 此外,文档还提供了清晰的代码示例和注释,使得读者能够轻松理解每个步骤的含义和目的。同时,文档的语言简洁明了,逻辑清晰,使得学习过程更加轻松愉快。

    node-v7.7.4-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于QT+C++开发的球球大作战游戏+源码(毕业设计&课程设计&项目开发)

    基于QT+C++开发的球球大作战游戏+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++开发的球球大作战游戏+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++开发的球球大作战游戏+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++开发的球球大作战游戏+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~

    浪潮CH5280H2海光服务器兼容vSphere集群服务方法

    hygon-vmware_patch_v2.7

    PHP开发虚拟资源在线交易平台程序源码 含多接口 支付功能.rar

    PHP开发虚拟资源在线交易平台程序源码 含多接口 支付功能.rarPHP开发虚拟资源在线交易平台程序源码 含多接口 支付功能.rar

    智慧工厂数字工厂三维数据可视化方案.pptx

    智慧工厂数字工厂三维数据可视化方案.pptx

    node-v7.3.0-linux-armv6l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.11.2-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.20.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    计算机毕业设计参考 仿豆瓣电影小程序app 微信小程序源码下载

    数据库课程设计豆瓣电影小程序是一个专为电影爱好者设计的微信小程序,它以豆瓣电影数据库为基础,为用户提供了一个移动观影指南。该小程序结合了豆瓣丰富的电影资源和用户评价,允许用户在微信平台上快速浏览电影信息、阅读影评、查看评分,并参与到社区讨论中。 作为一个计算机毕业设计参考项目,豆瓣电影小程序不仅涉及到前端展示和用户交互设计,还涉及到后端数据接口的集成和处理。开发者需要掌握微信小程序的开发框架,熟悉前后端数据交互流程,并能够实现用户认证、数据缓存、内容展示等功能。 该小程序的设计与实现,可以培养学生在Web开发、数据库操作、API调用和用户体验设计等方面的实践能力。通过微信小程序源码下载,学生可以获取项目的基础代码,进行深入分析和学习,进而在此基础上进行创新和功能扩展,比如增加个性化推荐算法、社交分享功能等,以提升小程序的用户体验和实用性。 此项目适合作为计算机及相关专业学生的毕业设计选题,不仅因其紧密结合当前流行的移动应用开发趋势,更因其能够锻炼学生解决实际问题的能力,同时完成的项目作品也具有实际应用价值。

    客户关系管理(CRM).pdf

    客户关系管理(CRM).pdf

    自适应多引擎搜索单页源码.rar

    自适应多引擎搜索单页源码.rar自适应多引擎搜索单页源码.rar自适应多引擎搜索单页源码.rar

    node-v7.3.0-linux-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Python的木鸟民宿价格预测项目源代码+民宿信息爬虫

    在木鸟民宿平台作为房东发布房源或作为房客预订房源的过程中,信息采集涉: 房源信息:包括但不限于房源地址、房源照片、房间类型、房间布局、设施设备、床位数、可容纳人数、房源特色介绍、周边环境(如交通、餐饮、景点等 安装教程 pip install requests pip install parsel pip install tqdm 使用说明 命令行中cd到muniao-price-prediction/source_code路径,然后运行命令 python homestay_list.py 程序会生成一个名为homestay.csv的文件,里面是房源信息

    node-v10.13.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v8.1.1-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    计算机毕业设计参考 豆瓣电影小程序app 微信小程序源码下载

    豆瓣电影小程序是一个专为电影爱好者设计的微信小程序,它以豆瓣电影数据库为基础,为用户提供了一个移动观影指南。该小程序结合了豆瓣丰富的电影资源和用户评价,允许用户在微信平台上快速浏览电影信息、阅读影评、查看评分,并参与到社区讨论中。 作为一个计算机毕业设计参考项目,豆瓣电影小程序不仅涉及到前端展示和用户交互设计,还涉及到后端数据接口的集成和处理。开发者需要掌握微信小程序的开发框架,熟悉前后端数据交互流程,并能够实现用户认证、数据缓存、内容展示等功能。 该小程序的设计与实现,可以培养学生在Web开发、数据库操作、API调用和用户体验设计等方面的实践能力。通过微信小程序源码下载,学生可以获取项目的基础代码,进行深入分析和学习,进而在此基础上进行创新和功能扩展,比如增加个性化推荐算法、社交分享功能等,以提升小程序的用户体验和实用性。 此项目适合作为计算机及相关专业学生的毕业设计选题,不仅因其紧密结合当前流行的移动应用开发趋势,更因其能够锻炼学生解决实际问题的能力,同时完成的项目作品也具有实际应用价值。

    HTML5小游戏源码下载网页版游戏JS小游戏-塔防源码.zip

    HTML5小游戏源码下载,JS小游戏源码下载,坦克大战,驴子跳,连连看,俄罗斯方块,圈泡泡,塔防,太空战舰,愤怒的小鸟,植物大战僵尸,水果忍者,扫雷,超级玛丽,打地鼠,坦克大战,麻将等JS小游戏源码下载,游戏开发教程,网页游戏,本地直接打开就可以玩。

    node-v8.7.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics