新聞中心
審校:武穆

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、晉州網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、晉州網(wǎng)絡(luò)營(yíng)銷、晉州企業(yè)策劃、晉州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供晉州建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
近日,Perl 5.36正式發(fā)布,新版本帶來了許多便利的功能。Perl可以說是全球最常用的語(yǔ)言之一,在它全盛的時(shí)代,人們會(huì)經(jīng)常用它開發(fā)網(wǎng)絡(luò)程序,但時(shí)至今日,開發(fā)者對(duì)于Perl的評(píng)價(jià)卻是兩極分化的:有人會(huì)鄭重地紀(jì)念它的生日,有人卻希望它快點(diǎn)“死去”。
不可否認(rèn)的是,Perl已經(jīng)不再流行。從TIOBE 6月編程語(yǔ)言排行榜就可見端倪。大家更多關(guān)注的是時(shí)下最熱門的語(yǔ)言,雖然Perl也是榜上有名的,但非常遺憾的是,Perl位列第17名(前20名的下游位置),幾乎沒有人會(huì)在討論最佳編程語(yǔ)言時(shí)提到它。
TIOBE 6月編程語(yǔ)言排行榜(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ù)、單次迭代多個(gè)值、try/catch語(yǔ)法支持 finally 關(guān)鍵字等實(shí)驗(yàn)性功能。
也許很多人會(huì)問:這次版本更新能否挽救日漸沒落的Perl?不再流行的Perl會(huì)逐漸消失嗎?
三十余年坎坷路,Perl 7還在遠(yuǎn)方
編程語(yǔ)言Perl是“Practical Extracting and Reporting Language”的縮寫,意為實(shí)用提取和報(bào)告語(yǔ)言。Perl的功能豐富,可以在超過100種計(jì)算機(jī)平臺(tái)上運(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語(yǔ)言借鑒了C、Sed、awk、shell腳本語(yǔ)言以及很多其他程序語(yǔ)言的特性,其中最重要的特性是它內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫(kù)CPAN。
Perl 2.0在1988年6月發(fā)布,Perl 3.0和Perl 4.0則分別在1989和1991年發(fā)布。1994年發(fā)布的Perl 5是最重要的一個(gè)版本,這個(gè)版本也成為使用最為廣泛的版本。
2015年12月25日,開發(fā)了十多年的Perl 6在圣誕節(jié)正式發(fā)布。Larry Wall以Perl 6吉祥物Camelia的名義宣布Perl 6可以在產(chǎn)品中使用,但強(qiáng)調(diào)其仍然處于青春期,意味著它有幾分成熟了,但依然存在一些問題。
進(jìn)入到第四個(gè)十年的Perl,在這些年經(jīng)歷了太多的起起落落。根據(jù)Perl指導(dǎo)委員會(huì)的說法,盡管5.36.0的最終版本“指日可待”,但萬眾期待的Perl 7繼續(xù)在遠(yuǎn)處閃爍。
Perl:不止一種方法可以做到
Perl是一種自然和智能語(yǔ)言,它能根據(jù)上下文環(huán)境解釋執(zhí)行,同時(shí)有大量省略寫法。Perl語(yǔ)言的座右銘是:There’s More Than One Way To Do It (TMTOWTDI,有多種方法可以完成一件事,或者“條條道路通羅馬”)。
如果你想使用sed、awk或sh來解決問題,但是卻發(fā)現(xiàn)它們的能力不夠,或者想運(yùn)行得更快一點(diǎn),卻不想傻傻地用C來寫,Perl將是很好的選擇。Perl擅長(zhǎng)于文本處理和系統(tǒng)管理,不適合于實(shí)時(shí)嵌入式系統(tǒng)編程、操作系統(tǒng)底層開發(fā)(比如驅(qū)動(dòng)程序開發(fā))、復(fù)雜的多線性共享內(nèi)存應(yīng)用以及較大的應(yīng)用。
Perl擁有動(dòng)態(tài)語(yǔ)言強(qiáng)大靈活的特性,并且從C/C++、Basic、Pascal等語(yǔ)言中分別借鑒了語(yǔ)法規(guī)則,從而可以提供很多冗余語(yǔ)法?;蛟S正因如此,它被評(píng)價(jià)為“write-only”——雖然你可以寫得很隨意,但是可能會(huì)得到意料之外的結(jié)果而不報(bào)錯(cuò)。除此之外,讓程序員感到頭疼的還有它冗長(zhǎng)的程序代碼,實(shí)現(xiàn)相同功能的程序代碼長(zhǎng)度可能相差十倍百倍。
事實(shí)上,人們現(xiàn)在更習(xí)慣使用Perl來寫服務(wù)器腳本。與多數(shù)的網(wǎng)頁(yè)編程語(yǔ)言(PHP或JavaScript)相比,Perl是可以直接執(zhí)行的。為了使源代碼能夠被直接翻譯成機(jī)器語(yǔ)言,它在執(zhí)行每一行代碼之前都先翻譯,因此省去了編譯的時(shí)間。
Perl最強(qiáng)的一點(diǎn)在于,它可以執(zhí)行用其他計(jì)算機(jī)語(yǔ)言所編寫的代碼或子程序。此外,它還能夠利用處理器,讓開發(fā)者可以在海量的庫(kù)和模塊中任意挑選;并且適用于各類數(shù)據(jù)庫(kù)管理,支持SQL語(yǔ)句查詢,通過DBI模塊對(duì)返回結(jié)果進(jìn)行處理。
另一個(gè)為人稱贊的是,Perl只有三種數(shù)據(jù)類型,標(biāo)量(scalar)、數(shù)組和哈希。其中,標(biāo)量是最簡(jiǎn)單的數(shù)據(jù)類型,一般是指單個(gè)數(shù)字、整數(shù)、文本或者引用。一連串的標(biāo)量可以有不同的處理方式,通常被稱為數(shù)組。以特定形式將值鍵組合的數(shù)據(jù)形式被稱為哈希。在Perl中,值鍵用標(biāo)量表示,而類型則以文本字符串的形式表示。
下面羅列了一些關(guān)于Perl語(yǔ)言的優(yōu)勢(shì)與不足:
Perl語(yǔ)言的優(yōu)勢(shì):
*正則表達(dá)式:Perl最擅長(zhǎng)的一件事,就是文本操作。許多語(yǔ)言都有正則表達(dá)式,但Perl幾乎是他們的發(fā)明人。并且它是內(nèi)置的,不需要任何模塊。
*靈活性:Perl具有三種基本的變量類型:標(biāo)量、數(shù)組和哈希。你可以隨意使用所有引用,而不必?fù)?dān)心內(nèi)存泄漏或整個(gè)PC崩潰的情況。
*Unicode支持(相對(duì)AWK與C)
*可移植性:Perl在網(wǎng)絡(luò)上運(yùn)行良好。它在UNIX中效果很好。它甚至在Windows中也能很好地工作。它不是單一功能,而是“萬事通”。
*CPAN:你可以找到所有你需要的東西。此外,通過CPAN安裝任何模塊都非常容易。直接從CPAN安裝,在解決依賴關(guān)系方面,它與apt-get一樣出色。
其不足之處在于:
*動(dòng)態(tài)類型語(yǔ)言,不是很可靠;
*自然語(yǔ)言,是優(yōu)點(diǎn)也是缺陷,使得Perl語(yǔ)言代碼可能晦澀難懂;
*智能語(yǔ)言,是優(yōu)點(diǎn)也產(chǎn)生不足:根據(jù)上下文解釋編程者之意,可能產(chǎn)生臆斷,也因此產(chǎn)生很多編程陷阱;
*不是很優(yōu)美,多種方法做事,有時(shí)會(huì)讓編程者無所適從。
*性能問題,Perl靈活的數(shù)據(jù)結(jié)構(gòu)和處理性能通常不是很高(相對(duì)C/C++),若需要高性能的處理,有時(shí)需要使用其它語(yǔ)言重寫。
Perl語(yǔ)言的學(xué)習(xí)曲線淺而長(zhǎng)。只要看看《Learning Perl》,就可以編寫簡(jiǎn)單的Perl程序了,然而要深入掌握Perl,要使用Perl的復(fù)雜數(shù)據(jù)結(jié)構(gòu),進(jìn)行面向?qū)ο缶幊?、多線程編程則不是那么容易的事,需要很長(zhǎng)的時(shí)間去學(xué)習(xí)和實(shí)踐。
Perl會(huì)消失嗎?
十多年前,就有人問過類似這種問題,但是事到如今,Perl依然活得很好,并沒有消失。Perl在文本處理、數(shù)據(jù)挖掘、運(yùn)維、生物信息等眾多領(lǐng)域均有不錯(cuò)的應(yīng)用,只是它不像互聯(lián)網(wǎng)熱點(diǎn)被人們所關(guān)注罷了。
客觀來說,Perl本身是一門古老的語(yǔ)言,但它擁有一個(gè)生機(jī)勃勃且生產(chǎn)效率很高的社區(qū),其價(jià)值體現(xiàn)在CPAN庫(kù)中。正如程序員Rox所說,幾乎沒有任何一種語(yǔ)言具有像CPAN一樣廣泛和全面的庫(kù),一切都近在咫尺。在CPAN中,你可以找到成千上萬的模塊和框架,并通過它們來完成你想象的任何事情。
需要網(wǎng)絡(luò)服務(wù)器嗎?有HTTP :: Server;需要一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)嗎?有Muldis :: DB。無論你的需求是什么,通常都可以找到幾個(gè)滿足您需求的模塊,你只需要選擇最適合你的應(yīng)用程序的模塊即可。
Rox表示,至于Ruby,Python和其他競(jìng)爭(zhēng)對(duì)手,健康的競(jìng)爭(zhēng)對(duì)Perl來說是巨大的好事。其他語(yǔ)言得到的任何東西,Perl社區(qū)都用Perl重寫。例如,當(dāng)Ruby在Rails的成功上飛速發(fā)展時(shí),Perl有了Dancer,在許多方面都比Rails更好。
Perl不會(huì)死,也不會(huì)消失。周圍沒有什么浮華的事情,沒有公司可以從炒作Perl中受益,因此它并沒有引起媒體的廣泛關(guān)注,也不是每個(gè)人都知道Perl,所以對(duì)此的討論也較少。
另需說明的是,盡管Perl可能并不適用于應(yīng)用類的開發(fā),或者做CGI的Web開發(fā),但是作為腳本語(yǔ)言在數(shù)據(jù)挖掘、Linux系統(tǒng)管理等偏重于面向過程的文本處理分析方面,仍然是非常順手的工具,并且有很多自動(dòng)化測(cè)試領(lǐng)域的工具都是Perl寫的,所以Perl還是會(huì)活得好好的,只是逐漸淡出了為人們所熟知的Perl CGI開發(fā)而已。
開發(fā)者對(duì)Perl的評(píng)價(jià)
(圖源:QA Stack)
(圖源:知乎)
寫在最后
客觀來說,Perl仍然存在較大的價(jià)值和潛力,但也不得不承認(rèn)它現(xiàn)在陷入了困境。未來,如果在不影響向后兼容性的情況下對(duì)其進(jìn)行現(xiàn)代化改造,保持向后兼容性,促使它更易于使用現(xiàn)代功能,或許就能激發(fā)這門語(yǔ)言的更大潛力。正如程序員Nikos Vaggalis所說,無論什么情況下,Perl的長(zhǎng)壽和繁榮都是有保證的。大家是如何看待Perl語(yǔ)言的?歡迎在下方留言討論。


咨詢
建站咨詢
