自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不再流行的Perl,會消失嗎?

原創(chuàng) 精選
開發(fā)
時至今日,開發(fā)者對于Perl的評價卻是兩極分化的:有人會鄭重地紀念它的生日,有人卻希望它快點“死去”。

作者:莫奇

審校:武穆

近日,Perl 5.36正式發(fā)布,新版本帶來了許多便利的功能。Perl可以說是全球最常用的語言之一,在它全盛的時代,人們會經常用它開發(fā)網(wǎng)絡程序,但時至今日,開發(fā)者對于Perl的評價卻是兩極分化的:有人會鄭重地紀念它的生日,有人卻希望它快點“死去”。

不可否認的是,Perl已經不再流行。從TIOBE 6月編程語言排行榜就可見端倪。大家更多關注的是時下最熱門的語言,雖然Perl也是榜上有名的,但非常遺憾的是,Perl位列第17名(前20名的下游位置),幾乎沒有人會在討論最佳編程語言時提到它。

TIOBE 6月編程語言排行榜(1-20名)

據(jù)了解,本次發(fā)布的Perl 5.36是自Perl 5.34以來較大的一次版本更新。更新后的Perl也給開發(fā)者帶來了更良好的使用體驗。比如新增的use x.xx 功能省略了代碼頂部繁瑣的功能模塊聲明;此外,穩(wěn)定了布爾跟蹤、正則表達式集、支持Unicode 14.0等功能;還增加了內置函數(shù)、單次迭代多個值、try/catch語法支持 finally 關鍵字等實驗性功能。

也許很多人會問:這次版本更新能否挽救日漸沒落的Perl?不再流行的Perl會逐漸消失嗎?

三十余年坎坷路,Perl 7還在遠方

編程語言Perl是“Practical Extracting and Reporting Language”的縮寫,意為實用提取和報告語言。Perl的功能豐富,可以在超過100種計算機平臺上運行。Perl最初是為文本處理而開發(fā)的,現(xiàn)在則多用于各種任務,包括網(wǎng)絡編程、Web開發(fā)、系統(tǒng)管理、GUI開發(fā)等。

1987年12月18日,Perl 1.0正式發(fā)布,其最初的設計者是拉里·沃爾(Larry Wall)。Perl語言借鑒了C、Sed、awk、shell腳本語言以及很多其他程序語言的特性,其中最重要的特性是它內部集成了正則表達式的功能,以及巨大的第三方代碼庫CPAN。

Perl 2.0在1988年6月發(fā)布,Perl 3.0和Perl 4.0則分別在1989和1991年發(fā)布。1994年發(fā)布的Perl 5是最重要的一個版本,這個版本也成為使用最為廣泛的版本。

2015年12月25日,開發(fā)了十多年的Perl 6在圣誕節(jié)正式發(fā)布。Larry Wall以Perl 6吉祥物Camelia的名義宣布Perl 6可以在產品中使用,但強調其仍然處于青春期,意味著它有幾分成熟了,但依然存在一些問題。

進入到第四個十年的Perl,在這些年經歷了太多的起起落落。根據(jù)Perl指導委員會的說法,盡管5.36.0的最終版本“指日可待”,但萬眾期待的Perl 7繼續(xù)在遠處閃爍。

Perl:不止一種方法可以做到

Perl是一種自然和智能語言,它能根據(jù)上下文環(huán)境解釋執(zhí)行,同時有大量省略寫法。Perl語言的座右銘是:There’s More Than One Way To Do It (TMTOWTDI,有多種方法可以完成一件事,或者“條條道路通羅馬”)。

如果你想使用sed、awk或sh來解決問題,但是卻發(fā)現(xiàn)它們的能力不夠,或者想運行得更快一點,卻不想傻傻地用C來寫,Perl將是很好的選擇。Perl擅長于文本處理和系統(tǒng)管理,不適合于實時嵌入式系統(tǒng)編程、操作系統(tǒng)底層開發(fā)(比如驅動程序開發(fā))、復雜的多線性共享內存應用以及較大的應用。

Perl擁有動態(tài)語言強大靈活的特性,并且從C/C++、Basic、Pascal等語言中分別借鑒了語法規(guī)則,從而可以提供很多冗余語法?;蛟S正因如此,它被評價為“write-only”——雖然你可以寫得很隨意,但是可能會得到意料之外的結果而不報錯。除此之外,讓程序員感到頭疼的還有它冗長的程序代碼,實現(xiàn)相同功能的程序代碼長度可能相差十倍百倍。

事實上,人們現(xiàn)在更習慣使用Perl來寫服務器腳本。與多數(shù)的網(wǎng)頁編程語言(PHP或JavaScript)相比,Perl是可以直接執(zhí)行的。為了使源代碼能夠被直接翻譯成機器語言,它在執(zhí)行每一行代碼之前都先翻譯,因此省去了編譯的時間。

Perl最強的一點在于,它可以執(zhí)行用其他計算機語言所編寫的代碼或子程序。此外,它還能夠利用處理器,讓開發(fā)者可以在海量的庫和模塊中任意挑選;并且適用于各類數(shù)據(jù)庫管理,支持SQL語句查詢,通過DBI模塊對返回結果進行處理。

另一個為人稱贊的是,Perl只有三種數(shù)據(jù)類型,標量(scalar)、數(shù)組和哈希。其中,標量是最簡單的數(shù)據(jù)類型,一般是指單個數(shù)字、整數(shù)、文本或者引用。一連串的標量可以有不同的處理方式,通常被稱為數(shù)組。以特定形式將值鍵組合的數(shù)據(jù)形式被稱為哈希。在Perl中,值鍵用標量表示,而類型則以文本字符串的形式表示。

下面羅列了一些關于Perl語言的優(yōu)勢與不足:

Perl語言的優(yōu)勢: 

*正則表達式:Perl最擅長的一件事,就是文本操作。許多語言都有正則表達式,但Perl幾乎是他們的發(fā)明人。并且它是內置的,不需要任何模塊。

*靈活性:Perl具有三種基本的變量類型:標量、數(shù)組和哈希。你可以隨意使用所有引用,而不必擔心內存泄漏或整個PC崩潰的情況。

*Unicode支持(相對AWK與C) 

*可移植性:Perl在網(wǎng)絡上運行良好。它在UNIX中效果很好。它甚至在Windows中也能很好地工作。它不是單一功能,而是“萬事通”。

*CPAN:你可以找到所有你需要的東西。此外,通過CPAN安裝任何模塊都非常容易。直接從CPAN安裝,在解決依賴關系方面,它與apt-get一樣出色。

不足之處在于: 

*動態(tài)類型語言,不是很可靠;

*自然語言,是優(yōu)點也是缺陷,使得Perl語言代碼可能晦澀難懂; 

*智能語言,是優(yōu)點也產生不足:根據(jù)上下文解釋編程者之意,可能產生臆斷,也因此產生很多編程陷阱;

*不是很優(yōu)美,多種方法做事,有時會讓編程者無所適從。 

*性能問題,Perl靈活的數(shù)據(jù)結構和處理性能通常不是很高(相對C/C++),若需要高性能的處理,有時需要使用其它語言重寫。 

Perl語言的學習曲線淺而長。只要看看《Learning Perl》,就可以編寫簡單的Perl程序了,然而要深入掌握Perl,要使用Perl的復雜數(shù)據(jù)結構,進行面向對象編程、多線程編程則不是那么容易的事,需要很長的時間去學習和實踐。 

Perl會消失嗎?

十多年前,就有人問過類似這種問題,但是事到如今,Perl依然活得很好,并沒有消失。Perl在文本處理、數(shù)據(jù)挖掘、運維、生物信息等眾多領域均有不錯的應用,只是它不像互聯(lián)網(wǎng)熱點被人們所關注罷了。

客觀來說,Perl本身是一門古老的語言,但它擁有一個生機勃勃且生產效率很高的社區(qū),其價值體現(xiàn)在CPAN庫中。正如程序員Rox所說,幾乎沒有任何一種語言具有像CPAN一樣廣泛和全面的庫,一切都近在咫尺。在CPAN中,你可以找到成千上萬的模塊和框架,并通過它們來完成你想象的任何事情。

需要網(wǎng)絡服務器嗎?有HTTP :: Server;需要一個獨立的數(shù)據(jù)庫嗎?有Muldis :: DB。無論你的需求是什么,通常都可以找到幾個滿足您需求的模塊,你只需要選擇最適合你的應用程序的模塊即可。

Rox表示,至于Ruby,Python和其他競爭對手,健康的競爭對Perl來說是巨大的好事。其他語言得到的任何東西,Perl社區(qū)都用Perl重寫。例如,當Ruby在Rails的成功上飛速發(fā)展時,Perl有了Dancer,在許多方面都比Rails更好。

Perl不會死,也不會消失。周圍沒有什么浮華的事情,沒有公司可以從炒作Perl中受益,因此它并沒有引起媒體的廣泛關注,也不是每個人都知道Perl,所以對此的討論也較少。

另需說明的是,盡管Perl可能并不適用于應用類的開發(fā),或者做CGI的Web開發(fā),但是作為腳本語言在數(shù)據(jù)挖掘、Linux系統(tǒng)管理等偏重于面向過程的文本處理分析方面,仍然是非常順手的工具,并且有很多自動化測試領域的工具都是Perl寫的,所以Perl還是會活得好好的,只是逐漸淡出了為人們所熟知的Perl CGI開發(fā)而已。

開發(fā)者對Perl的評價

(圖源:QA Stack)


(圖源:知乎)


寫在最后

客觀來說,Perl仍然存在較大的價值和潛力,但也不得不承認它現(xiàn)在陷入了困境。未來,如果在不影響向后兼容性的情況下對其進行現(xiàn)代化改造,保持向后兼容性,促使它更易于使用現(xiàn)代功能,或許就能激發(fā)這門語言的更大潛力。正如程序員Nikos Vaggalis所說,無論什么情況下,Perl的長壽和繁榮都是有保證的。大家是如何看待Perl語言的?歡迎在下方留言討論。


參考鏈接:

https://www.i-programmer.info/programming/perl/15105-perl-turns-34-a-retrospective.html?start=1

https://www.theregister.com/2022/05/26/perl_v7/

https://www.tiobe.com/tiobe-index/


責任編輯:莫奇 來源: 51CTO技術棧
相關推薦

2023-01-11 07:20:27

編程能力人工智能

2009-06-16 11:32:00

RoRJava

2023-07-10 10:21:21

JavaScript模塊化規(guī)范

2024-08-22 08:50:51

2025-02-11 09:01:57

2022-07-21 13:36:39

API事件驅動Rest

2021-05-20 10:14:50

數(shù)字人民幣ATM銀行

2019-02-20 11:07:11

5G企業(yè)網(wǎng)絡

2013-08-20 09:48:59

2021-08-25 22:58:57

人工智能程序員機器語言

2016-12-15 14:11:28

手工測試消失

2013-04-03 14:14:43

UbuntuWindows

2013-05-24 13:21:23

jQuery

2020-06-17 08:02:37

運維容器云原生

2020-06-17 08:53:19

云計算運維云原生

2018-12-03 10:51:15

5GWiFi互聯(lián)網(wǎng)

2014-05-23 10:38:46

智能路由器

2011-12-02 09:57:50

存儲虛擬化存儲虛擬化

2014-12-23 09:34:47

動態(tài)語言

2019-05-07 15:49:27

AI人工智能藝術
點贊
收藏

51CTO技術棧公眾號