34 年了,“杀”不死的 Perl!
作者 | 祝濤? ? ? ?
出品 | CSDN(ID:CSDNnews)
2021年12月18日,Perl迎來了自己34歲的生日。
當(dāng)程序員聊到Perl會聊些什么呢?在各大平臺搜索Perl時,你會發(fā)現(xiàn)大家對Perl的態(tài)度呈現(xiàn)出一種兩級分化的狀態(tài),有人對Perl依舊保持著熱情,視若珍寶,但也有人對Perl嗤之以鼻,有人甚至寫下“Perl正加速走向死亡,也許2023年就會消失”的標(biāo)題。
生存還是死亡,似乎成為了Perl繞不開的一個話題。
Perl發(fā)展歷程
拉里·沃爾在1987年開始寫作Perl,那時他正在Unisys當(dāng)程序員,并且在1987年12月18日把1.0版本發(fā)布到了comp.sources.misc新聞組。這個語言在接下來的幾年內(nèi)很快地發(fā)展起來。
沃爾最早的確把這個語言稱為“Pearl”(珍珠),因為他希望自己開發(fā)的語言有一個吉利的名字而且要盡量短小好記,他甚至聲稱早已考慮過所有三個及四個字母的詞匯,以及自己妻子的名字Gloria。然而另一門語言PEARL早已存在,為了防止混淆,沃爾才把它改名Perl。
圖片來自i-Programmer
Perl 2在1988年發(fā)布,增加了更多特性,擁有更好的正則表達(dá)式引擎。Perl 3和Perl 4分別在1989年和1991年發(fā)布,
而1994年發(fā)布的Perl 5則是最重要的一個版本。Perl 5公布了許多個版本:Perl 5.6在2000年發(fā)布,Perl 5.8的持續(xù)開發(fā)貫穿了2002-2008年,5.10在2007年發(fā)布,5.12在2010年發(fā)布,此后Perl開始采取每月發(fā)布一個版本,每年發(fā)布一個穩(wěn)定版本的發(fā)布周期。5.14在2011年發(fā)布,5.16于2012年發(fā)布,5.18于2013年發(fā)布。
2000年啟動的Perl 6則完全重寫了Perl,基于不同的原則,開發(fā)者決定先制定語言規(guī)格。2015年12月25日,開發(fā)了十多年的Perl 6語言在圣誕節(jié)正式發(fā)布。Larry Wall以Perl 6吉祥物Camelia的名義宣布Perl 6可以在產(chǎn)品中使用,但強調(diào)她仍然處于青春期,意味著她有幾分成熟了,但還是會有問題。
Perl已死?
許多聲稱討厭Perl的人,給出的理由多數(shù)是其可讀性和維護(hù)非常差。
Perl語言的中心思想是:TMTOWTDI(There’s more than one way to do it),條條大路通羅馬,解決問題的辦法不止一個。Perl具有動態(tài)語言的強大靈活的特性,并且還從C/C++、Basic、Pascal等語言中分別借鑒了語法規(guī)則,從而提供了許多冗余語法。
也正是因為Perl的靈活性和“過度”的冗余語法,也因此獲得了僅寫(write-only)的“美譽”,因為Perl程序可以寫得很隨意(例如,變量不經(jīng)聲明就可以直接使用),但是可能少寫一些字母就會得到意想不到的結(jié)果(而不報錯),許多Perl程序的代碼令人難以閱讀,實現(xiàn)相同功能的程序代碼長度可以相差十倍百倍,這就令程序的維護(hù)者(甚至是編寫者)難以維護(hù)。
同樣的,因為Perl這樣隨意的特點,可能會導(dǎo)致一些Perl程序員遺忘語法,以至于不得不經(jīng)常查看Perl手冊。
TIOBE發(fā)布了今年12月的編程語言排行榜,前20名的榜單里,Perl一直處于下游階段。相比于Python,Perl的境遇顯得有些慘淡。當(dāng)人們討論“最受歡迎的編程語言”的時候,也很少有人會提到Perl。
Perl未死!
程序員Nikos Vaggalis在一篇博客中表示,Perl仍然有巨大的使用價值,他給出了自己的理由。
多平臺支持
甚至不需要使用VM(虛擬機),Perl就可以在上百種計算機平臺和系統(tǒng)體系上運行,適用范圍廣泛,從Solaris到Windows 10,從大型機到便攜設(shè)備。
多用途
Perl可以應(yīng)用于計算機科學(xué)的所有領(lǐng)域,從數(shù)據(jù)庫使用、正則表達(dá)式和解析,到系統(tǒng)管理, 還包括Web和桌面開發(fā)等等。Perl還被用于金融、生物以及其他領(lǐng)域。
豐富的語法
Perl擁有自然且富有表現(xiàn)力的語法,是一種成熟的編程語言。Nikos Vaggalis表示:“不要被網(wǎng)上流傳的‘腳本語言’的說法所迷惑。我一直不明白為什么它獲得了這個標(biāo)簽,但我猜這可能是因為它與Unix shell工具awk、sed等的古老關(guān)系?!?Nikos Vaggalis認(rèn)為,掌握這門語言將讓許多難事變得有可能,甚至可以進(jìn)入函數(shù)式編程的領(lǐng)域。
與Python相比, Perl的語法沒有那么多限制,畢竟它的中心思想是TMTOWTDI(不止一種方法)?!坝袝r候我想耍小聰明,有時候我想打安全牌,有時候我想做些嘗試”,Perl提供了這樣的環(huán)境。
Nikos Vaggalis說:“我記得當(dāng)Java 8引入lambda表達(dá)式和函數(shù)式編程時,整個世界都為之驚嘆?;仡欉^去,Perl幾十年前就有了函數(shù)式編程(參見map、grep、子例程引用、Schwartzian Transform),但是卻沒有什么反響?!?/p>
Perl的未來
Perl仍然有巨大的價值與潛力,但也不得不承認(rèn)它現(xiàn)在陷入了窘境。如何能讓Perl重新流行起來呢?Nikos Vaggalis分享了一項調(diào)查,他表示,這個調(diào)查或許會給出答案。
問:您未來對Perl的期望是什么?
答:在不影響向后兼容性的情況下進(jìn)行現(xiàn)代化改造。保持向后兼容性,但使其易使用現(xiàn)代功能。
問:作為個人,該如何支持Perl ?
答:1. 只需簡單地使用它!2. 為CPAN做出貢獻(xiàn)。(Comprehensive Perl Archive Network,譯為“Perl綜合典藏網(wǎng)”,“Perl綜合檔案網(wǎng)”或者“Perl程序庫”)
問:Perl社區(qū)如何做出貢獻(xiàn)?
答:1.推動人們對這門語言的熱情;2. 確保CPAN上有足夠好的內(nèi)容來完成任務(wù)
問:Perl基金會如何幫助社區(qū)實現(xiàn)目標(biāo)?
答:1. 宣傳Perl的功能。將Perl集成到供應(yīng)商的工具中會很有幫助,Python似乎是許多供應(yīng)商的寵兒。
2. 招募一些大牌公司加入他們的軟件開發(fā)工具包。Perl在現(xiàn)代SDK中缺乏存在感,這導(dǎo)致許多人覺得它無關(guān)緊要。
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上的《黑客帝國》全新體驗,愛了愛了
低代碼發(fā)展專訪系列之七:低代碼的火爆需要不一樣的聲音么?
Log4j 第三次發(fā)布漏洞補丁,漏洞或?qū)㈤L存
5G專網(wǎng),路在何方?
點分享
點收藏
點點贊
點在看
總結(jié)
以上是生活随笔為你收集整理的34 年了,“杀”不死的 Perl!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 ESS SDK 快速创建多实例规格
- 下一篇: 真香!8 行代码搞定最大子数组和问题