作者丨千山
日前,荷兰软件质量评估公司TIOBE发布2022年12月编程语言排行榜。在最新榜单中,Python依然占据榜首位置岿然不动,而C++在TIOBE排名历史上首次超过Java,以0.12%的微弱优势跃居第三。
前三分别是Python、C、C++,Java则下降到第四。根据TIOBE公司的首席执行官Paul Jansen的说法,这是自2001年TIOBE指数公开以来,Java首次不在前三名之列。也是二十多年间,C++的排名第一次超过Java。
图源:互联网
需要指出的是,编程语言的排行有各种各样的评级依据,而TIOBE指数是衡量编程语言热门/受欢迎程度的一个指标。其百分比计算并不是基于市场份额,而是依据全球熟练的技术工程师、课程、第三方供应商数量,并使用流行的搜索引擎,如谷歌、必应、雅虎以及维基百科、亚马逊、油管等统计出排名数据。
因此,就TIOBE的榜单来说,它在一定程度上反映了某个编程语言的热度、时下流行度,但不能作为判定这门语言好不好、成不成功的凭据。作为开发者,了解编程语言的热度有其必要性,一方面可以用来考察编程技能是否与时俱进,另一方面在开发新系统时也可以作为语言选择的参考。
1、C++ 摆脱压制,一朝翻身跻身三甲
今年以来,C++和Java的排名一直比较焦灼。此前在《C++与Java“相爱相杀”:一个步步紧逼,一个节节败退》一文里,我们提到,在6月的TIOBE榜单中,“C++的占有率大幅提升,而Java的热度和流行度似乎正在逐步减弱。从目前的的趋势来看,C++超越Java的可能性正在增加”。如今,这一可能成为了现实。
有业内人士猜测,C++的激增或许部分得益于2020年12月稳定发布的C++ 20。C++之父Bjarne Stroustrup曾表示:“C++ 20是自C++11以来最大的发行版,它将是C++发展史上的里程碑。”其表现也的确不负众望。
Bjarne认为,C++ 最有实力的地方并不是它的某个独到之处特别伟大,而在于它在事物的大范围变化中的表现都很不错,更通俗地说,“C++的长处,更多在于它对许多问题都是很好的解决途径,而不在于它对某个特定问题是最好的解决途径”。
当然也有人对C++表示不满。微软Azure CTO Mark Russinovich就曾在今年公开放话,“是时候停止用C/C++启动任何新项目了,一切需要无垃圾回收语言的场景都该使用Rust”。出于对内存安全性的考虑,Russinovich表示应该弃C++而选Rust。
不过事实也证明,这一论断为时尚早。正如Bjarne所回应的那样:“新语言通常需要多年时间和重大努力才能在其广泛的应用领域与成熟语言相匹配。爱好者很少看到这一点,并且他们的评论往往是片面的。”而今C++在TIOBE 榜单上的强势表现也说明,开发者们对于C++这门与时俱进的老牌语言仍保持着相当高的青睐度。
2、Java依然能打,多方合力坚如磐石
如前文所说,TIOBE指数只是一种衡量标准。若跳开这一范畴,Java的表现有时更好,在所有编程语言中都是名副其实的佼佼者。
从社区规模看,Java以1650万排名第三,远超C/C++(1230万),仅次于Python(1690万)和JavaScript(1960万)。
研究公司Slashdata在其2022年第三季度的开发者国家状况报告中发现,“在过去两年中,Java的社区规模几乎翻了一番,从830万增加到1650万”。Slashdata报告还指出,Kotlin是增长最快的语言社区之一,Kotlin代码运行在Java虚拟机上,因此它的兴起也提升了Java。
从GitHub上的项目数量衡量,在2022年10月咨询公司Redmonk的编程语言排名中,Java同样排名第三,紧随Python和JavaScript。
Redmonk的联合创始人James Governor在今年4月的一篇文章中指出:“全球公有云三巨头——亚马逊、谷歌云、微软 Azure ,还有Oracle都在大力投资Java语言、运行时支持以及托管和管理服务,寻求为现代化赢得企业工作负载。“这种投资无疑是对于Java本身价值的高度认可。
早在2017年,时任Oracle软件开发副总裁的Mark Cavage就表示,“我们希望在下一个十年中实现Java至上,Java永存”。如今看来,这一期望并非妄言,Java在编程语言界的地位的确很难撼动。
但需要留心的是,Java在某些地方也会流露出“老将迟暮”之色。
根据StackOverflow的年度开发人员调查,在最受欢迎的技术列表中,Java在2018年获得了45.3%的受访者的支持。2020年,这一数字下降到40.2%。而在2022年,Java的赞美率仅为33.27%。
今年9月,Oracle正式发布了最新版本的编程语言Java 19,一如甲骨文的承诺——每年3月和9月更新Java版本,这一次依然没有跳票。但相较于甲骨文刷版本号的勤根不辍,开发者们对此的回应却有些意兴阑珊。年初的统计显示,37%的开发者还停留在2014年发布的Java 8版本,29%使用Java 11做开发,只有37%表示会考虑切换到Java 17 LTS。
Java不会很快消失,但有时候它也不再是人们的首选。
3、Kotlin、Julia等崛起,后续值得观望
在最新的TIOBE排行榜上,除了老牌“常青树”之间的博弈,一些小众语言的突围也值得关注。其中,Kotlin和Julia 越来越接近前 20 名。Kotlin从上个月的28名跃至23, Julia则从32升至24。
图源:互联网
大众印象中,Python、C和Java的认知度和存在感可能比较高。实际上,Kotlin和Julia也各有其优势。
作为通用语言,Kotlin可以在Java工作的地方工作:服务器端应用程序,移动应用程序(Android),桌面应用程序。它适用于所有主要的工具和服务。当然最终应用还是因人而异。
Julia发展很快,但其生态系统仍有进步空间。多重派发(multiple dispatch)作为其杀手级特性值得感兴趣的开发人员加以了解(详见《是什么让Julia变得独一无二?》一文)。虽然关注度不如Python等热门语言。但是谁都无法否认Julia在科学计算领域的巨大优势。
据了解,TIOBE将于下个月公布2022年的年度编程语言,Python、C和C++将角逐年度语言奖。过去一年,Python的王者地位有目共睹,如今其以3.76%的涨幅占据16.66%的市场份额,也让它成为年度编程语言的最佳候选者之一。C++获得这一殊荣还是在2003年。今年的评选结果是王者归来还是黑马杀出,我们可以静心以待。
参考链接:https://www.theregister.com/2022/12/10/java_slips_behind_c_in/