成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

作者:莫奇

審校:武穆

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

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

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

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

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

三十余年坎坷路,Perl 7還在遠(yuǎn)方

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

1987年12月18日,Perl 1.0正式發(fā)布,其最初的設(shè)計(jì)者是拉里·沃爾(Larry Wall)。Perl語言借鑒了C、Sed、awk、shell腳本語言以及很多其他程序語言的特性,其中最重要的特性是它內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫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可以在產(chǎn)品中使用,但強(qiáng)調(diào)其仍然處于青春期,意味著它有幾分成熟了,但依然存在一些問題。

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

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

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

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

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

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

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

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

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

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

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

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

*Unicode支持(相對AWK與C) 

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

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

不足之處在于: 

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

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

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

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

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

Perl語言的學(xué)習(xí)曲線淺而長。只要看看《Learning Perl》,就可以編寫簡單的Perl程序了,然而要深入掌握Perl,要使用Perl的復(fù)雜數(shù)據(jù)結(jié)構(gòu),進(jìn)行面向?qū)ο缶幊獭⒍嗑€程編程則不是那么容易的事,需要很長的時間去學(xué)習(xí)和實(shí)踐。 

Perl會消失嗎?

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

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

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

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

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

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

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

(圖源:QA Stack)


(圖源:知乎)


寫在最后

客觀來說,Perl仍然存在較大的價值和潛力,但也不得不承認(rèn)它現(xiàn)在陷入了困境。未來,如果在不影響向后兼容性的情況下對其進(jì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/


責(zé)任編輯:莫奇 來源: 51CTO技術(shù)棧
相關(guān)推薦

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

2021-05-20 10:14:50

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

2022-07-21 13:36:39

API事件驅(qū)動Rest

2019-02-20 11:07:11

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

2013-08-20 09:48:59

2021-08-25 22:58:57

人工智能程序員機(jī)器語言

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

運(yùn)維容器云原生

2020-06-17 08:53:19

云計(jì)算運(yùn)維云原生

2018-12-03 10:51:15

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

2011-12-02 09:57:50

存儲虛擬化存儲虛擬化

2014-12-23 09:34:47

動態(tài)語言

2014-05-23 10:38:46

智能路由器

2019-05-07 15:49:27

AI人工智能藝術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 看片91 | 亚洲综合无码一区二区 | 国产精品欧美一区二区三区不卡 | 久久久久久国产精品免费免费 | 999视频在线播放 | 久久久久久国模大尺度人体 | 国产精品美女在线观看 | 午夜男人的天堂 | 99热精品6| 久久99精品国产自在现线小黄鸭 | 精品视频在线观看 | 欧美黄色免费网站 | 久久成人综合 | 伊人二区 | 手机看片在线播放 | 精品粉嫩aⅴ一区二区三区四区 | 精品一二区 | 网站一区二区三区 | 精品国产一区二区三区免费 | 99久久免费精品国产免费高清 | 久久久国产精品一区 | 国产精品久久久久久久三级 | 精品在线免费观看视频 | 性一爱一乱一交一视频 | 在线看片国产精品 | 久久久久av | 午夜手机在线视频 | www.色综合 | 日韩1区2区 | 国产 日韩 欧美 中文 在线播放 | 国产福利免费视频 | 成人h动漫亚洲一区二区 | 91精品久久久久久久久久小网站 | 国产精品久久国产精品 | 日韩在线视频免费观看 | 国产精品久久久久久高潮 | 女生羞羞网站 | 亚洲精品乱码久久久久久蜜桃91 | 自拍偷拍中文字幕 | 久久久成人免费视频 | 日韩视频一区在线观看 |