编程语言已经存在很多年,每种语言都是为了满足特定的需要而构建的。
到今天为止,全世界大约有700种编程语言。现在仅剩250种语言能存续下来,其余的基本上已经被编程社区抛弃了。
对于程序员来说,性能一直是一个必须考虑的问题。在过去,程序的运行时间可以用天数来衡量,而现在,归功于科技的进步,仅需几秒钟即可完成运行。
计算机进化的速度遵循摩尔定律:
摩尔定律
在电子学中,速度和性能转化为一个特定芯片可以拥有的晶体管数量。根据摩尔定律,这个数字每隔两年就会往上翻一番。这就是为什么你的手机比1990年代的房间大小的超级计算机快得多。
回到计算机科学,速度快的代码和速度快的电脑是有区别的。速度慢的程序和速度慢的电脑也是有区别的。虽然我们很多人无法影响计算机硬件的运行速度,但是代码的快慢却是我们可以控制的。
在开发时,我们往往都要考虑一个因素,那就是语言期望。每种语言的实现方式都不同,因此每种语言都有各自的优点,可能很少人会把程序的运行速度纳入语言的编程优点之中。
如果你正在做游戏类的项目,或者是需要繁重的数学计算等高要求的任务,最好不要用运行速度太慢的编程语言。
一般来说,编程语言有两种类型:
- 静态类型编程语言
- 动态类型编程语言
静态类型语言通常是编译的,意思就是编译器的程序会解析并将整个类似英语的代码转换为汇编语言,并生成一个新文件,这个文件可以由用户手动运行。
动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
大多数人喜欢动态类型语言。诸如Python之类的不易出错且易于人工解释的语言。但这是有代价的,那就是要牺牲运行速度。
在本文中,我们将列出4种相对很慢的常见动态类型编程语言。
1. Perl
如果你以前用过 UNIX,那么一定见过 Perl 脚本。因为大多数 UNIX 文件都是 Perl 格式。
Perl 是一种 Unix 脚本语言。它是为了减轻程序员不得不忍受编码冗长的 Shell 程序的困难而创建的,Perl 就是把很多 Shell 命令塞进了一个文件中。
更重要的是,Perl 还可以用来完成在 C 和其他 Unix 语言中难以完成的任务。
Perl 在运行速度方面的确令人头疼。
另外,现在想找到一个优秀的 Perl 程序员就像试图大海捞针。这是因为,与 Python 不同,Perl 对实现非常敏感,每个操作符都必须在合适的位置上才能拥有一个相对高效的程序。
即使有最高效的实现,Perl 仍然落后于其他的高级编程语言。但是,在2019年,一个版本名为 Raku 的 Perl 6发布之后,Perl 的速度问题正在一个又一个被解决。
2.PHP
PHP 是一种脚本 Web 开发编程语言,通常在网站部署中补充 HTML、CSS 和 MySQL。
许多人认为 PHP 已经过时了,但事实并非如此。
有研究表示:
在我们知道服务器端编程语言的所有网站中,有79.0%的网站都使用了 PHP。
除此之外,在关于编程、脚本和标记语言的“ 2020 StackOverflow ”调查报告中,展示了 PHP 依然是一种非常活跃的语言,排名在 C++和 Typescript 之上:
但是,由于 PHP 的学习曲线是渐进的,而且托管成本低,因此在性能方面会有所缺失。
PHP 的速度非常慢,因为缺少实时编译 (JIT 编译器),而且它是一种动态类型语言。很幸运的是,在 2020 年 11 月 26 日,PHP 8 推出了一个性能优化功能:内置的 JIT 编译器。
内置的 JIT 编译器帮助 PHP 在速度和性能方面接近其他同类编程语言。
3.Ruby
Ruby的官方作者 Yukihiro Matsumoto 曾说:
Ruby 旨在让程序员满意。
Ruby 是一种面向对象的编程语言,一切都可以被解释为对象。这使得它成为一个容易使用的工具。只需要动动手指,任务就能完成。
但是,在性能方面,Ruby 是一种典型的解释语言。由于解释语言是逐句运行代码语句,因此与使用编译器的语言相比,它们往往比较慢。
Ruby 的速度在全局解释器锁 (GIL)中再次被砍,因为该语言每次只能允许使用一个线程使用 GIL。
最后,Ruby 的速度还受到高内存消耗和垃圾收集慢的影响。
4.Python
在很多编程语言的排行榜中,Python 排名第一,成为很受欢迎的编程语言。它大量用于数据科学、Web 开发和人工智能等。
这里不是夸大 Python,因为它的优点多于缺点。但就目前情况来说,Python 的速度依然是个问题。
Python 和 Ruby 是相同属性的编程语言。由于 GIL 和使用解释程,两者速度都很慢。它们的主要区别在于前者以数据科学为主,而后者更倾向于 Web 开发。
但是,Python 有很多强大的库和功能支持。其中一些库和功能,如 Numpy 模块和 Filter() 内置函数,可以在C++中实现,从而在性能方面得到了显著的提升。这就是为什么Python现在正在迅速超越其他编程语言的原因。
最后
虽然在软件实现方面,速度和性能是需要考虑的重要因素,但不应将责任仅仅归咎于编程语言。
实际上,造成速度和性能问题的根本原因是糟糕的程序实现和代码设计。
尽管动态类型语言的速度很慢,但它们提供了很好的编程体验,并提高了工作效率。所以,很多事情都有两面性,编程语言也是如此。