Perl 正在消亡吗?

《命令行英雄》节目探索了 Perl 的迅速崛起、从聚光灯下的衰落,以及这种编程语言生命周期中的下一步。
144 位读者喜欢这个。
Listen to the Command Line Heroes Podcast

编程语言是否有濒危物种列表? 如果有,《命令行英雄》认为 Perl 介于易危和极危之间。 这门 1990 年代的主流语言是本周播客(第 3 季,第 4 集)的焦点,并探讨了自 30 多年前推出以来它的兴衰。

时间线

1991 年是改变一切的一年。 Tim Berners-Lee 发布了万维网。 互联网已经连接计算机 20 年了,但 Web 以全新的方式连接了人。 基于 Web 的开发的全新领域打开了。

上周的剧集探讨了JavaScript 的诞生以及如何引发了浏览器大战。 在这种语言统治 Web 之前,Perl 非常流行。 它是开源的、通用的,并且几乎可以在所有类 Unix 平台上运行。 Perl 允许运行任何系统管理员都会欣赏的一套熟悉的实践。

发生了什么?

那么,如果 Perl 在 90 年代表现如此出色,为什么它开始衰落呢? 2000 年互联网泡沫破灭,第一波令人兴奋的 Web 开发浪潮即将让位于更流畅、更快、不同的新一代。 Python 成为了初次开发者的最爱,就像 Perl 曾经是一种有吸引力的第一语言,从 FORTRAN 或 C 语言中抢走了新手一样。

Perl 备受推崇,因为它允许开发人员以多种方式解决问题,但这一特性后来被称为缺陷。 Python 推崇唯一的正确答案最终成为了许多人想要去的地方。 Conor Myhrvold 在《Fast Company》中写道,Python 如何变得更具吸引力,以及Perl 可能采取哪些措施来跟上。 由于这些原因以及其他无数原因,例如 Perl 6 的延迟,它失去了势头。

生命周期管理

总的来说,我可以接受某些语言无法生存的想法。 BASIC 现在并没有出现在软件训练营的热门列表上。 但也许 Perl 并没有走上同样的轨迹,并且可能是系统挑战的粘合代码等更特定类型问题的最佳选择。

我喜欢《命令行英雄》主持人 Saron Yitbarek 在播客节目结尾的总结

“语言有生命周期。 当适应新现实的新语言出现时,像 Perl 这样的选项可能会占据更小、更细分的领域。 但这并不是一件坏事。 我们的语言应该随着我们需求的变化而扩展和缩小其社区。 Perl 是早期 Web 开发中的关键角色——它以各种方式与我们同在,只要稍作历史回顾并纵观全局,就会变得显而易见。”

了解 Perl 的崛起和寻找新利基市场的过程,让我想知道我们今天正在开发的新语言中,有哪些会在 30 年后仍然存在。

《命令行英雄》第 3 季将涵盖所有编程语言。 订阅,这样您就不会错过任何一集。 我很想在下面的评论中听到您的想法。

I'm happiest at a microphone
Matt 曾是 EMC 存储专家、VMware vExpert,并且曾经是其他专有技术的粉丝。 他现在专注于开源和 DevRel 的采用。

14 条评论

cPanel,为当今绝大多数网站提供支持,是用 Perl 编写的。 在几乎所有地方的后端使用意味着它仍然非常活跃。

我完全同意。 这个播客让我思考任何语言的长期愿景和寿命。 感谢阅读!

回复 作者 Naes (未验证)

我可以想到 Perl 衰落的三个主要原因。 首先,有许多编写糟糕的 CGI 脚本被发布,并被毫无戒心的新手大量使用来构建他们的网站。 这导致 Perl 产生了不应有的不安全和/或不安全的声誉。 其次,PHP 的出现使网站编写变得更加容易,因为它嵌入在 HTML 中,而不是必须生成每个页面的所有内容。 最后,Perl 6 的延迟发布意味着那些迷恋 OOP 时尚的人甚至没有考虑过这种语言。 因此,整整一代程序员从未费心去研究 Perl 作为他们的工具包。

对我来说,最关键的是当 Perl 大师们放弃 comp.lang.perl 而转向他们最喜欢的网站时。 我根本没有时间在网络上的半英亩土地上四处奔波以搜索信息和帮助,所以我转向了 Python,它仍然在 comp.lang.python 上得到积极的讨论和支持。 当然,我已经退休六年了,所以我不再真正需要任何一种资源了。 从那时起,我没有用任何语言编写过一行代码。 有一些 bash 脚本用于自动化一些重复性任务,但仅此而已。

Perl 的开发在 v5.8 版本停滞了十多年。 那是它失去势头的时候。 重新获得势头需要一些努力。

我开始学习 Perl,但在试图决定学习 Perl 5 还是 6 时,我有点困惑。 “澄清” Perl6 实际上是它自己的语言(?)而不是 Perl 5.x 的后继者并没有帮助,所以对我来说它仍然是一个谜,所以我还没有开始学习任何一个。

来自不使用 Perl 的人的精彩评论。 我目前在里加的“https://perlcon.eu/”。 我们年龄混合,并且在 Perl 6 的发展中有很多乐趣。 不止一种方法描述了许多项目和编程语言的现实。 所有只允许一种方法的编程语言都会产生大量开销。

Perl 是正则表达式的领导者,正则表达式被导入到所有类型的其他工具中,例如“grep -P”。
另一方面,Perl 是最难以辨认的语言(他们甚至为此举办了一个比赛)。

自 2000 年代以来,Perl 一直是一种低流行度的语言,因为 PHP 压倒了所有人。 “Perl 的死亡”已经持续了 17 年!

与此同时,Perl 5 每年都会收到主要版本,包括今年刚刚发布的优秀的 5.30 版本。 CPAN 仍然非常活跃,我们的主要库不断收到更新,尤其是出色的 Malicious 和 Dancer 应用程序框架。

这个播客似乎更像是 Python 程序员的论坛,而不是知情的 Perl 专家,这有点遗憾。 关于 CPAN 实际上是一个问题,因为它最好是从头开始构建一切,这真是太离谱了。 此外,Python 确实有他们的 CPAN 模仿者 PyPl。

不,Perl 并没有沦落为一种“仍然”只适用于“shell 脚本”的语言。 Perl 社区继续创建各种出色的应用程序,拥有酷孩子所拥有的所有花里胡哨的东西。

我使用 Perl6,我喜欢它。

几年后,我们用 Python 3 替换了我们部门的所有 Perl/batch/VB 应用程序。 从我们的角度来看,这非常棒,因为 Python 更容易被所有相关人员(工程师/程序员)阅读和维护。 我们一点也不怀念 Perl。 话虽如此,我们维护的一个供应商系统在其系统中使用了 Perl 进行相当多的流程。 幸运的是,我们不必经常处理它。

我仍然喜欢 Perl 5 用于文本文件处理和执行 shell 和其他语言不太适合的系统管理功能。 但我可以说,我从来都不喜欢 Perl 模块系统,并且经常发现自己陷入依赖地狱,试图让一些看似简单的事情工作。 像 python/pip 和 node/npm 这样的新手在这方面做得好得多。

其他人在这里提到了 Web 技术......我从来没有认为 Perl 与 Apache 等集成得很好,并且使事情变得复杂。 PHP 在那里胜出,因为它实际上不是一个被迫身兼数职的 CLI 工具......它是一个一流的 Web 模块公民,而且在我看来,语法比 Perl 更容易。

我认为 Perl 语法的灵活性也对它不利。 我见过开发人员以编写非常晦涩难懂(且无法维护)的代码为荣。 这实际上是编码人员的错......但是当您被困在调试一些真正疯狂的语法时,这种语言会触及您的痛处。

我仍然觉得每种工具都有其利基市场......Perl 可能永远是我处理系统管理和文本处理任务的首选。 但我承认,当我需要生成更重要的代码、最终用户应用程序、Web 应用程序等时,我会转向其他语言。

James,

PHP 的语法确实很棒。 Perl 的语法也可以同样简洁,但您是对的,太多的 Perl 开发人员以编写丑陋的代码为荣。 “Perl 代码混淆大赛”是一个有趣的笑话,但最终伤害了我们的社区。

如果您必须编译所有内容,Perl 模块系统确实非常困难。 幸运的是,App::cpanminus 提供的“cpanm”命令使生活变得好多了,因此它基本上就像 PHP 的“pecl”或 Python 的“pip”这样的包管理器。

恕我直言,Apache 的 mod_perl 扩展与 PHP/Apache 的 mod_php 集成一样强大。 然而,该模型已转向将代码与 Web 服务器分开运行,以提高安全性和可移植性,例如 FastCGI,因此我们现在使用 Plack 进行 Web 应用程序。 Catalyst、Mojolicious 和 Dancer 是包含 Plack 的流行 Perl 框架。

现代 Perl 确实拥有“所有东西”,或者至少拥有其他伟大生态系统的“大多数东西”。 尽管如此,PHP 仍然有很多优势,它是一个极好的选择。

-Eric

回复 作者 JamesF

通常当我的同事需要数周和多次会议才能完成一个使用 Python/Java 的项目时,我只需几个小时就可以用 Perl5 完成它。 对不起,但这是事实。

Perl6,我不知道这个东西为什么会存在。
如果需要,我会跳到 GOlang 的行列。
Perl 适合所有人吗? 当然不是!

G.Bouras

好文章和有趣的评论。 让我们希望 Perl 仍然是活着的语言之一。

© . All rights reserved.