编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

2023-05-29 0 899

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

【CSDN 萨德基】数十种C词汇不断涌现,关于谁优谁劣的争辩也不曾断过,但为什么浑然不觉此种争辩的出现,责任编辑译者者揭秘沃埃尔地导出道:「标准答案很简单,即使他们懒。当大家学习了一种C词汇或控制技术之后,就期望紧紧围绕这种C词汇或控制技术建立两个宽敞区,然后待在宽敞镇内墨守成规」。

不过,在市场竞争十分激烈的环境下,这样的作法显然不单单,那么,未来颇具发展潜力的C词汇到底有什么样呢?何不通过责任编辑的数据对照一探到底。

书名镜像:https://medium.com/codex/the-programming-language-s-of-the-future-24af5cfa8479

新闻稿:责任编辑为 CSDN 译者,需经容许,明令禁止转发。

译者者 | Ugur Yagmur 译者者 | 弯月 白眉林 | 屠敏公司出品 | CSDN(ID:CSDNnews)

我讨厌写作有关程式设计的发问和答疑。最近,我时常看到以下这类难题:

何种控制技术会替代 JavaScript?

Kotlin 有机会替代 Java 吗?

Rust 会替代 C++ 吗?

何种词汇最有期望替代 C?是 D、Go 还是 Rust?

我特别讨厌最后两个发问,即使提难题的人非常坚信 C 词汇会被替代,还得出了候选标准答案。我指出,好景不长学术科学论文《Energy Efficiency across Programming Languages》(《C词汇的能源消耗》:https://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf)发表以来,这类难题的探讨越来越频密。我指出,所有这些难题最终都可以归因于两个常用的难题:今后他们会使用什么样C词汇?

在责任编辑中,我将提及上述科学论文的许多结果,并分析许多其他的统计信息,看看能不能找到这个难题的标准答案。具体来说言明,就要尽量撇开个人仇恨,保持主观。上面,他们具体来说来看细看这篇科学论文。

《C词汇的能源消耗》科学论文

如果看过上述科学论文,你可能对上面这张表格不陌生:

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

我见过很多次,各大社交媒体平台上都有人分享这张表格,相信几乎无人不知。但是,在深入研究结果之前,我想先分享许多背景信息。

关于科学论文得出的这些结果,首要难题是这些结果是如何测量的。普遍接受的测量 CPU 性能的方法是基准测试。科学论文的译者者也针对多种C词汇实施了基准测试,他们采用了 10 个不同的程式设计难题,然后通过这些词汇解决这些难题,统一采用了“计算机词汇基准测试游戏”中定义的算法。下表得出了这些算法及其数据大小:

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

CLBG 的程序库

此外,他们还根据下表中得出的范例对C词汇进行了分类:

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

然而,性能测试并没有考虑到程式设计范式,重要的是C词汇的类型:编译型、解释型,还是使用了虚拟机?编译词汇、虚拟机词汇和解释词汇之间存在明显的性能以及能源消耗差异。因此,他们针对各个类别,采用这些算法进行测试,此种作法是正确的。

下一步是执行计算机词汇基准测试。他们分享了几个难题的结果,他们来看细看。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

两个 CLBG 的结果

能源消耗的测量以焦耳为单位,时间以秒为单位。而比率是能源消耗与时间的比值,得出的是计算词汇的能源消耗近似值。另外,各个词汇名称旁边还有上下箭头。箭头代表在根据执行时间对这个表进行排序的过程中,该C词汇上升或下降了多个位。双线箭头是同样的意思,但顺序是根据内存使用情况的峰值决定的。

当我在社交媒体上看到上面分享的第两个表格时,我指出执行时间的顺序也很重要,只不过他们没有分享。但实际上他们专门做了执行时间的分析。根据他们对指标的了解,例如在二叉树难题上,C、C++ 和 Rust 得出了最好的结果,但是从内存的角度来看,Rust 的性能稍差。另一方面,fannkuch-redux 基准游戏中的 C 也有着相同的表现。二者没有明显的区别。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

fasta CLBG 的结果

另一方面,fasta 基准游戏向他们展示了两个完全不同的表格。各个词汇的性能表现得越来越模糊。但这些都是针对特定的情况,因此他们可以分析一下其他结果。

这篇科学论文还比较了各个类别下的词汇,因此你可以比较一下编译类型以及解释类型下各个词汇的表现。上面得出了这三个类别的词汇的测试结果。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

不同词汇之间的度量衡比较

有关这篇文章的探讨到此为止,如果你感兴趣,可进一步写作科学论文。最终,他们得到的就是上面这张表格(前面分享过):

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

从最终结果来看,似乎 C 词汇在能源消耗和性能方面的表现最优,内存除外。但其实它的内存表现也不错。

其次是 Rust 和 C++。因此,他们可以说 C 和 Rust 是最优选择。然而,这几种词汇不支持面向对象程式设计。(你可以指出Rust支持面向对象编程,但它只支持接口(或 Rust 词汇中的特征),而不支持面向对象程式设计结构)。

对于使用面向对象程式设计的各个公司来说,易用性也很重要。老实说,C、C++ 和 Rust的使用难度都不低,你必须考虑生命周期、动态分配等难题。因此,除了编译词汇、虚拟机词汇和解释词汇之外,他们应该把面向对象这个类别也考虑进来。但是,其实前三个类别中也存在很多差异和模糊性。如果将易用性和实现结构也考虑进来,那么结果将变得更加模糊。

到此为止,他们比较了这些词汇的能源消耗、内存需求和测试所需的时间。然而,他们不能仅通过这些指标来决定何种词汇最优。但是,如果添加的指标过多,结果就会变得过于复杂,无法选择出一种最优的词汇,或每种类型中的最优词汇。

这里,我建议改变一下策略,让他们假设人是非常有逻辑的。通常经济科学论文会做这样的假设,尽管人类并不是特别有逻辑。但是,让他们假设人类非常有逻辑,而且很挑剔。那么,他们如何才能选出最优词汇呢?首先,他们需要分析C词汇的使用趋势。如何测量?网上保存了大量代码,其中大部分都保存在私人代码库中。他们知道所有开发人员在遇到软件难题时都会使用搜索引擎,因此他们可以看看搜索引擎的统计数据。

Google 的统计结果

名前三的词汇(C、C++ 和 Rust)以及 Java 的结果。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

Google 平台上自 2004 年以来, C、C++、Rust 和 Java 的趋势

Java 的使用量似乎超过了其他编译词汇,但 Java 本身的使用量在逐年下降。C 和 C++ 的结果非常接近。但是,Rust 的使用量非常低。这可能是即使它是一种新词汇。

公平地说,虽然相对于 C 和 C++ 来说,Rust确实很新,但它是2010 年 7 月发布的,已经过去12年了,这期间并没有太大的起伏。这个结果与上述科学论文得出的结果有很大的不同。上面,除了Java之外,他们再挑选 4 种不同的词汇:Kotlin、Javascript、Python 和 Go。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

Google 平台上,自 2004 年以来,Java、JavaScript、Python、Go、Kotlin 的趋势

这次呈现出的流行趋势又变了。Python 最初的流行度很低,但如今已成为炙手可热的C词汇。Java 和 JavaScript 排在第二位。如今的榜首是 Python,上面他们再比较一轮。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

Google 平台上,自 2004 年以来,Python、JavaScript、Ruby、Swift 和 TypeScript 的趋势

看来最终的输家是 Python!尽管如此,他们还是应该尽量主观。上述,他们只分析了两个搜索引擎的统计数据,上面,他们来看细看 TIOBE 指数。

TIOBE 指数

TIOBE 是一家专门评估和跟踪软件质量的公司。你可以通过他们的网站了解更多相关信息(https://www.tiobe.com/)。他们的主要服务是测评软件代码库的质量。他们创建了一个名为TQI(TIOBE Quality Indicator,TIOBE 质量指标)指标,下图是该指标的许多示例。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

该公司创建了两个C词汇指数,名叫“TIOBE指数”。他们利用这个指数,根据搜索引擎的流行趋势来衡量C词汇的性能。

该指数最新的结果如下:

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

这与Google流行趋势得出的结果非常接近。然而,根据这个指数,C是排名第二的C词汇,这有点出乎意料。此外,TIOBE还有两个C词汇性能的历史表,如下所示:

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

很明显,在很长的一段时间里,C词汇一直是 Java 和 C 的天下。后来,Python 流行起来,跃居榜首。他们需要注意,关键在于,流行趋势是不断变化的。以前 Java 是第一,如今变成了 Python。

那么,他们应该如何衡量C词汇未来的发展潜力呢?

未来的可能性

在过去的 10 年里,机器学习和人工智能一直是热门话题。Python 是此类数值运算的最佳选择,即使它有两个很好的 C API。如果你非常注重性能,那么可以将 Python 与 C、C++ 结合起来。在此种趋势下,根据 Google 搜索引擎和 TIOBE 指数的结果来看,Python 是如今使用最广泛的C词汇。

然而,这并不意味着 Python 的地位保持不变。最近,有许多C词汇展现出了更好的性能,很有可能会替代 Python,比如 Rust。亚马逊和 Facebook 已经宣布他们改用 Rust 来开发内部的命令行界面工具。另外,Linux 6.1 版本之后,内核也包含了 Rust。近来 Rust 的呼声很高,如你所见,它的排名在一年之内从第 26 位上升到了第 20 位。

那么,他们到底该如何预测未来呢?

标准答案

很抱歉,虽然他们花费了大量篇幅探讨了这么多,但实际上这个难题毫无意义。他们不是政客,没有人给他们预算或金钱支持这些控制技术趋势。

那么,他们为什么要不停地比较呢?为什么他们要狂热地支持一种词汇或一种控制技术呢?答案很简单,即使他们懒。他们学习了一种C词汇或控制技术,就期望紧紧围绕此种C词汇或控制技术建立两个宽敞区,然后呆在宽敞镇内墨守成规。

为什么有人如此狂热地支持 C 和 C++?即使他们不想学习 Rust 这样的新词汇。而反过来,有人狂热地支持 Rust,是即使他们不想学 C 和 C++。

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?《后浪》海报预见大结局,孙头头是人生赢家,五人各有去处

说到底,C词汇只是工具,就像螺丝刀一样。在需要使用圆头螺丝刀的时候,你就不能一意孤行使用一字螺丝刀。你需要根据实际的情况做决定。没有任何一种C词汇能够替代一切,成为终极C词汇。你需要根据当前岗位的要求,选择使用正确的工具。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务