34 年了,“杀”不死的 Perl!

作者 | 祝涛
出品 | CSDN(ID:CSDNnews)
2021年12月18日,Perl迎来了自己34岁的生日。
图片
当程序员聊到Perl会聊些什么呢?在各大平台搜索Perl时,你会发现大家对Perl的态度呈现出一种两级分化的状态,有人对Perl依旧保持着热情,视若珍宝,但也有人对Perl嗤之以鼻,有人甚至写下“Perl正加速走向死亡,也许2023年就会消失”的标题。
生存还是死亡,似乎成为了Perl绕不开的一个话题。
Perl发展历程
沃尔最早的确把这个语言称为“Pearl”(珍珠),因为他希望自己开发的语言有一个吉利的名字而且要尽量短小好记,他甚至声称早已考虑过所有三个及四个字母的词汇,以及自己妻子的名字Gloria。然而另一门语言PEARL早已存在,为了防止混淆,沃尔才把它改名Perl。
图片
图片来自i-Programmer
Perl 2在1988年发布,增加了更多特性,拥有更好的正则表达式引擎。Perl 3和Perl 4分别在1989年和1991年发布,
而1994年发布的Perl 5则是最重要的一个版本。Perl 5公布了许多个版本:Perl 5.6在2000年发布,Perl 5.8的持续开发贯穿了2002-2008年,5.10在2007年发布,5.12在2010年发布,此后Perl开始采取每月发布一个版本,每年发布一个稳定版本的发布周期。5.14在2011年发布,5.16于2012年发布,5.18于2013年发布。
2000年启动的Perl 6则完全重写了Perl,基于不同的原则,开发者决定先制定语言规格。2015年12月25日,开发了十多年的Perl 6语言在圣诞节正式发布。Larry Wall以Perl 6吉祥物Camelia的名义宣布Perl 6可以在产品中使用,但强调她仍然处于青春期,意味着她有几分成熟了,但还是会有问题。
Perl已死?
许多声称讨厌Perl的人,给出的理由多数是其可读性和维护非常差。
Perl语言的中心思想是:TMTOWTDI(There’s more than one way to do it),条条大路通罗马,解决问题的办法不止一个。Perl具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal等语言中分别借鉴了语法规则,从而提供了许多冗余语法。
也正是因为Perl的灵活性和“过度”的冗余语法,也因此获得了仅写(write-only)的“美誉”,因为Perl程序可以写得很随意(例如,变量不经声明就可以直接使用),但是可能少写一些字母就会得到意想不到的结果(而不报错),许多Perl程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍,这就令程序的维护者(甚至是编写者)难以维护。
同样的,因为Perl这样随意的特点,可能会导致一些Perl程序员遗忘语法,以至于不得不经常查看Perl手册。
TIOBE发布了今年12月的编程语言排行榜,前20名的榜单里,Perl一直处于下游阶段。相比于Python,Perl的境遇显得有些惨淡。当人们讨论“最受欢迎的编程语言”的时候,也很少有人会提到Perl。
图片
Perl未死!
程序员Nikos Vaggalis在一篇博客中表示,Perl仍然有巨大的使用价值,他给出了自己的理由。
多平台支持
甚至不需要使用VM(虚拟机),Perl就可以在上百种计算机平台和系统体系上运行,适用范围广泛,从Solaris到Windows 10,从大型机到便携设备。
多用途
Perl可以应用于计算机科学的所有领域,从数据库使用、正则表达式和解析,到系统管理, 还包括Web和桌面开发等等。Perl还被用于金融、生物以及其他领域。
丰富的语法
Perl拥有自然且富有表现力的语法,是一种成熟的编程语言。Nikos Vaggalis表示:“不要被网上流传的‘脚本语言’的说法所迷惑。我一直不明白为什么它获得了这个标签,但我猜这可能是因为它与Unix shell工具awk、sed等的古老关系。” Nikos Vaggalis认为,掌握这门语言将让许多难事变得有可能,甚至可以进入函数式编程的领域。
与Python相比, Perl的语法没有那么多限制,毕竟它的中心思想是TMTOWTDI(不止一种方法)。“有时候我想耍小聪明,有时候我想打安全牌,有时候我想做些尝试”,Perl提供了这样的环境。
Nikos Vaggalis说:“我记得当Java 8引入lambda表达式和函数式编程时,整个世界都为之惊叹。回顾过去,Perl几十年前就有了函数式编程(参见map、grep、子例程引用、Schwartzian Transform),但是却没有什么反响。”
Perl的未来
Perl仍然有巨大的价值与潜力,但也不得不承认它现在陷入了窘境。如何能让Perl重新流行起来呢?Nikos Vaggalis分享了一项调查,他表示,这个调查或许会给出答案。
问:您未来对Perl的期望是什么?
答:在不影响向后兼容性的情况下进行现代化改造。保持向后兼容性,但使其易使用现代功能。
问:作为个人,该如何支持Perl ?
答:1. 只需简单地使用它!2. 为CPAN做出贡献。(Comprehensive Perl Archive Network,译为“Perl综合典藏网”,“Perl综合档案网”或者“Perl程序库”)
问:Perl社区如何做出贡献?
答:1.推动人们对这门语言的热情;2. 确保CPAN上有足够好的内容来完成任务
问:Perl基金会如何帮助社区实现目标?
答:1. 宣传Perl的功能。将Perl集成到供应商的工具中会很有帮助,Python似乎是许多供应商的宠儿。
2. 招募一些大牌公司加入他们的软件开发工具包。Perl在现代SDK中缺乏存在感,这导致许多人觉得它无关紧要。
Nikos Vaggalis表示,无论什么情况下,Perl的长寿和繁荣都是有保证的。你怎么看呢?
参考链接:
https://www.i-programmer.info/programming/perl/15105-perl-turns-34-a-retrospective.html?start=1
https://baike.baidu.com/item/perl/851577#2
https://zh.wikipedia.org/wiki/Perl
https://www.tiobe.com/tiobe-index/