|
“Larry Wall是如何發(fā)明了一門凌亂的編程語言 —— 接著改變了WEB的面貌?”
LarryWall微笑著回憶起Yahoo的共同創(chuàng)始人David Filo幾年之前發(fā)給他消息,當(dāng)時正值Yahoo公開面市之前的不久。Filo寫道:"如果沒有Perl——Wall發(fā)明的通用編程語言,Yahoo是不可能開始的。那么,Larry你愿意買一些便宜的Yahoo的原始股么"?
回溯到1996年早期,當(dāng)時正值硅谷InterNET IPO的瘋狂處于絕對高度,這樣一個提議無異于問你是否接受讓一輛裝載了固體黃金制品的自動卸貨卡車往你的門前草坪上運輸。但是對于Wall, 錢永遠(yuǎn)不是主要的動機。盡管被認(rèn)為是黑客們使用的最有價值的工具的作者,Wall仍平靜地住在偏遠(yuǎn)的加州的Mountain View中一個小鎮(zhèn)上,為陳舊的1977 Hoda Accord做加工。Perl與錢無關(guān), Wall只是為了解決在日常工作中的碰到的一個編程問題才發(fā)明了這門語言,并且從開始他就確認(rèn)Perl的源代碼是可以自由獲得的。人們總是想到用Perl來做修補工作 —— 無論是用它來構(gòu)造一個上百萬美元的InterNET目錄公司或者只是在他們自己的主頁上面做一項調(diào)查。
盡管Wall可能很節(jié)儉,但他并不笨。他接受了這個提議并且為他的14歲的女兒購入一些Yahoo的股票 —— 這也足夠支付她的大學(xué)費用。關(guān)于InterNET上古老的"互惠經(jīng)濟"(gift economy)的規(guī)則的更好的例子是幾乎不可想象的 —— 投資網(wǎng)絡(luò),你就可以獲利。
Larry Wall喜歡把Perl叫做一門"粗陋的"語言,用他那溫和的嗓音,他這樣描述Perl:他是一個順從,溫順的仆人,只是為了"讓他服從于你的需要"而存在。擁擠在Web上的大多數(shù)Perl黑客卻欠溫和:他們宣稱,Perl是一種不可缺少的粘合劑,使得整個Web緊緊聯(lián)系在一起 —— 不止是Yahoo, 還有Amazon和其他成百萬的站點。Perl的支持者認(rèn)為,如果沒有Perl和Larry Wall, 那么網(wǎng)絡(luò)只是它現(xiàn)在樣子的一個蒼白的影子。
無論是在推動Web的發(fā)展,還是在制造了眾多InterNET基礎(chǔ)設(shè)施的FreeSoftware/OpenSource運動的發(fā)展過程中,Wall都扮演了一個重要的角色。但是,即使他的同事尊稱他為FreeSoftware的"極為重要的首領(lǐng)和睿智的老者",Wall的領(lǐng)導(dǎo)風(fēng)格絕對是謙卑的 —— 這個顯著的個性使得他區(qū)別于該運動的其他領(lǐng)導(dǎo)人物。
作為傳教士的兒子和孫子,Wall是一個虔誠的教徒。據(jù)他的朋友,Perl的親密合作者Tom Christiansen說,他的任務(wù)是實現(xiàn)他的理想 —— "使人們合作工作。他計劃以他內(nèi)心無私的感知能夠為Perl做一些互利的工作"。但是他不會允許自己卷入到不重要的"信仰"戰(zhàn)爭中,這些戰(zhàn)爭正困擾著編程世界 —— 那些無休無止的爭論諸如是否一個編程語言或者操作系統(tǒng)天生地比另外一個好。這樣激烈的爭論是那些喜歡涇渭分明的黑客的偏好,他們不允許哪怕是狹小的變通空間的存在 —— 相對計算機世界中的基礎(chǔ)概念如是/否,0/1等數(shù)字的問題,模糊性屬于外邊的世界。
但是Wall和Perl就是狹小空間的全部,就是凌亂的非理想性和模糊的創(chuàng)造性。畢竟,傳送的價值不僅在于它為你解決了某個具體問題,而在于它幫你完成了某項工作。某種程度上,Perl不是第一流的。但那不是Wall關(guān)心的,他謙虛的目標(biāo)就是有用
,就是幫助幫助人們做他們需要做的 —— 實現(xiàn)編程語言,硬件平臺,多種軟件領(lǐng)域和同一個宇宙空間中共同工作的人們的互相連接。
如果你仔細(xì)思考,你會發(fā)現(xiàn)Perl是網(wǎng)絡(luò)的全部所在。 Wall十多年之前首先發(fā)明的Perl,直到1994年網(wǎng)絡(luò)成長時才開始爆炸性地傳播,這并非出于偶然。網(wǎng)絡(luò)是一個黑客云集的,凌亂的既成事實存在,它需要快速的思考和更快的反應(yīng)次數(shù)。Perl是一個網(wǎng)絡(luò)黑客的最好朋友。
Larry Wall是如何改變整個計算機文化的
“我試圖同時得到適量的靈活性和穩(wěn)定性”,在他Mountain View的有些凌亂的家中,Wall說道,他正地在談關(guān)于Perl的事情,但他的態(tài)度融合進了日常生活的基礎(chǔ)。
Wall有一個Caller ID(主叫標(biāo)記)連在計算機上面,這樣對于每一個進來的電話他有指令來發(fā)出對應(yīng)的聲音。CallerID有什么好的,Wall問,如果你不得不走很遠(yuǎn)去接電話以知道是誰打電話?同樣的,按下他的門鈴也從一個Wallace&Gromit粘土木偶發(fā)出一系列對話;當(dāng)他的干衣機(藏在車庫中)停止轉(zhuǎn)動時,一種汽笛聲將響徹整個房間。
Wall的職業(yè)是一個系統(tǒng)管理員,而不是一個軟件工程師。系統(tǒng)管理員對編程和技術(shù)傾向于一種功利主義的態(tài)度 —— 他們關(guān)注于使網(wǎng)絡(luò)不停運轉(zhuǎn),解決緊急的問題,飛快地編程。Wall做為一個程序員,一生都用來解決這種問題 —— Perl就是他個人工藝品倉庫中最近的工具。在他構(gòu)造出Perl的幾年之前,他已經(jīng)達到了黑客的名望,他寫了"Rn" —— 一個用于讀UseNET新聞組的程序。
對于軟件開發(fā),Rn是一種現(xiàn)在稱為FreeSoftware或者OpenSource模型早期的原型 —— 在其中各地的程序員通過網(wǎng)絡(luò)互相協(xié)作,通過使得大家都可以獲得代碼來改進產(chǎn)品。Wall寫了Rn,在InterNET上發(fā)放了源代碼之后,然后就開始做升級版本,這個升級版本包含了來自最初的網(wǎng)絡(luò)空間中其他黑客提出的建議和錯誤修正。
但是回溯到80年代中期,通過網(wǎng)絡(luò)不是很容易發(fā)放升級版。人們通常通過300-1200波特率的modem連接網(wǎng)絡(luò),是不可能以輕松的態(tài)度把上兆的源代碼來回傳遞,而現(xiàn)在這種情況很正常。
所以Wall寫了一個小程序,稱為"patch"。Patch帶有一個壓縮的新的升級源代碼并可以應(yīng)用于以前的源代碼。Patch能夠提高舊代碼更新的速度,并且甚至非常聰明地考慮以前的源代碼作過的變化。
作為黑客,Wall是一個相當(dāng)慎重的人,但那并不意味著他總是很謙讓。“patch改變了計算機文化",wall說。
"我多年來一直相信patch是一個對OpenSource文化最重要的貢獻,盡管它從來沒有象Perl或者Rn作到的那樣吸引這種更大,更誘人的工程的注意力。”OpenSource運動的最著名的領(lǐng)導(dǎo)人之一Eric Raymond說。
“Patch可能是迄今為止最成功的活兒”,Raymond說道,“Larry有效地創(chuàng)造了,至少是關(guān)鍵性地促成了,被Linux驗證了的現(xiàn)代化的高度分布的開發(fā)模式。”
Patch之后是Perl。表面上,它是完全不同的東東,一個高度復(fù)雜的"腳本"語言,為那些需要寫自動任務(wù),連接不兼容程序和系統(tǒng)或者解決難以應(yīng)付的問題的程序員打算。Perl起源于1986,那時Wall是Burroughs公司的附屬公司的一個系統(tǒng)管理員。那時,他致力于加州Santa Monica和Paoli,Pa.的計算機之間信息的同步交換有關(guān)的"NSA的一個秘密項目",但NSA不止希望希望信息的同步 —— 它還希望生成關(guān)于每次交換的報表,而Wall現(xiàn)有的工具沒有一樣可以勝任這個任務(wù)。把所有的事情結(jié)合起來需要一個應(yīng)急解決方案,一個編程的活兒,最終成為Perl —— 實用提取和報表語言(Practical Extraction and Report Language)。
“我意識到在C語言和Unix Shells之間有極大的空白區(qū)域,”Wall說,“C可以處理復(fù)雜的事情 —— 你可以叫它’可操作復(fù)雜性’而Shells卻擅長處理那些我稱做’whipupitude’的事情。但有一大段空白區(qū)域,無論C還是Shells都無法很好地處理,
這就是我設(shè)計Perl的目的。”
從那時起,Wall把他的業(yè)余時間和精力花費在探索一門可以連接計算機領(lǐng)域中所有大的空白區(qū)域的語言的需求。
“人們總是在尋找空隙”,Wall說,“他們總是在尋找新的生態(tài)環(huán)境,而你進入這些生態(tài)環(huán)境的速度是真正重要的,因為第一個進入這些環(huán)境的人總是贏家。”
Perl是一個贏家。Wall保證Perl的特別強大的能力 —— 文本處理,靈活性和一個對于解決快速/困難問題非常有用的工具集 —— 他們使得程序員可以立即了解Perl的本質(zhì):比如David Filo和Jerry Yang,這兩個Stanford大學(xué)的本科生創(chuàng)造了
Yahoo。他們發(fā)現(xiàn)Perl不可缺少,他們用Perl來生成Web頁面,為他們的執(zhí)行Web數(shù)據(jù)搜集的機器人編寫代碼,并且維護Web地址的數(shù)據(jù)庫。
“我們極大地依賴于它”,F(xiàn)ilo說,由于可以快速地開發(fā),你可以很快地做這些事情。
Yahoo的經(jīng)驗不是唯一的,Tim O’Reilly,計算機圖書的出版公司O’Reilly & Associates的CEO和奠基人說,不止是O’Reilly出版最暢銷的Perl計算機圖書,3年前他們還聘請Wall作為Perl的全職推銷者。
“Perl做這個很順利”,O’Reilly說,“Perl比傳統(tǒng)的編程語言要容易理解的多,并且我認(rèn)為是人們開始構(gòu)造和想象Web時一個很重要的部分。他讓業(yè)余愛好者進入 —— 你不必是一個專業(yè)程序員....盡管Perl可能有點難,并且可能有點模糊,它對于
那些人們想做的事情還是可用的。你可以把事情迅速地捆綁在一起并且迅速解決問題。”
我只是盡力使得計算機比程序員多想一些
到底Perl能夠做什么?在地位上,它與Sun的其他計算機語言 —— Java/Python/Tcl相比,到底有什么差別?
Perl的擁護者說,它是一個"瑞士軍刀" —— 一件可以高效地做任何事情的工具。 學(xué)習(xí)Perl,一個人不必是那種精通Java/C++的編程天才,盡管Perl自己的靈活性使得它有時比較混亂 —— 尤其對那些習(xí)慣于只用一種方法解決問題的程序員。但是Perl最大的優(yōu)點在于它在其他計算機語言之間建立了一座橋梁。
“Perl曾經(jīng)是,并且繼續(xù)是原型式的膠水語言",Chip Salzenberg, Perl最主要的代碼分發(fā)商之一說,“按照設(shè)計,它的演進就是為真實程序員面對日常的挑戰(zhàn)、需要使復(fù)雜和非協(xié)作的系統(tǒng)協(xié)調(diào)工作的需求所驅(qū)動的。”
Larry Wall相信這個演進過程體現(xiàn)了真實的世界是如何工作的。
Perl作了許多工作,Wall說,并且對他認(rèn)為是你程序的錯誤給出了很好的反饋,所以當(dāng)你試圖快速開發(fā)一些東西的話,會有非常迅速的好轉(zhuǎn)。你試驗一些東西,然后它出錯,你再改正。你就這樣使它成長,發(fā)展。我就是這樣寫程序的。許多人就是這樣編程的,他們也是這么去思考的。
Wall說,Perl對真實生活的反映 —— 他的人性特征 —— 是內(nèi)建于這門語言的深厚的哲學(xué)結(jié)構(gòu)。Perl是第一個后現(xiàn)代的計算機語言,Wall說,一個人造自然語言,模擬了程序員是如何思考的。
所有語言的深厚的結(jié)構(gòu)都是Wall的主要關(guān)注點。在他作為一個系統(tǒng)管理員和相關(guān)hacking的一生中,他和他的妻子是Uc-Kerkeley的語言系的學(xué)生。Wall說,他們的計劃是,成為戰(zhàn)地的傳教士,并致力于翻譯圣經(jīng)。他們將從一本沒有書面語言的圣經(jīng)開始工作,從頭學(xué)起,再寫下來,然后幫助將圣經(jīng)翻譯成那門語言。
他和妻子放棄了這項任務(wù),但是他轉(zhuǎn)而從事另一項工作 —— 協(xié)助其他人為實現(xiàn)類似的目標(biāo) —— 與其他人想連接做一些有用的事情而努力。當(dāng)這件事情轉(zhuǎn)而成為創(chuàng)造一門編程語言,而不是徹底地從頭建造一些事情的時候,Wall —— 從他的語言訓(xùn)練中得到靈感 —— 選擇去建造一些事情來復(fù)制真實的人們的思想和行為。
首先而且最重要的是,這意味著為解決每個可能的問題提供許多不同的途徑 —— 這導(dǎo)致Perl的戰(zhàn)斗口號,“有不止一條路徑可以實現(xiàn)”。“如果你認(rèn)為人們的語言是一個藝術(shù)媒介”,WALL說,“他已經(jīng)給你創(chuàng)造力的空間。如果你想能夠為不同的事情做優(yōu)化 —— 如果你想能夠用同一種語言開處方,作詩,寫報紙專欄和雜志專題 —— 他就必須具有靈活性。這與人們在計算機科學(xué)中學(xué)到的截然不同。人們被教導(dǎo)如果有任何冗余,那就是有害的,惡劣的。從自然語言的角度看,我不買它(指計算機科學(xué)的教導(dǎo))的帳。”
Perl沿著一門真實語言的道路發(fā)展,吸收了長期以來其他語言的優(yōu)點 —— 有一些Unix, 一些C++, 一些BASIC, 一點這個,一點那個。如果其他任何人有一些新鮮,有用的東西,Perl會包含他。當(dāng)Wall調(diào)用這些"后現(xiàn)代主義"的概念,他是指Perl的折衷,包容的方式 —— 在每一個隱蔽處和裂縫中都可以找到的一點點真理的能力 —— 同時不用使它自己被任何大的真理所包圍。
“當(dāng)它出現(xiàn)的時候,大多數(shù)計算機語言試圖使程序員想計算機一樣思考”,Wall說,“我試圖使計算機比程序員多想一些。并達到了一定程度的成功。問題是,到底誰是主導(dǎo)者,這就是全部所在”。
盡管Perl十分普及,但這門語言不是沒有反對者。MarcEwing,RedHat的首席技術(shù)官員,Linux商業(yè)版本的主要分發(fā)商,情愿使用Python;Infoseek, InterNET的搜索引擎公司,用Python做內(nèi)部開發(fā)工作。也許最有力的批評來自Eric Raymond, 他長期將Perl吹捧為Open Source運動最成功的故事之一,“這門語言的設(shè)計顯示出他的年紀(jì)和明顯的膨脹的標(biāo)記,Perl從來不是一個漂亮或者優(yōu)雅的語言;他的引誘力在于他的直接的可用性。長期之后,在我看來,Larry’s早期選擇產(chǎn)生的問題是積聚和加強其他優(yōu)點只比效益的堆積快一點點。”
“這些問題導(dǎo)致了很多人從使用Perl流失到其他腳本語言”,Raymond說,“我個人是這種趨勢的一部分,我已經(jīng)完全從Perl轉(zhuǎn)向Python, 一門年輕的語言,有點象應(yīng)用程序但是有更清晰的設(shè)計...我期望在未來Perl相關(guān)的重要性可能降低,即使它的開發(fā)人員的基數(shù)在絕對數(shù)字上持續(xù)增長,因為它的競爭者的增長將比Perl的競爭者快的多"。
Perl有很多優(yōu)點,但決不清晰 —— 實際上使用Perl的黑客用"混亂"作為稱贊的話。但是對于Perl的攻擊者,甚至是Python的支持者,混亂犯了編程的大忌。
我最近從Perl的用戶(同時也是Python的用戶 —— 但他們并不總是喜歡Python)聽到的最多的一個抱怨是 —— 當(dāng)你有一段時間沒有接觸Perl后,即使你自己的Perl代碼也很難再讀懂 —— 更別提別人的Perl代碼了。” GuidoVanRossun, Python的主要作者說,“對于過去的或者不熟悉的Python代碼這很少是一個問題。當(dāng)Perl的支持者極力提倡Perl用戶寫清晰的代碼,并且較新的Perl版本包含一些幫助特性,Perl堅持“混亂”的價值意味這總是Perl的一個問題。”
在某種程度上,Perl/Python的爭論只是無休止的那些為了體現(xiàn)黑客特性爭奪主導(dǎo)權(quán)的比賽的另一個例子。但關(guān)鍵差別是真實的 —— 那些探詢純正和那些堅持工具的有效性之間的差別。“純正語言的支持者總是說Perl是丑陋的”,O’Reilly說,“說
Perl是一個’廚房水槽’式的語言,說Perl會被他的自重壓垮,而Perl繼續(xù)比其他腳本語言的合集解決越來越多的問題”。
“我們出售關(guān)于Perl和Python的最暢銷書,”,O’Reilly說,“并且我們繼續(xù)看到Perl使用情況的健康增長,而Python的增長很平常。Perl的使用比Python高的多,至少根據(jù)書籍銷售的情況來看是這樣。”
“Perl并沒有經(jīng)歷任何大規(guī)模的使用者分流“,Salzenberg說,”至多你可以說,在Perl繼續(xù)發(fā)展的同時其他也在發(fā)展。這對Perl是很好的。當(dāng)有許多事情需要膠合,一門粘貼語言是最有用的...Perl將繼續(xù)發(fā)展以使得任何事情可以與其他任何事情
相連接。”
Wall讓其他人反擊對Perl的攻擊。當(dāng)我詢問他對于Raymond的直接的批評的反應(yīng)是,他發(fā)給我一份在線email,其中引用了托爾斯泰的話:“這真奇怪,托爾斯泰寫道,漂亮就是好的這個錯覺是如此地完美!”
對于@all,好就是作好連接,這正是他自身的美麗所在。
Perl不但連接了C程序員的世界和UnixShell的世界,或者連接了計算機世界的數(shù)字服務(wù)和人類現(xiàn)實不成熟的混亂。Perl還在自由軟件世界的兩個極端之間架設(shè)了一座橋梁,一方是Raymond為代表的商業(yè)實用主義,他們支持自由軟件因為它作出了
最好的軟件,一方是自由軟件基金的RichardStallman領(lǐng)導(dǎo)的激進的道德學(xué)家,他們相信自由軟件是絕對好的。
那些希望修改或者改變Perl的人們可以通過在兩種不同的許可聲明下的限制達到這個目的。他們可以在GPL下操作 —— Stallman的FSF制定的非常嚴(yán)格的許可證,為了保證自由軟件總是保持自由。或者他們可以選擇Wall自己的"藝術(shù)許可證" —— 一套更寬松的規(guī)則的集合,Wall說,這意味著“本質(zhì)上,你可以用Perl做任何你想的事情,只要你把藝術(shù)的控制權(quán)給我就行了。”
它已經(jīng)不會招致FSF任何過分的不滿了,Wall說,但實際上藝術(shù)license接近與我在這個問題上的感受,我希望Perl能夠被使用。
的確是這樣。Perl在一個似乎是死路一條的地方開辟了一種可能性 —— 為什么有如此之多的Perl 黑客的一個主要的原因是,當(dāng)被問到為什么他們喜愛Perl,一個簡單的回答就是"fun"(有趣)。
我問Larry Wall為什么認(rèn)為Perl有趣。“他讓你富有創(chuàng)造力”,他說,“他給你眾多選擇。你常用的計算機語言就象一種訓(xùn)練,他會把你帶到他到過的任何地方。Perl就象一輛偏離大路的汽車,將把你帶到你想去的地方,即使到那里沒有任何正式的道路。”
當(dāng)你能夠利用那種路徑搜索的方法,你就從努力中得到回報。Larry Wall, 坐在Mountain View家中的起居室,撫摩他的小貓,聽著回蕩在房間中神秘的音樂,就象一個非常高興的男孩。他對Web作出了有價值的貢獻,Web不會讓他忘記它的。
“幾乎每一天,都有人會給我寫一條消息說我喜歡你發(fā)明的那個東西”,LarryWall說,“它改變了我的生命,我曾經(jīng)討厭編程 —— 現(xiàn)在編程又是一個快樂的事情。”
it知識庫:傳奇程序員Larry Wall:Perl的樂趣,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。