Perl 正在消亡吗?

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

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

时间线

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

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

发生了什么?

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

Perl 备受推崇,因为它允许开发者用多种方式解决问题,但这个特性后来被认为是一个缺陷。 Python 推动形成唯一正确答案 最终成为了许多人想要的方向。《Fast Company》的 Conor Myhrvold 撰文写道,Python 如何变得更具吸引力,以及 Perl 可能做了什么来跟上步伐。 由于这些原因以及其他无数原因,例如 Perl 6 的延迟,它失去了势头。

生命周期管理

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

我喜欢命令行英雄 (Command Line Heroes) 的主持人 Saron Yitbarek 在播客剧集结尾对它的总结

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

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

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

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 还是 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.