社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

编程语言迎来「取代潮」,Python、Java、C/C++ 谁最危险?

CSDN学习 • 1 年前 • 124 次点击  

【CSDN 编者按】数百种编程语言层出不穷,关于谁优谁劣的争议也未曾断过,但为何总有这种争论的出现,本文作者直击要害地解析道:「答案很简单,因为我们懒。当大家学习了一种编程语言或技术之后,就希望围绕这种编程语言或技术建立一个舒适区,然后待在舒适区内固步自封」。

不过,在竞争日趋激烈的环境下,这样的做法显然不可取,那么,未来极具潜力的编程语言到底有哪些呢?不妨通过本文的数据对比一探究竟。

原文链接:https://medium.com/codex/the-programming-language-s-of-the-future-24af5cfa8479

声明:本文为 CSDN 翻译,未经允许,禁止转载。

作者 | Ugur Yagmur       

译者 | 弯月   责编 | 屠敏
出品 | CSDN

我喜欢阅读有关编程的提问和解答。最近,我经常看到以下这类问题:

  • 哪种技术会取代 JavaScript?

  • Kotlin 有机会取代 Java 吗?

  • Rust 会取代 C++ 吗?

  • 哪种语言最有希望取代 C?是 D、Go 还是 Rust?

我特别喜欢最后一个提问,因为提问题的人非常确信 C 语言会被取代,还给出了备选答案。我认为,自从学术论文《Energy Efficiency across Programming Languages》(《编程语言的能耗》:https://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf)发表以来,这类问题的讨论越来越频繁。我认为,所有这些问题最终都可以归结为一个常见的问题:将来我们会使用哪些编程语言?

在本文中,我将引用上述论文的一些结果,并分析一些其他的统计信息,看看能不能找到这个问题的答案。首先申明,我会尽可能抛开个人偏见,保持客观。下面,我们首先来看一看这篇论文。


01

《编程语言的能耗》论文


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

编程语言的比较,来源《编程语言的能耗》论文

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

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

CLBG 的程序库

此外,他们还根据下表中给出的范例对编程语言进行了分类:

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

下一步是执行计算机语言基准测试。他们分享了几个问题的结果,我们来看一看。

两个 CLBG 的结果

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

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


fasta CLBG 的结果

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

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

不同语言之间的度量衡比较

有关这篇文章的讨论到此为止,如果你感兴趣,可进一步阅读论文。最终,我们得到的就是下面这张表格(前面分享过):

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

其次是 Rust 和 C++。因此,我们可以说 C 和 Rust 是最优选择。然而,这几种语言不支持面向对象编程。(你可以认为Rust支持面向对象编程,但它只支持接口(或 Rust 语言中的特征),而不支持面向对象编程结构)。

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

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

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


02

Google 的统计结果


Google 的趋势分析工具是向所有人开放的。我曾使用这个工具来获取有关编程语言的 Google 搜索统计信息,但其中存在一个限制:只能获取 5 个搜索关键字的数据。因此,首先我们来看看排名前三的语言(C、C++ 和 Rust)以及 Java 的结果。

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

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

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

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

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

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

看来最终的赢家是 Python!尽管如此,我们还是应该尽可能客观。上述,我们只分析了一个搜索引擎的统计数据,下面,我们来看一看 TIOBE 指数。


03

TIOBE 指数


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

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

该指数最新的结果如下:

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

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

那么,我们应该如何衡量编程语言未来的潜力呢?


04

未来的可能性


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

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

那么,我们究竟该如何预测未来呢?


05

答案


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

那么,我们为什么要不停地比较呢?为什么我们要狂热地支持一种语言或一种技术呢?答案很简单,因为我们懒。我们学习了一种编程语言或技术,就希望围绕这种编程语言或技术建立一个舒适区,然后呆在舒适区内固步自封。

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

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

CSDN福利精选

好啦,今天的内容分享就到这,感觉不错的同学记得分享点赞哦!


PS:CSDN 学习  持续分享程序员学习、面试相关干货,每周不见不散!




    
点分享
点收藏
点点赞
点在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/149769
 
124 次点击