天天看點

Perl語言創始人-Larry Wall

作者: 2003-8-1 0:48:13 

出處:部落格中國(Blogchina.com) 原始出處: AKA雜志 

"Larry Wall是如何發明了一門淩亂的程式設計語言--接着改變了WEB的面貌?" 

LarryWall微笑着回憶起Yahoo的共同創始人DavidFilo幾年之前發給他消息,當時正值Yahoo公開面市之前的不久.File寫道:"如果沒有Perl,Wall發明的通用程式設計語言,Yahoo是不可能開始的.那麼,Larry你願意買一些便宜的,Yahoo的原始股(IPO)麼"?

回溯到1996年早期,當時正值矽谷Internet IPO的瘋狂處于絕對高度,這樣一個提議無異于問你是否接受讓一輛裝載了固體黃金制品的自動卸貨卡車往你的門前草坪上運輸.但是對于Wall,錢永遠不是主要的動機.盡管被認為是黑客們使用的最有價值的工具的作者,Wall仍平靜地住在偏遠的加州的Mountain View中一個小鎮上,為陳舊的1977 Hoda Accord做加工.Perl與錢無關,Wall隻是為了解決在日常工作中的碰到的一個程式設計問題才發明了這門語言,并且從開始他就确認Perl的源代碼是可以自由獲得的.人們總是想到用Perl來做修補工作--無論是用它來構造一個上百萬美圓的Internet目錄公司或者隻是在他們自己的首頁上面做一項調查.

盡管Wall可能很節儉,但他并不笨.他接受了這個提議并且為他的14歲的女兒購入一些Yahoo的股票--這也足夠支付她的大學費用.關于Internet上古老的"互惠經濟"(gift economy)的規則的更好的例子是幾乎不可想象的--投資網絡,你就可以獲利.

Larry Wall喜歡把Perl叫做一門"粗陋的"語言.用他那溫和的嗓音,他這樣描述perl:他是一個順從,溫順的仆人,隻是為了"讓他服從于你的需要"而存在.擁擠在Web上的大多數Perl黑客卻欠溫和:他們宣稱,Perl是一種不可缺少的粘合劑,使得整個web緊緊聯系在一起----不止是Yahoo,還有Amazon和其他成百萬的站點.Perl的支援者認為,如果沒有Perl和Larry Wall,那麼網絡隻是它現在樣子的一個蒼白的影子.

無論是在推動Web的發展,還是在制造了衆多Internet基礎設施的FreeSoftware/OpenSource運動的發展過程中,wall都扮演了一個重要的角色.但是即使他的同時尊稱他為FreeSoftware的"極為重要的首領和睿智的老者",Wall的上司風格絕對是謙卑的----這個顯著的個性使得他差別于該運動的其他上司人物.

作為傳教士的兒子和孫子,Wall是一個虔誠的教徒.據他的朋友,Perl的親密合作者Tom Christiansen說,他的任務是實作他的理想--"使人們合作工作.他計劃以他内心無私的感覺能夠為Perl做一些互利的工作".但是他不會允許自己卷入到不重要的"信仰"戰争中,這些戰争正困擾着程式設計世界----那些無休無止的争論諸如是否一個程式設計語言或者作業系統天生地比另外一個好.這樣激烈的争論是那些喜歡泾渭分明的黑客的偏好,他們不允許哪怕是狹小的變通空間的存在----相對計算機世界中的基礎概念如是/否,0/1等數字的問題,模糊性屬于外邊的世界。

但是Wall和Perl就是狹小空間的全部,就是淩亂的非理想性和模糊的創造性.畢竟,傳送的價值不僅在于它為你解決了某個具體問題,而在于它幫你完成了某項工作。某種程度上,Perl,不是第一流的.但那不是Wall關心的.他謙虛的目标就是有用,就是幫助幫助人們做他們需要做的----實作程式設計語言,硬體平台,多種軟體領域和同一個宇宙空間中共同工作的人們的互相連接配接.

如果你仔細思考,你會發現Perl是網絡的全部所在。 Wall十多年之前首先發明的Perl,直到1994年網絡成長時才開始爆炸性地傳播,這并非出于偶然。網絡是一個黑客雲集的,淩亂的既成事實存在,它需要快速的思考和更快的反應次數. Perl是一個網絡黑客的最好朋友.

Larry Wall是如何改變整個計算機文化的.

"我試圖同時得到适量的靈活性和穩定性",在他Mountai View的有些淩亂的家中,Wall說道.他正地在談關于Perl的事情,但他的态度融合進了日常生活的基礎.Wall有一個Caller ID(主叫标記)連在計算機上面,這樣對于每一個進來的電話他有指令來發出對應的聲音.CallerID有什麼好的,Wall問,如果你不得不走很遠去接電話以知道是誰打電話?同樣的,按下他的門鈴也從一個Wallace&Gromit粘土木偶發出一系列對話;當他的幹衣機(藏在車庫中)停止轉動時,一種汽笛聲将響徹整個房間.

Wall的職業是一個系統管理者,而不是一個軟體工程師.系統管理者對程式設計和技術傾向于一種功利主義的态度----他們關注于使網絡不停運轉,解決緊急的問題,飛快地程式設計.Wall做為一個程式員,一生都用來解決這種問題--Perl就是他個人工藝品倉庫中最近的工具.在他構造出PERL的幾年之前,他已經達到了黑客的名望,他寫了"Rn"----一個用于讀Usenet新聞討論區的程式.

對于軟體開發,Rn是一種現在稱為freesoftware或者opensource模型早期的原型----在其中各地的程式員通過網絡互相協作,通過使得大家都可以獲得代碼來改進産品.Wall寫了Rn,在Internet上發放了源代碼之後,然後就開始做更新版本,這個更新版本包含了來自最初的網絡空間中其他黑客提出的建議和錯誤修正。

但是回溯到80年代中期,通過網絡不是很容易發放更新版.人們通常通過300-1200波特率的modem連接配接網絡,是不可能以輕松的态度把上兆的源代碼來回傳遞,而現在這種情況很正常.

是以Wall寫了一個小程式,稱為"patch".Patch帶有一個壓縮的新的更新源代碼并可以應用于以前的源代碼.Patch能夠提高舊代碼更新的速度,并且甚至非常聰明地考慮以前的源代碼作過的變化.

作為黑客,Wall是一個相當慎重的人,但那并不意味着他總是很謙讓."patch改變了計算機文化",wall說.

"我多年來一直相信patch是他一個對opensource文化最重要的貢獻,盡管他從來沒有象Perl或者Rn作到的那樣吸引這種更大,更誘人的工程的注意力."opensource運動的最著名的上司人之一Eric Raymond說.

"Patch可能是迄今為止最成功的活兒",Raymond說道,"Larry有效地創造了,至少是關鍵性地促成了,被Linux驗證了的現代化的高度分布的開發模式."

Patch之後是Perl.表面上,他是完全不同的東東,一個高度複雜的"腳本"語言,為那些需要寫自動任務,連接配接不相容程式和系統或者解決難以應付的問題的程式員打算.Perl起源于1986,那時Wall是Burroughs公司的附屬公司的一個系統管理者.那時,他緻力于加州Santa Monica和Paoli,Pa.的計算機之間資訊的同步交換有關的"NSA的一個秘密項目",但NSA不止希望希望資訊的同步--它還希望生成關于每次交換的報表,而Wall現有的工具沒有一樣可以勝任這個任務.把所有的事情結合起來需要一個應急解決方案,一個程式設計的活兒,最終成為Perl----實用提取和報表語言(Practical Extraction and Report Language).

"我意識到在C語言和Unix Shells之間有極大的空白區域,"Wall說,"C可以處理複雜的事情--你可以叫它’可操作複雜性’而Shells卻擅長處理那些我稱做’whipupitude’的事情.但有一大段空白區域,無論C還是Shells都無法很好地處理,這就是我設計PERL的目的."

從那時起,Wall把他的業餘時間和精力花費在探索一門可以連接配接計算機領域中所有大的空白區域的語言的需求.

"人們總是在尋找空隙",Wall說,"他們總是在尋找新的生态環境.而你進入這些生态環境的速度是真正重要的,因為第一個進入這些環境的人總是赢家."

Perl是一個赢家.Wall保證Perl的特别強大的能力----文本處理,靈活性和一個對于解決快速/困難問題非常有用的工具集----他們使得程式員可以立即了解Perl的本質:比如David Filo和Jerry Yang,這兩個Stanford大學的大學生創造了Yahoo.他們發現Perl不可缺少.他們用Perl來生成Web頁面,為他們的執行Web資料搜集的機器人編寫代碼,并且維護web位址的資料庫.

"我們極大地依賴于它",FILO說,"由于可以快速地開發,你可以很快地做這些事情.

Yahoo的經驗不是唯一的,Tim O’Reilly,計算機圖書的出版公司O’Reilly & Associates的CEO和創始者說.不止是O’Reilly出版最暢銷的Perl計算機圖書,3年前他們還聘請Wall作為Perl的全職推銷者.

"Perl做這個很順利",O’Reilly說,"Perl比傳統的程式設計語言要容易了解的多,并且我認為是人們開始構造和想象Web是一個很重要的部分.他讓業餘愛好者進入----你不必是一個專業程式員....盡管Perl可能有點難,并且可能有點模糊,它對于那些人們想做的事情還是可用的.你可以把事情迅速地捆綁在一起并且迅速解決問題."

我隻是盡力使得計算機比程式員多想一些.

到底Perl能夠做什麼?在地位上,它與sun的其他計算機語言--Java/Python/Tcl相比,到底有什麼差别?

Perl的擁護者說,它是一個"瑞士×××"----一件可以高效地做任何事情的工具. 學習Perl,一個人不必是那種精通Java/C++的程式設計天才,盡管Perl自己的靈活性使得它有時比較混亂--尤其對那些習慣于隻用一種方法解決問題的程式員.但是Perl最大的優點在于它在其他計算機語言之間建立了一座橋梁.

"Perl曾經是,并且繼續是原型式的膠水語言",Chip Salzenberg, Perl最主要的代碼分發商之一說."按照設計,它的演進就是為真實程式員面對日常的挑戰、 需要使複雜和非協作的系統協調工作的需求所驅動的。

Larry Wall相信這個演進過程展現了真實的世界是如何工作的.

Perl作了許多工作,Wall說,并且對他認為是你程式的錯誤給出了很好的回報,是以當你試圖快速開發一些東西的話,會有非常迅速的好轉.你試驗一些東西,然後它出錯,你再改正.你就這樣使他成長,發展.我就是這樣寫程式的.許多人就是這樣程式設計的,他們也是這麼去思考的.

Wall說,Perl對真實生活的反映--他的人性特征--是内建于這門語言的深厚的哲學結構.Perl是,第一個後現代的計算機語言,WALL說,一個人造自然語言,模拟了程式員是如何思考的.

所有語言的深厚的結構都是Wall的主要關注點.在他作為一個系統管理者和相關hacking的一生中,他和他的妻子是Uc-Kerkeley的語言系的學生.wall說,他們的計劃是,是成為戰地的傳教士,并緻力于翻譯聖經.他們将從一本沒有書面語言的聖經開始工作,從頭學起,再寫下來,然後幫助将聖經翻譯成那門語言.

他和妻子放棄了這項任務,但是他轉而從事另一項工作--協助其他人為實作類似的目标-與其他人想連接配接做一些有用的事情而努力.當這件事情轉而成為創造一門程式設計語言,而不是徹底地從頭建造一些事情的時候,Wall--從他的語言訓練中得到靈感--選擇去建造一些事情來複制真實的人們的思想和行為.

首先而且最重要的是,這意味着為解決每個可能的問題提供許多不同的途徑--這導緻Perl的戰鬥口号,"有不止一條路徑可以實作"."如果你認為人們的語言是一個藝術媒介",WALL說,"他已經給你創造力的空間.如果你想能夠為不同的事情做優化--如果你想能夠用同一種語言開處方,作詩,寫報紙專欄和雜志專題--他就必須具有靈活性.這與人們在計算機科學中學到的截然不同.人們被教導如果有任何備援,那就是有害的,惡劣的.從自然語言的角度看,我不買它(指計算機科學的教導)的帳."

Perl沿着一門真實語言的道路發展,吸收了長期以來其他語言的優點----有一些Unix,一些c++,一些BASIC,一點這個,一點那個.如果其他任何人有一些新鮮,有用的東西,Perl會包含他.當Wall調用這些"後現代主義"的概念,他是指Perl的折衷,包容的方式----在每一個隐蔽處和裂縫中都可以找到的一點點真理的能力---同時不用使它自己被任何大的真理所包圍.

當他出現的時候,大多數計算機語言試圖使程式員想計算機一樣思考",Wall說,"我試圖使計算機比程式員多想一些,并達到了一定程度的成功.問題是,到底誰是主導者,這就是全部所在".

盡管Perl十分普及,但這門語言不是沒有反對者. MarcEwing, RedHat 的首席技術官員,Linux商業版本的主要分發商,情願使用Python;Infoseek,Internet的搜尋引擎公司,用Python做内部開發工作.也許最有力的批評來自Eric Raymond,他長期将Perl吹捧為open source運動最成功的故事之一."這門語言的設計顯示出他的年紀和明顯的膨脹的标記,Perl從來不是一個漂亮或者優雅的語言;他的引誘力在于他的直接的可用性.長期之後,在我看來,Larry’s早期選擇産生的問題是積聚和加強其他優點隻比效益的堆積快一點點."

"這些問題導緻了很多人從使用Perl流失到其他腳本語言,",Raymond說,"我個人是這種趨勢的一部分;我已經完全從Perl轉向Python,一門年輕的語言,有點象應用程式但是有更清晰的設計...我期望在未來Perl相關的重要性可能降低,即使啊的開發人員的基數在絕對數字上持續增長,因為他的競争者的增長将比Perl的競争者快的多".

Perl有很多優點,但決不清晰----實際上使用Perl的黑客用"混亂"作為稱贊的話.但是對于perl的攻擊者,甚至是Python的支援者,混亂犯了程式設計的大忌.

我最近從perl的使用者(同時也是Python的使用者--但他們并不總是喜歡Python)聽到的最多的一個抱怨是-當你有一段時間沒有接觸Perl後,即使你自己的Perl代碼也很難再讀懂--更别提别人的Perl代碼了。,"GuidoVanRossun,Python的主要作者說,"對于過去的或者不熟悉的Python代碼這很少是一個問題.當Perl的支援者極力提倡Perl使用者寫清晰的代碼,并且較新的Perl版本包含一些幫助特性,Perl堅持“混亂”的價值意味這總是Perl的一個問題。”

在某中程度上,Perl/Python的争論隻是無休止的那些為了展現黑客特性争奪主導權的比賽的另一個例子.但關鍵差别是真實的---那些探詢純正和那些堅持工具的有效性之間的差别."純正語言的支援者總是說Perl是醜陋的",O’Reilly說,"說Perl是一個’廚房水槽’式的語言,說Perl會被他的自重壓垮,而Perl繼續比其他腳本語言的合集解決越來越多的問題".

"我們出售關于Perl和Python的最暢銷書."...說,"并且我們繼續看到Perl使用情況的健康增長,而Python的增長很平常.Perl的使用比Python高的多,至少根據書籍銷售的情況來看是這樣."

“Perl并沒有經曆任何大規模的使用者分流”,Salzenberg說,“至多你可以說,在Perl繼續發展的同時其他也在發展.這對Perl是很好的.當有許多事情需要膠合,一門粘貼語言是最有用的...Perl将繼續發展以使得任何事情可以與其他任何事情相連接配接.”

Wall讓其他人反擊對Perl的攻擊.當我詢問他對于Raymond的直接的批評的反應是,他發給我一份線上email,其中引用了托爾斯泰的話:"這真奇怪,托爾斯泰寫道,漂亮就是好的這個錯覺是如此地完美!"

對于wall,好就是作好連接配接,這正是他自身的美麗所在.

Perl不但連接配接了C程式員的世界和UnixShell的世界,或者連接配接了計算機世界的數字服務和人類現實不成熟的混亂.Perl還在自由軟體世界的兩個極端之間架設了一座橋梁,一方是Raymond為代表的商業實用主義,他們支援自由軟體因為它作出了最好的軟體;一方是自由軟體基金的RichardStallman上司的激進的道德學家,他們相信自由軟體是絕對好的.

那些希望修改或者改變perl的人們可以通過在兩種不同的許可聲明下的限制達到這個目的.他們可以在GPL下操作---Stallman的FSF制定的非常嚴格的許可證,為了保證自由軟體總是保持自由.或者他們可以選擇Wall自己的"藝術許可證"--一套更寬松的規則的集合,wall說,這意味着"本質上,你可以用Perl做任何你想的事情事情,隻要你把藝術的控制權給我就行了."

它已經不會招緻FSF任何過分的不滿了,WALL說,但實際上藝術license接近與我在這個問題上的感受,我希望perl能夠被使用.

的确是這樣.Perl在一個似乎是死路一條的地方開辟了一種可能性---為什麼有如此之多的Perl 黑客的一個主要的原因是,當被問到為什麼他們喜愛perl,一個簡單的回答就是"fun"(有趣)

我問LarryWall為什麼認為Perl有趣."他讓你富有創造力",他說,"他給你衆多選擇.你常用的計算機語言就象一種訓練,他會把你帶到他到過的任何地方.Perl就象一輛偏離大路的汽車,将把你帶到你想去的地方,即使到那裡沒有任何正式的道路."

當你能夠利用那種路徑搜尋的方法, 你就從努力中得到回報.LarryWall,坐在MountainView家中的起房間,撫摩他的小貓,聽着回蕩在房間中神秘的音樂,就象一個非常高興的男孩.他對web作出了有價值的貢獻,web不會讓他忘記它的.

"幾乎每一天,都有人會給我寫一條消息說我喜歡你發明的那個東西",LarryWall說,"它改變了我的生命,我曾經讨厭程式設計--現在程式設計又是一個快樂的事情." 

繼續閱讀