【CSDN 编者按】创建软件时,我们都要考虑的选择哪门编程语言。每种语言的实现方式不同,因此每种语言都有各自的优势。然而,对于有些编程语言来说,速度根本不是它们的优势。

编译 | 弯月   责编 | 张文

出品 | CSDN(ID:CSDNnews)

编程语言的问世,距今已有几十年的历史了。每种语言的诞生都是为了满足特定的需求。

截止到今天,全世界共有大约 700 多种编程语言。然而,仍处于活动状态的只有 250 来种,其余的都被编程社区抛弃了。(来自维基百科的最新数据)

性能一直是程序员非常关心的方面。很久以前,程序的执行需要花费几天的时间,如今我们以秒为单位来度量。这完全要归功于电子行业的发展进步。

硬件的发展速度遵循摩尔定律。在电子产品中,速度和性能取决于特定芯片可以拥有的晶体管数量。根据摩尔定律,这个数字每两年就会翻一番。这就是为什么如今手机的速度和性能甚至远远超过了 1990 年代的超大型计算机。

对于计算机科学来说,代码的运行速度和 PC 的运行速度完全是两码事。英特尔和 AMD 出色地推动了 PC 机的运行速度。然而,创建健壮、快速的程序的重任就落到了软件工程师的肩上。

创建软件时,我们都要考虑的一件事是编程语言。每种语言的实现方式不同,因此每种语言都有各自的优势。然而,对于有些编程语言来说,速度根本不是它们的优势。

如果你想构建一个程序,运行游戏或执行大量数学计算,则最好避开速度比较慢的编程语言。

通常,编程语言可以大致分为两类:

  • 静态类型的编程语言

  • 动态类型的编程语言

静态类型的语言一般都需要编译,这意味着编译器程序会解析整个代码,并将其转换成汇编语言,然后再生成一个新文件。而这个文件可以由用户手动执行。

另一方面,动态类型的编程语言通常是解释型的,意味着解释器会逐行分析并运行代码。

我们大多数人都喜欢动态类型的语言。比如 Python,不易出错且方便人类理解。但是这种方便性是有代价的,我们付出的代价就是速度。

在本文中,我们就来看一看常见的一些速度非常慢的动态类型编程语言

Perl

如果你有使用 UNIX 的经验,那么一定见过 Perl 脚本。大部分的 UNIX 文件都是用 Perl 编写的。

Perl 是 Unix 的脚本语言。这种语言的诞生是为了减轻程序员编写 Shell 程序的负担。它只是将一堆 Shell 命令塞到了一个文件中。

更重要的是,有些任务如果利用 C 语言和其他 Unix 语言编写的话,简直就是噩梦,而 Perl 降低了这些任务的难度。当然,取代 C 语言也会付出代价。

事实证明,Perl 在速度方面确实有所欠缺。

此外,如今找到一位出色的 Perl 程序员的难度,不亚于大海捞针。例如,与 Python 不同,Perl 对实现非常敏感,每个操作符都必须正确地使用,才能创建相对高效的程序。

即使按照最有效的方式实现,Perl 的运行速度仍然落后于其他同等的高级编程语言。然而,如今 Perl 仍在发展,效率的问题也相继得到了解决,特别是 2019 年发布的新版本(又名 Raku)。

PHP

PHP 是一种脚本化 Web 开发编程语言,通常用于 Web 应用程序的开发,是 HTML、CSS 和 MySQL 的补充。

许多人认为 PHP 已经过时了。但事实并非如此!

根据 2020 年 StackOverflow 的调查,PHP 依然榜上有名:

然而,由于 PHP 的学习曲线比较平缓,而且易于托管,因此性能方面的表现不佳。

由于缺少即时编译(JIT 编译器),因此 PHP 的运行速度非常慢,而且它还是一种动态类型的语言。幸运的是,在 2020 年 11 月 26 日,PHP 8 推出了一项性能优化功能:内置的 JIT 编译器。内置的 JIT 编译器可以从速度和性能方面,帮助 PHP 逐渐向同类的编程语言靠拢。

Ruby

Ruby 的创始人松本行弘曾在 Ruby 社区中说:“Ruby旨在让程序员开心。”

Ruby 是一种面向对象的编程语言。一切都可以解释成对象。因此,Ruby 很优雅,而且非常便于使用。只需要轻轻挥动魔法棒,任务就完成了。

然而,从性能来看,Ruby 是一种典型的解释型语言。因为解释型语言需要逐条运行代码,因此与使用编译器的语言相比,它们的速度往往更慢。

为了解决速度的问题,Ruby 引入了全局解释器锁(Global Interpreter Lock,简称 GIL),这意味着该语言一次允许一个线程使用 GIL。

另外,Ruby 还有其他方面的困扰,比如内存消耗过高、垃圾回收缓慢等。

Python

万能的 Python 几乎常年占据各类编程语言排行榜的榜首。Python 主要用于数据科学、Web 开发和网络安全等领域。

毋庸置疑,Python 有很多的优点。然而,Python 也有速度的问题。

Python 和 Ruby 都来自同一个家族,由于 GIL 以及解释器的使用,它们的速度都很慢。二者的主要区别在于,前者倾向于 Web 开发,而后者则主要面向数据科学。

但是,Python 拥有强大的库和功能作为后盾。部分库和函数极大地提高了性能,比如 Numpy 模块和内置的 Filter()都是用 C++实现的。这就是为什么 Python 蓬勃发展,超越其他编程语言的原因。

总结

虽然速度和性能是实现软件时需要考虑的重要因素,但我们不应该将全部责任都推到编程语言身上。很多时候,造成速度和性能主要问题的根本原因在于,不良的实现和不合理的设计。

参考链接:https://medium.com/better-programming/the-slowest-modern-programming-languages-d29ea2306675

程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!

☞抖音否认封杀腾讯;程序员拒绝带电脑回家被开除,获赔 19.4 万;Excel 具备图灵完备性 | 极客头条
☞编程网站 Perl.com 被劫,售价 19 万美元
☞谷歌下架应用引争议,网友请愿 GitHub 开发「App Store」!
☞打造 AI 语音新标杆,英特尔与腾讯云小微创新共赢

PHP、Python 上榜最慢的现代编程语言相关推荐

  1. PHP、Python 竟上榜最慢的现代编程语言

    [CSDN 编者按]创建软件时,我们都要考虑的选择哪门编程语言.每种语言的实现方式不同,因此每种语言都有各自的优势.然而,对于有些编程语言来说,速度根本不是它们的优势. 编译 | 弯月   责编 | ...

  2. 本周上榜程序员专业新书6本,其中Python书2本,算法书1本

    本周有哪些上榜新书,小编来与您分享下,看看这些专业书籍中有没有你已经正在读的. 1.数据结构与算法之美(全彩印刷) 王争 著 20个经典数据结构与算法 100个真实项目场景案例,300多幅算法手绘图解 ...

  3. python目前版本强势英雄_王者荣耀:目前版本最强势的英雄有哪些,元歌必须上榜...

    原标题:王者荣耀:目前版本最强势的英雄有哪些,元歌必须上榜 在王者荣耀游戏中可以说一个版本诞生一代强力英雄,那么在现在最新版本呢,哪些英雄是比较强势的英雄呢?今天我们就来说说当前版本中最强势的英雄. ...

  4. 【Python可视化】2021年最新世界大学排名,来看看你的母校上榜没~

    前言 世界上较为主流的大学排名有美国U.S. News世界大学排名.英国QS世界大学排名.英国泰晤士高等教育世界大学排名,以及学术类排名如世界大学自然指数排名.中国软科世界大学学术排名等.影响力较大的 ...

  5. 刚刚!2020世界大学学术排名正式发布:中国内地144所大学上榜!

    文末留言区送 5 本北京大学出版社赞助书籍 来源:软科 编辑:双一流高校 8月15日,2020软科世界大学学术排名如期发布! 排名展示了全球领先的1000所研究型大学,中国内地共有144所大学上榜,清 ...

  6. 一秒钟就破解!2020年最烂密码出炉,看看你的上榜没?

    /来源:毒科技/ 密码对保护用户帐户起着至关重要的作用,若出于好记而选择简洁的密码,也意味着它更容易被黑客青睐. 每年,全球各个安全组织都会发布更新的最常见密码列表,这些列表是由于数据泄露而在数百万公 ...

  7. 本周上榜的这9本原创技术书很赞,《数学之美》作者吴军博士新书霸榜

    刚刚小编看了一下排行榜,发现本周原创技术书上榜的很多,分享给程序员们,给你们做参考.支持原创图书从你我开始. 1.计算之魂 (<数学之美><浪潮之巅>等畅销书作者吴军博士新作, ...

  8. 海云安应用安全测试、移动应用安全、开发安全再次上榜

    2022年4月27日,数说安全正式发布<2022年中国网络安全市场全景图>(以下简称全景图),海云安实力上榜应用安全测试.移动应用安全.开发安全三个领域. 数说安全作为一家行业内以数据为基 ...

  9. 十种最令人讨厌的编程语言,你使用的语言上榜了吗?

    本榜单统计的是跨语言开发者最讨厌的编程语言,比如你最喜欢使用A语言来编程,那么可能会对其他语言的某些特性看不惯.这是一种很主观的看法,上榜的语言不代表这个语言不好,只是说明某些开发者不太喜欢这个语言中 ...

最新文章

  1. nginx 指向一个文件夹_弄懂nginx的语法就是这么简单
  2. 11.m进制转十进制
  3. luogu P2018 消息传递
  4. 初识Python导图笔记
  5. PHP开发入门 | 简单的PHP新闻管理系统案例
  6. 步进电机工作原理 驱动 _28BYJ-48 以及程序实例下载
  7. 微信表情和emoji对应代码
  8. 简单概括一下《金字塔原理》的主要内容?
  9. yarn : 无法加载文件 C:\Users\wangxin67\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mic
  10. 知识赛道悖论之年:“娱乐至死”的抗争
  11. “携手共建互联网安全生态”研讨会在京召开
  12. Tensorflow之搭建神经网络八股
  13. 使用 MAUI 在 Windows 和 Linux 上绘制 PPT 的图表
  14. (6) IFC构件与空间的关系 (Industry Foundation Class)
  15. ...可变形参的使用
  16. rust快速升级墙指令_外服一键升级指令是啥呀
  17. 2016-2017寒假社会实践报告
  18. ESP8266-Arduino编程实例-MS5611气压传感器驱动
  19. niuke 题霸 SQ/L篇
  20. 2018年全国计算机网络大赛,2018年全国职业技能大赛高职组计算机网络应用赛项真题-I卷.docx...

热门文章

  1. Java语言对对象引用的4种方式
  2. Java学习:抽象类与接口
  3. MPMoviePlayerController属性,方法,通知整理
  4. Head First Python 学习笔记(第二章:分享你的代码)
  5. Javascript是实现HTML5强大功能的重要语言
  6. SQL:查询、替换字符串中的回车、换行、回车换行
  7. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·004【App.vue引入全局公共样式】
  8. [vscode] convert tabs to spaces
  9. 利用Python K-means实现简单图像聚类
  10. mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14