最近,我特别喜欢阅读和编程相关的问题与答案,这是因为我可以从其他程序员的经验中享受很多益处,少走很多弯路。
比如最近我看到了类似不同语言被替代的一系列问题:
有取代 JavaScript 的技术吗?
Kotlin 有机会替换 Java 吗?
Rust 会取代 C++ 吗?
在 D、Go 和 Rust 之间,哪种语言在替代 C 语言方面最有前途?
我个人比较喜欢最后一个问题,我觉得提这个问题的人一定很确定自己的选择。这些问题也不约而同地引发一个共通问题:
未来的编程语言是什么?
在本文中,我们将通过分析相关统计数据,尝试找到该问题的答案。在开始之前,我们会尽可能客观,尽量不给大家一个有偏见的结果。
我们从最新的数据开始。
背景
如果经常阅读21CTO的文章,我相信你一定看过下面的表格:
大家综合上图,作者将范式类型分为函数式、指令型、面向对象型与脚本语言,最重要的是编程语言的类型:是编译型、解释型还是与虚拟机联合使用。编译语言、虚拟机语言以及解释型语言,它们之间是存在明显的性能和空间占用差异的。
为此,作者又使用了一些算法进行测试。
接下来便是执行 CLBG 测试(Computer Language Benchmarks Game,用于比较性能的免费软件项目,其中包含一组标准的算法问题和用于运行测试的框架),下面是测试的结果数据。
上面的表格能量以焦耳为单位,时间以秒为单位,比值是能量除以时间的值,用来计算语言的大致功耗。
我们对测试指标详细了解,例如对于二叉树算法,C、C++ 和 Rust 给出了最好的结果,但从内存的角度来看,Rust 的性能稍微差了一些。另一方面,这同样适用于 fannkuch-redux 基准测试游戏中的 C语言。
fasta CLBG基准向我们展示了一张不同的表格,数据稍有点模糊。
这里,我想改变一些策略:假设人们都非常合乎逻辑。
在经济学论文中,它会认为人类并不会那么合乎逻辑,但技术人员中通常会假设这一点是真的。
假设我们非常合乎逻辑和挑剔,那么如何才能决定最好的语言呢?
我们通过分析使用最多的编程语言趋势。
如何衡量?有很多代码是在网络空间中编写的,其中大部分都保存在私人存储库中。既然我们知道开发人员在遇到问题时都会使用搜索引擎,是否可以检测搜索引擎统计数据?
谷歌统计
根据谷歌统计数据与我们之前得到的结果有点不大相同。让我们先排除Java ,选择 4 种不同的语言比较,分别是:Kotlin、Javascript、Python 和 Go。
大家看,表格发生变化了,现在有一个非常不同的趋势。Python 起点开始很低,但它现在已经是市场份额最高的语言;Java 和 JavaScript 紧接着排在第二位。
Python 现在确实是领头羊,但我想再来一轮比较。好的,结果出来了,我们还是只有一个赢家,那就是:Python!
尽管如此,我们还是尽可能客观,因为我只分析了一个搜索引擎的统计数据,它虽然是世界上最主流的搜索引擎之一,但结果可仍会发生变化。我们也不能一个一个地把搜索引擎组合起来,它会花费我们太多的时间。
好消息是有一家公司正在为我们开发者干这件事。
这与我们在 Google 趋势中看到的结果非常接近。
但是在这个排行榜中,C 是第二个最常见的语言,这是出乎意料的。此外,还有一个编程语言性能的历史图表,如下图所示:
很明显,Java 语言长期以来一直主导第一名。然而,Python 已经变得流行起来,并且成为了新的霸榜语言第一名。
这里有一个关键点需要注意:编程趋势是在不断变化。Java 是曾经的第一名,但现在是 Python,虽然在 2010 年之前它的排名曾经非常低。
问题来了,我们如何衡量编程语言的未来潜力?
这个问题仍然没有回答:我们如何预测未来?
事实上,编程语言只是和螺丝刀一样的工具。
如果你需要用圆头螺丝刀,就不要用平头螺丝刀。我们要根据自己的情况来决定,如果你有能力决定螺钉的类型,就需要考虑墙壁的结构或使用的材料。根据现实情况,你可能会使用胶带或其他东西,工程师应该根据个性化需求考虑最优化的解决方案。
简而言之,最终没有一个编程语言可以独当一切。只有根据公司当前职位的需求,然后去适配,使用正确的工具,仅此而已。
要实现以上要求,就要求我们非常了解要选择编程语言的特性、优势以及缺点。
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。