IEEE Spectrum 刚刚发布了第六届编程语言排行榜。在新的排名方式下,Python 再次名列第一,而且与第二名的差距正在加大。名列后几位的分别是 Java、C 语言、C++和 R 语言。
这是 IEEE Spectrum 的第六次年度编程语言排行统计。今年的统计进行了重大改革,一些基础指标进行了重构,而最终的排行榜也进一步得到了简化。但其基本理念让仍然相同:将多个数据源的编程语言流行度排名结合起来,得出目前业内人们关注度最高的语言。
这些信息来源包括谷歌搜索、谷歌趋势、推特、GitHub、Stack Overflow、Reddit、Hacker News、CareerBuilder、IEEE Job Site 和 IEEE Xplore Digital Library。
对于编程语言的统计而言,人们总会面临两个主要问题:(1)理论上没有人可以审查所有程序员正在敲的代码属于哪种语言;(2)有些时候,一种语言是另一种的基础,有的时候两种语言所使用的领域完全没有相关性。IEEE 的榜单致力于解决这些问题,呈现出最为准确的编程语言流行程度排行。统计者们从 8 种信息渠道获取数据,并设定了 11 种排名方式——这些指标是过滤语言排名的最优方式——然后将所有结果以不同权重结合起来,获得了最终的排名。当然,如果你对于权重有异议,也可以在 IEEE 的可交互页面上设置自己想要的权重:
在 IEEE Spectrum 网站上,你可以根据自己的需求设定权重,获得不同的编程语言排名。
在 IEEE 的默认设置之下,对找工作有利的排行方式获得了更高的权重。虽然标准的变化让今年的统计结果和往年有所不同,不过整体看来趋势还是一样的:Python 在所有分项目中都名列榜首。Python 如此受到人们欢迎很大程度上是因为存在大量专用的工具库作为支持,尤其是在人工智能(AI)领域。Keras 是每个进入人工智能、特别是深度学习领域的开发者所熟知的库:它提供了 TensorFlow、CNTK 和 Theano 深度学习框架的友好界面和工具包。当然,深度学习也不是 Python 的唯一应用方向,而且在 1991 年首次推出时也预料不到会对深度学习产生影响。随着微控制器上算力的急剧增长,CircuitPython 和 MicroPython 等嵌入式 Python 版本越来越受到制造商们的欢迎。
排在 Python 之后的是 Java、C 语言和 C++,这是一组长期争夺第二名的语言——尽管 IEEE 调整了指标,这些语言与 Python 之间的差距还是在越拉越大。C++的分数落后于 Python 12.5 分(在所有排名中,第一名的编程语言为 100 分,排在其后的语言以头名为标准依次递减)。主要用于数学计算的语言 R 排名来到了第五。尽管 R 语言相比其他对手专业性很高,但由于大数据的应用愈发广泛,近年来它的流行程度一直在提高。
在前 10 名中,由 MathWorks 开发并用于数值计算的专用语言 Matlab 的出现着实有些出乎预料,但这简单明了地反映了编程语言在硬件工程中的突出地位——特别是那些对通过 MathWorks 的图形化 Simulink 软件包运行模拟或创建控制系统的人而言。
在第 10 名以下,还有一些值得一提的语言,其中包括在 11 位的 Arduino 和第 12 位的 HTML/CSS。在此前的统计中,部分人认为它们不应出现在榜单之中:因为不存在这样的语言,而「Arduino」实际上是某种语言运行的一系列硬件平台的名称,而这种语言应该被称为 Wiring(有时它们也被归类为 C 语言或 C++的一种)。IEEE 表示,在这方面我们应当以简单的实用主义为导向:当面对编程问题时,绝大多数 Arduino 的开发者使用诸如「Arduino Code for ......」之类的关键词来进行谷歌搜索——而不是使用其他的方法。通过选择更为常用的名字,IEEE 让统计的准确性有所提高,避免了 Arduino 和类似的微控制器上很多内容未被统计的情况。
在 HTML 上,反对意见仍然是:它不是真正的语言,因为它没有分支或者循环结构。但因为 HTML 和 CSS 在开发者中的流行程度,以及它已经占据了数以十亿计的计算机,任何关于图灵完整性的学术论点都不是最重要的,标记语言仍然是一种语言。
最后,一些较为古老的语言仍然处于活跃状态。如已经有 60 多年历史的 Fortran 仍然排在了第 38 名,这可能是因为原始科学计算语言仍然具有巨大的传统力量。Fortran 语言仍在发展,最新的 Fortran 标准是在 2018 年末推出的,其中包括和 C 语言互操作性的改进以及对于大规模并行化计算的支持优化。