34 年了,“杀”不死的 Perl!
作者 | 祝涛
出品 | 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!相关推荐
- 杀不死的人狼——我读《人月神话》(四)
<<==上一节 ===== 四.没有银弹,或人狼杀不死 ===== 人狼这个动物很奇怪,皮肉坚实还是自疗系的,所以要么砍它不动,要么杀它不死.这种动物如同习得(传说中的)金钟罩功夫,刀枪不 ...
- 杀不死你的,终将使你更强大
从4月份到10月底,开发的新功能顺利上线了,运行平稳.这期间除了忙,就是巨忙.除了8月初休假一周回了趟老家,其他时间每天从早拼到晚,周末时间也搭进去不少.但是总归结果是挺好的. 接下来新的任务挑战性更 ...
- 杀不死的人狼——我读《人月神话》(五)
<<==上一节 ===== 五.从广义工程到狭义工程 ===== 现在我们回到一个实际的问题上:工程的本质需求是什么?如果我问一千个人工程的本质,可能会得到一千种答案.因为大家离本质的东西 ...
- centos7 杀不死 httpd (Apache )
今天遇到一个问题,杀不死httpd (Apache ),杀死后,它又重开了一个进程,继续搞事情,一直占着我的80端口. 解决办法: 直接使用命令: pkill httpd ok ,这就杀死了. 前因后 ...
- Linux下kill -9杀不死进程或杀死又自动启动,解决
问题描述 在ubuntu下 kill -9 杀死进程时候发现杀不死,或者是杀死了立刻又重启. 原因是该进程的父进程还在,所以会杀死进程后又自动启动了,看起来是我们没kill掉一样. 解决方法 ps - ...
- Linux杀不死木马,杀不死进程,自启动进程
Linux中杀不死进程,杀不死木马,删不掉,自己启动木马 因内网服务器端口映射公网没有修改弱密码,导致暴力破解服务器被挂木马,详细流程如下 1查询操作历史日志 发现日志被删,无法得知他做了什么 2.使 ...
- app之 杀不死的进程
有些需求要求app进程杀不死 我觉的扯再多都是没用的 不如 给你们看看~~~人家是如何实现的 demo是可以用的 我已经测试成功了 感觉很厉害哦~~好佩服的哦~~~哦哦哦~~~ 常驻进程 An ...
- Android_常驻进程(杀不死的进程)
Android常驻进程,就是要让进程在内存中永远存在,让进程保活,不被杀死.可能这时都会喷,这不是流氓软件吗?刚接触android的时候,我也是认为这是很流氓的做法,可是慢慢发现很多场景(应用),要为 ...
- docker容器杀不死_了解如何停止,杀死和清理Docker容器
docker容器杀不死 In the previous article 'learn how to create and start Docker containers', we discussed ...
最新文章
- 计算机应用工作技能与经验,关于计算机应用技能人才培养模式的思考
- Android固定宽度文字自适应大小
- 科大星云诗社动态20201231
- 树莓派学习 -- 无法扫描出树莓派IP
- 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-线性回归tf.keras概述-02
- android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
- 星星排序python_python中怎么实现星星排列
- CentOS 新增swap交换空间
- 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
- MySQL MHA详解(二)——实战配置
- linux下查看已经安装的jdk 并卸载jdk的方法
- ASP.NET 省市区联级
- 武汉理工大学计算机转专业名单,武汉理工大学转专业的限制
- 【iMessage苹果群发】OpenSSL将重修立连接
- Salesforce 解决chatter简档删除不掉记录类型问题
- Web前端和后端的异同
- IDEA 2021 没有Allow parallel run
- vscode - 史上最优秀的 IDE ?
- 李昀飞:兴业数金金融行业云 中小银行转型重要引擎
- linux系统没有xattr命令,Linux 文件系统扩展属性 xattr
热门文章
- procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色
- 部编版是什么版本_部编版是人教版吗
- 逆向so_安卓逆向 | 分析调试与so调用实战
- key value vue 输出_Vue2.0 v-for 中 :key 到底有什么用?
- u852日期限制解决补丁_《赛博朋克》1.06补丁出炉:进一步提升主机版本稳定性...
- linux 命令 语法,linux常用命令及语法
- echarts 浏览器兼容性_谷歌浏览器不再使用quot;黑名单quot; / iPhone可能放弃lightning充电口//微软中国被列为被执行人/QQ 音乐上线...
- 瞎扯数学分析-微积分
- 田渊栋:业余做研究的经验
- 44年前的一个数学猜想终被破解