當前位置:開發者網絡 >> 技術教程 >> CGI教程 >> CGI文檔 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
Perl漸成氣候
作者:未知
日期:2003-09-13
人氣:
投稿:Andy.m(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:
  當我們把目光對準Linux時,我們要記住,在Internet世界裡還有很多自由軟件。誰代表自由軟件?誰是自由軟件的發展方向?Linux作用舉足輕重,但Perl、Apache、Python等自由軟件同樣不可忽視。它們的情況如何?
  1987年,美國的Larry Wall及其合作者們開發了Perl(Practical Extractionand Report Language)語言。從一開發起,LarryWall就賦予Perl免費和開放源碼的權利。所以,Perl由它的使用者維護和發展。到現在,它的影響力並不亞於Linux,並在Internet的世界裡扮演著越來越重要的角色。

  系統管理員和CGI作者的寵兒
  簡單地說,Perl是一種解釋性高級程序語言。為什麼Larry Wall會想到要開發Perl語言呢?這跟他長期與Unix打交道有關係。大家知道,Unix主要用C語言和Unix Shell來編程的,但它們卻不是一個整體的兩個部分。C語言能很方便地進行系統內部的操作,但卻不能快速地進行外部開發;Unix Shell剛好相反,它能很方便地進行外部處理,卻很難進行底層操作。如果能把這兩者結合起來,不是很好嗎?Larry Wall認為這是他創建Perl的初衷。因此,他把C語言以及sed、awk、Unix Shell等十多種工具和語言中非常「酷」的優點結合起來,把它們中不「酷」的東西清除出去,開發出了Perl。如果程序員覺得用sed或awk或sh完成工作有點慢,但又不想用C語言來寫,Perl就可以派上用場了。
  當然,到了現在,Perl已經不像當初那麼「單純」。經過十多年的發展,Perl已是最主要的Web腳本語言,大多數的CGI程序都是用它寫的(正因為如此,它甚至成CGI程序的代名詞)。同時,它也是一種非常好的快速原型設計語言,並且能使不同的系統很好地協同工作。由於Perl能非常方便地將小程序嵌入到大型應用程序之中,所以被譽為是「Internet的輸送管道」。
  Perl目前已經受到很多程序開發人員的喜愛,如系統管理員、數據庫開發人員、Web開發人員等。現在,Perl不但成為系統管理員和CGI作者的寵兒,就連數學家、遺傳學家、新聞工作者,甚至企業管理者也都喜歡用Perl。目前全世界至少有100萬以上的程序員在使用Perl來工作。
  Perl的標準庫及各種文檔都是由自願者寫的,但它也有核心開發隊伍,即PerlPorters。這些成員都是無私奉獻的,他們的任務也很簡單,就是開發出大量的比市場上所出售的Perl應用程序更好的產品,而且是免費的。

  Perl越來越得到大家的認可並非偶然,這是由於它具有很多其它語言所沒有的優點。首先,用Perl編寫的程序不用編譯,其程序可直接運行。最重要的是,它可以跨平台運行。同一Perl程序可以在Unix、Windows、Windows NT、MVS、VMS、DOS、Macintosh、OS/2、Plan9及AmigaOS等操作系統上自由運行。其次,Perl簡單易學。它可以使複雜的事情變簡單,簡單的事情更簡單。Perl為程序員處理了很多東西,例如內存分配、碎片整理等。同時,Perl程序也是相當簡練的,一頁的Perl程序用其它語言可能要花幾百甚至上千行代碼。Perl程序不必處理很多細節,這大大減少了程序的Bug,增加了可靠性。第三,Perl運行速度很快。第四,Perl是面向對象的。第五,Perl應用程序很多。CPAN(Comprehensive Perl Archive Network)有很多Perl應用程序。你可以在幾分鐘內找到自己想要的東西。這些程序都是來自世界各地的Perl開發者提供的。最後,Perl是自由軟件,為程序員免費共享。

  Perl的版本演變

  1988年1月,Perl的第一個正式版本Perl1發佈;1988年6月,Perl2發佈;1989年10月,Perl3發佈;1991年3月,Perl4發佈;1994年10月,Perl5發佈。因此,Perl5是最新的版本。但在Perl5中,目前已發佈Perl5.6。(註:Perl5.6的前一個版本是Perl5.005,但由於Perl的支持者們覺得Perl5.1和Perl5.001會使人誤解,所以決定將版本的編號改為Perl5.6,而不是Perl5.006。對Perl5.6的新修訂版本稱為Perl5.6.1。)

  Perl5和以前的版本有很大的區別,它的代碼全部是重新寫的。它最主要的改進有下面幾點。一是語法更簡單,定義變量更靈活。Perl5的保留字只有原來的1/3,並且去掉了很多的不規則的語法。在Perl5中,你可以像C語言一樣自由地定義變量,甚至可以定義匿名的變量和子程序。二是模塊化和重用性更好。Perl標準程序庫都根據模塊來定義,每個程序包都可以很方便地使用。三是面向對像進一步加強,使用了「類」的概念,文件句柄也得到支持。四是同時執行多種DBM。一個Perl程序可同時訪問DBM、NDBM、SDBM和GDBM等。五是嵌入性和可擴展性更好。在Perl5中,可輕鬆地把Perl程序嵌入到C或C++程序中,也可借助XS(Perl提供的一個轉換器)將C或C++程序很方便地接入到Perl程序中。另外,Perl程序的易讀性也有了明顯的改進。

  總之,Perl5與Perl4在程序代碼上會有很大差別,但Perl的每個版本都向下兼容,Perl5也一樣。所以,Perl4的程序可以在Perl5上安全運行。但Perl的支持者們說,從Perl5發佈以後,他們就建議用戶用Perl5,因為他們不會對Perl4再提供支持。

  CPAN提供大量Perl標準程序

  CPAN是為使全世界Perl愛好者更好地共享資源而建立的一個網站。它是包含所有Perl資源的網站,在全世界有100多個鏡像站點,在http://www.perl.com中有個虛擬接口。

  CPAN有個多路轉接器,用戶一旦訪問該站點,它會自動選擇一個離它最近的鏡像。例如,你在法國,它就會自動幫你鏈接到法國當地的一個站點。當然,它也提供人工選擇的功能。用戶一旦選定,它便會記住,以後就直接進入該站點。這樣的目的是為了使用戶下載速度加快。正是這一功能,很多人將CPAN稱為「魔鬼站點」。

  CPAN最大的好處在於有關Perl的內容它無所不包。它有兩個大的目錄,一是「腳本(Scripts)」。在它裡面,又有分類,如和Web有關的腳本等。另一個是「模塊(Modules)」。這是個Perl標準程序庫,可以用這些模塊來寫CGI程序、圖形程序、數據庫或其它各種程序。在這裡,你可以找到Perl的FAQ,也可以找到Perl的語法、Perl的入門指南。最重要的是,在這裡有很多可供自由下載的Perl應用程序,供人們使用。這些應用程序都是即插即用的模塊,並且都是可重用的源代碼。正是由於應用程序的豐富且容易得到,才使得Perl越來越為大家所瞭解和喜愛。

  微軟投資支持Perl

  三年前,微軟公司就和ActiveStateTool公司合作,投資開發Perl應用程序,並且他們的大部分成果都開放源碼,為大家共享。雙方表明,這次合作的意圖是改善Perl在Windows平台上的應用。ActiveState公司將為Perl在Windows平台上的應用加入很多以前所沒有的特性,如fork、全面支持Windows平台的統一編碼標準等。

  這是微軟公司第一次向基於Windows平台的開放源碼程序投資。業內人士對這個消息反應不一。有人認為這是好消息,因為它可以使Perl為更多人所知道,更有利於Perl的發展。但也有人對此深表擔憂,尤其是Perl的支持者們更不認為這是個好消息。他們擔心Perl會在微軟的干預下變成「Microsoft Perl」。對此,ActiveState的負責人認為,微軟的目的是為了利用Perl改善Unix與Windows之間協同工作的能力。他指出,Perl與Java是完全不同的事情,在Unix與Windows平台上,Perl版本是統一的,它們的核心程序代碼也是一樣,因此不會出現Unix與Windows平台上的Perl相背離的結果,也就是說不會出現微軟的Perl。同時,微軟的有關負責人也說,微軟的目的是最終結果,而不是想通過投資來控制Perl的支持者們。

  Perl的使用者比Java多

  現在,Java的呼聲正一浪高過一浪,但在Internet的世界裡,有一點是沒有爭議的,即Perl的使用者比Java的使用者要多。Perl可以跨平台運行,而Java也是可以跨平台運行;Perl是眾多自願者支持的自由軟件,Java是SUN公司開發的純商業軟件。Perl與Java,哪一個好呢?

  從經濟角度看,自然是Perl好。不花錢又能辦事,誰都喜歡。在技術上是怎樣的呢?事實上,任何一門程序語言,都有其不足與長處。一個程序員想試驗哪種語言好,最好的方法是用兩種語言寫同一個程序,看看哪個更好寫,哪個運行更快更穩定。

  Larry Wall本人認為,Perl在快速原型設計方面比Java強得多,並且Perl可以使系統運行失敗的影響減小到最少。也有人認為,Perl比Java成熟得多,因為Java的年齡畢竟不大,還沒有經受過大的考驗。

  不過,不用擔心Perl會吃掉Java,或者Java會吃掉Perl。這是兩種基礎不同的程序語言,它們會有各自的生存空間。

  Perl比GPL更開放

  不像Java,Perl是免費的,沒有私有產權這麼一說,它的源代碼和編譯器都是免費、公開的。雖然GNU計劃包含有Perl,但並沒有「GNU Perl」這樣的概念,因為Perl不是自由軟件聯盟(FreeSoftware Foundation)開發的,也不由它維護。事實上,Perl比GNU GPL和AL(Artiste License)的條款更開放。Larry Wall及其支持者們允許用戶把自己開發的Perl程序銷售,也可以去買市場上的Perl應用程序。但一般來講,用戶總能從Perl的維護者們所開發的程序裡找到自己想要的東西,並且決不會比市場上出售的程序差。

  自由軟件的出現給Internet世界帶來很大的衝擊。Perl這個自由軟件,已不僅僅是一種語言,它是Internet文化的一部分,它用一種創造的思想去對待一切。
相關文章: