查看原文
其他

未来编程语言趋势:哪个会更加流行?

21CTO 21CTO 2023-01-28

最近,我特别喜欢阅读和编程相关的问题与答案,这是因为我可以从其他程序员的经验中享受很多益处,少走很多弯路。

比如最近我看到了类似不同语言被替代的一系列问题:

  1. 有取代 JavaScript 的技术吗?

  2. Kotlin 有机会替换 Java 吗?

  3. Rust 会取代 C++ 吗?

  4. 在 D、Go 和 Rust 之间,哪种语言在替代 C 语言方面最有前途?


我个人比较喜欢最后一个问题,我觉得提这个问题的人一定很确定自己的选择。这些问题也不约而同地引发一个共通问题:

未来的编程语言是什么?

在本文中,我们将通过分析相关统计数据,尝试找到该问题的答案。在开始之前,我们会尽可能客观,尽量不给大家一个有偏见的结果。

我们从最新的数据开始。

背景

如果经常阅读21CTO的文章,我相信你一定看过下面的表格:

编程语言的分值比较

很多人在社交媒体上分享过这张表格,很多人都知道。在深入研究结果之前,我们先分享一些基础信息。

这张表格的结果的是如何测量的?


大家知道,衡量 CPU 性能的通用方法是基准测试对吧。该表作者对编程语言做了同样的事情,并且才考虑了用每种语言表达 10 个不同的编程问题,遵循计算机语言基准游戏中定义的算法。

这些算法及其数据尺寸,请看下表所示:


CLBG 程序语料库

另外,作者又对编程语言的范式类型进行了分类:


大家综合上图,作者将范式类型分为函数式、指令型、面向对象型与脚本语言,最重要的是编程语言的类型:是编译型、解释型还是与虚拟机联合使用。编译语言、虚拟机语言以及解释型语言,它们之间是存在明显的性能和空间占用差异的。


为此,作者又使用了一些算法进行测试。


接下来便是执行 CLBG 测试(Computer Language Benchmarks Game,用于比较性能的免费软件项目,其中包含一组标准的算法问题和用于运行测试的框架),下面是测试的结果数据。



上面的表格能量以焦耳为单位,时间以秒为单位,比值是能量除以时间的值,用来计算语言的大致功耗。


此外,在语言旁边还有上下箭头,我们分别解释一下,若根据执行时间对这张表进行排序,单线箭头表示该语言上升/下降多少步;双线箭头是相同的,其顺序是相对于峰值内存完成的使用量。

当我看到第一张表时,我内心还认为执行时间顺序也很重要,但它没有被广泛传播和分享。


我们对测试指标详细了解,例如对于二叉树算法,C、C++ 和 Rust 给出了最好的结果,但从内存的角度来看,Rust 的性能稍微差了一些。另一方面,这同样适用于 fannkuch-redux 基准测试游戏中的 C语言。

fasta CLBG 的结果

fasta CLBG基准向我们展示了一张不同的表格,数据稍有点模糊。

作者还比较了类型相关的编程语言,比如比较编译语言、虚拟机型语言与解释型语言。下面是这三种不同语言测试的结果。



不同分类的度量数据比较

最后,我们得到了下面给出的结果表(它与上面表格是相连的):


编程语言与 CLBG 测试结果

除了内存占用率外,C 语言似乎在能量和性能方面是最好的,然后是Rust 和 C++ 。我们可以确定地说, C 或 Rust 是最好的选择……

值得的一提的是,这些语言都不支持面向对象编程。(你也可以认为 Rust 支持,但它只支持接口,而不支持 OOP 结构)。但是在公司中,通常我们使用的是 OOP 开发,而且易用性也很重要。C、C++ 和 Rust 并不容易学习,它们需要开发者充分考虑对象生命周期、动态分配等。

上面,我们比较了语言的能耗、内存要求和完成过程所需的时间。但我们不能仅仅通过测试这一项指标来决定哪种语言是最好的。但是如果增加更多指标,结果将变得过于复杂,则无法在每种类型中确定一种编程语言。


这里,我想改变一些策略:假设人们都非常合乎逻辑。

在经济学论文中,它会认为人类并不会那么合乎逻辑,但技术人员中通常会假设这一点是真的。

假设我们非常合乎逻辑和挑剔,那么如何才能决定最好的语言呢?

我们通过分析使用最多的编程语言趋势。

如何衡量?有很多代码是在网络空间中编写的,其中大部分都保存在私人存储库中。既然我们知道开发人员在遇到问题时都会使用搜索引擎,是否可以检测搜索引擎统计数据?

谷歌统计

你知道,谷歌趋势工具对所有人是开放的。


我们使用这个工具来获取有关编程语言的搜索统计信息,但是有一个限制:只能从 5 个关键字中获取数据。


所以让我们从之前的结果,最受欢迎的 4 种编程语言开始。



谷歌使用趋势:2004 年以来对 C、C++、Rust 和 Java 语言排名

尽管 Java 跟以前比显著下降,但仍然比其他编译语言使用率更大。

C 和 C++ 两个语言非常接近。Rust 使用比率还是比较低的,它还是一种新的、年轻语言。公平地说,Rust 相对于 C 和 C++ 来说是很新,Rust 在 2010 年 7 月发布,将近 12 年中,从发布时起没有太多重大变化。


根据谷歌统计数据与我们之前得到的结果有点不大相同。让我们先排除Java ,选择 4 种不同的语言比较,分别是:Kotlin、Javascript、Python 和 Go。

从 2004 年以来, Java、JavaScript、Python、Go 和 Kotlin 的 Google 趋势


大家看,表格发生变化了,现在有一个非常不同的趋势。Python 起点开始很低,但它现在已经是市场份额最高的语言;Java 和 JavaScript 紧接着排在第二位。

Python 现在确实是领头羊,但我想再来一轮比较。

从 2004 年以来,Google 的 Python、JavaScript、Ruby、Swift 和 TypeScript 趋势

好的,结果出来了,我们还是只有一个赢家,那就是:Python!

尽管如此,我们还是尽可能客观,因为我只分析了一个搜索引擎的统计数据,它虽然是世界上最主流的搜索引擎之一,但结果可仍会发生变化。我们也不能一个一个地把搜索引擎组合起来,它会花费我们太多的时间。

好消息是有一家公司正在为我们开发者干这件事。

TIOBE指数


TIOBE 是一家专门评估和跟踪软件质量的公司。其主要服务是检查软件代码库的质量。TIOBE创建了一个名为 TQI(TIOBE 质量指标)的指标,下面给出了该指标的一个真实示例:



TIOBE公司创建了一个名为 TIOBE 索引的编程语言排行榜。这个排行榜正是根据搜索引擎趋势衡量编程语言的性能,并且他们已经考虑几乎所有相关的搜索引擎。


该排行榜的最新结果如下:



这与我们在 Google 趋势中看到的结果非常接近。

但是在这个排行榜中,C 是第二个最常见的语言,这是出乎意料的。此外,还有一个编程语言性能的历史图表,如下图所示:


很明显,Java 语言长期以来一直主导第一名。然而,Python 已经变得流行起来,并且成为了新的霸榜语言第一名。

这里有一个关键点需要注意:编程趋势是在不断变化。Java 是曾经的第一名,但现在是 Python,虽然在 2010 年之前它的排名曾经非常低。

问题来了,我们如何衡量编程语言的未来潜力?

思考未来的可能


在过去的 10 年里,机器学习和人工智能变得非常流行。


而 Python 是此类数值运算的最佳选择,它具有良好的 C 语言 API。当开发者需要性能方面的特性,可以将Python与 C/C++ 结合使用。


在这种趋势下,根据搜索和索引的趋势,Python 的确已经成为世界上使用最多的语言。


然而,这并不意味着 Python 会一直保留它的位置。


其它一些语言可能表现出比 Python 更好的性能并取代它,例如 Rust。亚马逊和 Facebook 宣布他们开始使用 Rust 来开发内部 CLI(命令行界面)工具。此外,6.1 版之后的 Linux 内核已经包含 Rust。它对编程语言的支持非常强大,正如大家所见到的,它在 1 年内从第 26 位上升到第 20 位。


这个问题仍然没有回答:我们如何预测未来?

答案


很抱歉让大家阅读所有这些内容,这个问题其实并没有什么意义。


那么,我们为什么要这样做?我们在狂热地支持一种语言或一种技术?一般的答案是因为人们都很懒惰。我们正在学习一种编程语言或技术,然后围绕这些工具开发出一个舒适区。然后我们不想改变它,想让它一直留在我们的舒适区内。


狂热支持 C 和 C++ 的人之所以这样做,是因为他们不想再从头开始学习像 Rust 这样的新编程语言。则支持 Rust 的人更加狂热,因为他们不想学习 C 和 C++,因为他们有点难,需要注意的事情非常多。


我认为这两种方法都是错的,我们不应该再犯这个错误。在我看来,人类应该比这些弱点更优秀才对。



事实上,编程语言只是和螺丝刀一样的工具。

如果你需要用圆头螺丝刀,就不要用平头螺丝刀。我们要根据自己的情况来决定,如果你有能力决定螺钉的类型,就需要考虑墙壁的结构或使用的材料。根据现实情况,你可能会使用胶带或其他东西,工程师应该根据个性化需求考虑最优化的解决方案。

简而言之,最终没有一个编程语言可以独当一切。只有根据公司当前职位的需求,然后去适配,使用正确的工具,仅此而已。

要实现以上要求,就要求我们非常了解要选择编程语言的特性、优势以及缺点。

作者:场长


相关阅读:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存