作者 | 祝涛

出品 | CSDN(ID:CSDNnews)

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/

往期推荐

虚幻引擎5上的《黑客帝国》全新体验,爱了爱了

低代码发展专访系列之七:低代码的火爆需要不一样的声音么?

Log4j 第三次发布漏洞补丁,漏洞或将长存

5G专网,路在何方?

点分享

点收藏

点点赞

点在看

34 年了,“杀”不死的 Perl!相关推荐

  1. 杀不死的人狼——我读《人月神话》(四)

    <<==上一节 ===== 四.没有银弹,或人狼杀不死 ===== 人狼这个动物很奇怪,皮肉坚实还是自疗系的,所以要么砍它不动,要么杀它不死.这种动物如同习得(传说中的)金钟罩功夫,刀枪不 ...

  2. 杀不死你的,终将使你更强大

    从4月份到10月底,开发的新功能顺利上线了,运行平稳.这期间除了忙,就是巨忙.除了8月初休假一周回了趟老家,其他时间每天从早拼到晚,周末时间也搭进去不少.但是总归结果是挺好的. 接下来新的任务挑战性更 ...

  3. 杀不死的人狼——我读《人月神话》(五)

    <<==上一节 ===== 五.从广义工程到狭义工程 ===== 现在我们回到一个实际的问题上:工程的本质需求是什么?如果我问一千个人工程的本质,可能会得到一千种答案.因为大家离本质的东西 ...

  4. centos7 杀不死 httpd (Apache )

    今天遇到一个问题,杀不死httpd (Apache ),杀死后,它又重开了一个进程,继续搞事情,一直占着我的80端口. 解决办法: 直接使用命令: pkill httpd ok ,这就杀死了. 前因后 ...

  5. Linux下kill -9杀不死进程或杀死又自动启动,解决

    问题描述 在ubuntu下 kill -9 杀死进程时候发现杀不死,或者是杀死了立刻又重启. 原因是该进程的父进程还在,所以会杀死进程后又自动启动了,看起来是我们没kill掉一样. 解决方法 ps - ...

  6. Linux杀不死木马,杀不死进程,自启动进程

    Linux中杀不死进程,杀不死木马,删不掉,自己启动木马 因内网服务器端口映射公网没有修改弱密码,导致暴力破解服务器被挂木马,详细流程如下 1查询操作历史日志 发现日志被删,无法得知他做了什么 2.使 ...

  7. app之 杀不死的进程

    有些需求要求app进程杀不死 我觉的扯再多都是没用的  不如 给你们看看~~~人家是如何实现的 demo是可以用的 我已经测试成功了 感觉很厉害哦~~好佩服的哦~~~哦哦哦~~~    常驻进程 An ...

  8. Android_常驻进程(杀不死的进程)

    Android常驻进程,就是要让进程在内存中永远存在,让进程保活,不被杀死.可能这时都会喷,这不是流氓软件吗?刚接触android的时候,我也是认为这是很流氓的做法,可是慢慢发现很多场景(应用),要为 ...

  9. docker容器杀不死_了解如何停止,杀死和清理Docker容器

    docker容器杀不死 In the previous article 'learn how to create and start Docker containers', we discussed ...

最新文章

  1. 计算机应用工作技能与经验,关于计算机应用技能人才培养模式的思考
  2. Android固定宽度文字自适应大小
  3. 科大星云诗社动态20201231
  4. 树莓派学习 -- 无法扫描出树莓派IP
  5. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-线性回归tf.keras概述-02
  6. android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
  7. 星星排序python_python中怎么实现星星排列
  8. CentOS 新增swap交换空间
  9. 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
  10. MySQL MHA详解(二)——实战配置
  11. linux下查看已经安装的jdk 并卸载jdk的方法
  12. ASP.NET 省市区联级
  13. 武汉理工大学计算机转专业名单,武汉理工大学转专业的限制
  14. 【iMessage苹果群发】OpenSSL将重修立连接
  15. Salesforce 解决chatter简档删除不掉记录类型问题
  16. Web前端和后端的异同
  17. IDEA 2021 没有Allow parallel run
  18. vscode - 史上最优秀的 IDE ?
  19. 李昀飞:兴业数金金融行业云 中小银行转型重要引擎
  20. linux系统没有xattr命令,Linux 文件系统扩展属性 xattr

热门文章

  1. procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色
  2. 部编版是什么版本_部编版是人教版吗
  3. 逆向so_安卓逆向 | 分析调试与so调用实战
  4. key value vue 输出_Vue2.0 v-for 中 :key 到底有什么用?
  5. u852日期限制解决补丁_《赛博朋克》1.06补丁出炉:进一步提升主机版本稳定性...
  6. linux 命令 语法,linux常用命令及语法
  7. echarts 浏览器兼容性_谷歌浏览器不再使用quot;黑名单quot; / iPhone可能放弃lightning充电口//微软中国被列为被执行人/QQ 音乐上线...
  8. 瞎扯数学分析-微积分
  9. 田渊栋:业余做研究的经验
  10. 44年前的一个数学猜想终被破解