Perl 正在消亡吗?

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

编程语言是否有濒危物种列表? 如果有,《命令行英雄》认为 Perl 介于易危和极危之间。 这期播客(第三季,第 4 集)关注的是 20 世纪 90 年代的主流语言,并探讨了自 30 多年前推出以来 Perl 的兴衰历程。

时间线

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

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

发生了什么?

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

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

生命周期管理

总的来说,我对于某些语言无法生存的想法感到释然。BASIC 语言现在并不在软件训练营的热门列表上。 但也许 Perl 并非走在相同的轨迹上,并且可能成为针对系统挑战的粘合代码等更特定类型问题的最佳选择。

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

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

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

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

I'm happiest at a microphone
Matt 曾是 EMC 存储专家、VMware vExpert 以及其他专有技术的爱好者。 他现在专注于开源和 DevRel 采用。

14 条评论

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

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

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

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

我开始学习 Perl,但在尝试决定学习 Perl 5 还是 Perl 6 时有点困惑。 “澄清” Perl 6 实际上是它自己的语言(?)而不是 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 社区继续创建各种优秀的应用程序,拥有酷孩子们拥有的所有花哨功能。

我使用 Perl 6,我喜欢它。

几年后,我们部门用 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 完成一个项目时,我只需几个小时即可使用 Perl 5 完成它。 抱歉,但这是事实。

Perl 6,我不知道为什么会存在这个东西。
如果需要,我会跳上 GOlang 的列车。
Perl 适合任何人吗? 当然不!

G.Bouras

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

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.