未来编程语言趋势:哪个会更加流行?
最近,我特别喜欢阅读和编程相关的问题与答案,这是因为我可以从其他程序员的经验中享受很多益处,少走很多弯路。
比如最近我看到了类似不同语言被替代的一系列问题:
有取代 JavaScript 的技术吗?
Kotlin 有机会替换 Java 吗?
Rust 会取代 C++ 吗?
在 D、Go 和 Rust 之间,哪种语言在替代 C 语言方面最有前途?
我个人比较喜欢最后一个问题,我觉得提这个问题的人一定很确定自己的选择。这些问题也不约而同地引发一个共通问题:
未来的编程语言是什么?
在本文中,我们将通过分析相关统计数据,尝试找到该问题的答案。在开始之前,我们会尽可能客观,尽量不给大家一个有偏见的结果。
我们从最新的数据开始。
背景
如果经常阅读21CTO的文章,我相信你一定看过下面的表格:
上面的表格能量以焦耳为单位,时间以秒为单位,比值是能量除以时间的值,用来计算语言的大致功耗。
我们对测试指标详细了解,例如对于二叉树算法,C、C++ 和 Rust 给出了最好的结果,但从内存的角度来看,Rust 的性能稍微差了一些。另一方面,这同样适用于 fannkuch-redux 基准测试游戏中的 C语言。
fasta CLBG基准向我们展示了一张不同的表格,数据稍有点模糊。
这里,我想改变一些策略:假设人们都非常合乎逻辑。
在经济学论文中,它会认为人类并不会那么合乎逻辑,但技术人员中通常会假设这一点是真的。
假设我们非常合乎逻辑和挑剔,那么如何才能决定最好的语言呢?
我们通过分析使用最多的编程语言趋势。
如何衡量?有很多代码是在网络空间中编写的,其中大部分都保存在私人存储库中。既然我们知道开发人员在遇到问题时都会使用搜索引擎,是否可以检测搜索引擎统计数据?
谷歌统计
你知道,谷歌趋势工具对所有人是开放的。
我们使用这个工具来获取有关编程语言的搜索统计信息,但是有一个限制:只能从 5 个关键字中获取数据。
所以让我们从之前的结果,最受欢迎的 4 种编程语言开始。
根据谷歌统计数据与我们之前得到的结果有点不大相同。让我们先排除Java ,选择 4 种不同的语言比较,分别是:Kotlin、Javascript、Python 和 Go。
大家看,表格发生变化了,现在有一个非常不同的趋势。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++,因为他们有点难,需要注意的事情非常多。
我认为这两种方法都是错的,我们不应该再犯这个错误。在我看来,人类应该比这些弱点更优秀才对。
事实上,编程语言只是和螺丝刀一样的工具。
如果你需要用圆头螺丝刀,就不要用平头螺丝刀。我们要根据自己的情况来决定,如果你有能力决定螺钉的类型,就需要考虑墙壁的结构或使用的材料。根据现实情况,你可能会使用胶带或其他东西,工程师应该根据个性化需求考虑最优化的解决方案。
简而言之,最终没有一个编程语言可以独当一切。只有根据公司当前职位的需求,然后去适配,使用正确的工具,仅此而已。
要实现以上要求,就要求我们非常了解要选择编程语言的特性、优势以及缺点。
作者:场长
相关阅读: