杀不死的Perl

Posted TerryChu1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杀不死的Perl相关的知识,希望对你有一定的参考价值。

2021年12月18日,Perl迎来了自己34岁的生日。

程序员聊到Perl会聊些什么呢?在各大平台搜索Perl时,你会发现大家对Perl的态度呈现出一种两级分化的状态,有人对Perl依旧保持着热情,视若珍宝,但也有人对Perl嗤之以鼻,有人甚至写下“Perl正加速走向死亡,也许2023年就会消失”的标题。

生存还是死亡,似乎成为了Perl绕不开的一个话题。

Perl发展历程

拉里·沃尔在1987年开始写作Perl,那时他正在Unisys当程序员,并且在1987年12月18日把1.0版本发布到了comp.sources.misc新闻组。这个语言在接下来的几年内很快地发展起来。

沃尔最早的确把这个语言称为“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/

以上是关于杀不死的Perl的主要内容,如果未能解决你的问题,请参考以下文章

十字叉病毒,杀不死的小强,一次云服务器沦陷实录

【kill】kill -9 杀不死的进程处理办法

一个杀不死的小强,kill进程无效的原因 记录故障排查过程中kill进程无效的分析过程

Android 不死的应用程序service

Android之关于killBackgroundProcesses()函数,杀不死进程的解释

关于am force-stop杀不死某些app的原因