slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
未来编程语言趋势:哪个会更加流行?
17611538698
webmaster@21cto.com

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

编程语言 0 2105 2022-10-26 09:02:04

图片

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

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

  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 现在确实是领头羊,但我想再来一轮比较。好的,结果出来了,我们还是只有一个赢家,那就是: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++,因为他们有点难,需要注意的事情非常多。


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


图片


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

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

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

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


评论