?? 編程之道(序).txt
字號:
發(fā)信人: jj (88不許我id用一個字母 :(), 信區(qū): Algorithm
標(biāo) 題: 編程之道(序)
發(fā)信站: 飄渺水云間 (Fri Jun 8 18:56:41 2001), 轉(zhuǎn)信
前言
《編程之道》的出版在程序設(shè)計業(yè)內(nèi)得到了普遍的接受,出版社邀請我翻譯一些與之相
關(guān)的文章,以作為那部著名的經(jīng)典之作的補充。雖然,我申明我的能力難以勝任,但我
最終還是被說服試一試。
本書是許多個月來研究和翻譯的結(jié)果,它試圖通過對那些傳統(tǒng)著作的摘錄,來饈一個復(fù)
雜的主題。我不懷疑,將會有許多計算機考古專家對我的摘錄標(biāo)準(zhǔn)提出意見。他們地問
,“他為什么不把《UNIX程序員、大象和妓女》的寓言包括進(jìn)來?”“他竟敢忽視歷史
悠久的故事《圖靈集市歷險記》!”對于這些批評,我只能說,我已經(jīng)盡了我最大的努
力來選擇有代表性的內(nèi)容。
為了確定文中各個章節(jié)的年代,我利用了朝代系統(tǒng)。對于那些不熟悉這套劃分年代的方
法的人來說,可以按四個朝代(或者說“四代”)來劃分。
第一個朝代,即所謂的“黃金時代”,要追溯到由玻璃管構(gòu)建計算機的日子;許多現(xiàn)代
的學(xué)者斷言,這個年代具有神話色彩。第二個朝代開始于晶體管的發(fā)明,而結(jié)束于集成
電路的再現(xiàn)。
現(xiàn)代計算機的歷史,開始于第三個朝代,它由主機和控制主機的軍機大臣所統(tǒng)治。第四
個朝代開始于對“集成教”的鎮(zhèn)壓,“集成教”對業(yè)已建立的秩序的反抗,被狂熱的“
藍(lán)色兵團(tuán)”殘酷地摧毀了。具有諷刺意義的是,正是這次鎮(zhèn)壓,導(dǎo)致編程之禪擴散到了
外部世界。
除了組成該書主體的古老的素材以外,我還有幸得到了Babbage博士和Yu博士的幫助,他
們分別為該書撰寫了引言和序。我希望他們對該書的貢獻(xiàn)能夠或多或少地彌補我作為編
者的不才。
Geoffrey James
1988年1月于洛杉磯
目錄
前言
序
引言
第一篇 木
第二篇 火
第三篇 土
第四篇 金
第五篇 水
根據(jù)古老的“五行學(xué)說”,本書由五部分?。?
木 火 土 金 水
大師:忍者 行者 隱者 大力神 阿幸
媒體:編年史 民間故事說教 公案 俳句
硬件:鍵盤 顯示器 CPU 打印機 磁盤
方向:東 南 中 西 北
軟件:編輯程序格式化程序調(diào)試程序解釋程序編譯程序
感覺:觸覺 視覺 嗅覺 聽覺 味覺
階段:界面 設(shè)計 編碼 排錯 測試
動物:龍 鳳凰 牛 兔 蛇
系統(tǒng):VMS CP-6 OS/VS MS-DOS Unix
這套分類系統(tǒng)包羅萬象,要想在該書的篇幅內(nèi)把它闡釋清楚是不大可能的。然而,在沉
思于這些千變?nèi)f化的對應(yīng)關(guān)系之后,您或許會發(fā)現(xiàn)其中那令人驚異的洞察力。
序
毫無疑問,古老的編程藝術(shù)在西文人的腦海里通常會被誤解,現(xiàn)代的觀點則認(rèn)為這是一
種工程學(xué)、機械論和唯物論。
許多人認(rèn)為,編程僅是為了達(dá)到一個目的而使用的一種手段,而且,一個程序(及程序
員)只能依據(jù)其賺錢的能力來評價。
這些原始的錯覺,來自于對編程的真正意圖的一種很深的誤解。
高超的程序員并非致力于表面的成功,而是在人機之間尋找一種神秘的存在。
根據(jù)禪的解釋,在硬件、軟件、固件、界面和理解之間沒有分界--相反,所有這些都
結(jié)合進(jìn)了一個和諧的整體。
只有當(dāng)程序員最終學(xué)會了將那種“自我自我的存在”的虛假感覺拋在一邊,此種境界才
可能達(dá)到,而那種“自我的存在”的感覺往往伴隨在我們大多數(shù)人的生活之中。
這是計算機所帶來的--禪師程序員的行為方式。
有人說,掌握了禪機的程序員也就掌握了生命。這樣的程序員是以一種永不疲倦的童稚
的歡樂來看待這個世界的。
覺悟了的程序員,走在大街上也能感覺到兩旁房子和大樓里面的電腦。
覺悟了的程序員,能夠感覺和聽到調(diào)制過的數(shù)據(jù)穿過電腦線時那種電流脈沖的持續(xù)不斷
的嗡嗡聲。
覺悟了的程序員已經(jīng)與宇宙合為一體。
我以前的學(xué)生Geoffrey能夠完成這樣一個工作,將失落的編程之禪的經(jīng)典著作再現(xiàn)于世
,作為一名教師,我感到由衷的滿足。
真心希望,這本書能夠重新確立禪在完善的程序員教育中的重要地位。
C.P.Yu博士
蓮花大學(xué)超越機器學(xué)院
西藏拉薩
引言
當(dāng)James先生要求我給他的這本書寫一篇引言的時侯,除了講述一下關(guān)于我自己在程序維
護(hù)這個神秘的領(lǐng)域中的個人經(jīng)歷,我實在想不到更好的辦法了。程序的維護(hù)是程序設(shè)計
藝術(shù)中很少被人理解的領(lǐng)域。
有的讀者肯定會堅持說,在禪的深奧教義和程序維護(hù)的卑微技藝之間,并沒有什么共同
點。但正如一位大師所言:“方法和途徑(也就是道)存在于所有的程序之中,甚至在
電子游戲里?!币虼?,長期被的程序維護(hù)藝術(shù)必定有其禪的方面,這點是確鑿無疑的,
雖然那對于未經(jīng)訓(xùn)練的頭腦來說或許不會立刻顯現(xiàn)出來。
我的故事開始于我從大學(xué)計算機科學(xué)專業(yè)畢業(yè)后的幾個星期。我大學(xué)畢業(yè)后的目標(biāo)是為
一家研究和開發(fā)機構(gòu)工作,最好是編譯程序或操作系統(tǒng)設(shè)計的部門。我最后終于找到一
家愿意盲雇傭我的機構(gòu),但條件是我必須在一段時間內(nèi),通過完成程序維護(hù)的工作來“
學(xué)會這套系統(tǒng)”。
我當(dāng)然會對這個建議產(chǎn)生抵觸心理。我花了五年的大學(xué)時間,竟然是為了浪費時間來解
決其他一些程序員的錯誤!然而,因為他們曾經(jīng)答應(yīng)日后讓我干感興趣的工作,于是我
便接受了,并在心中提醒自己,即使這份工作干不出名堂,我還能找到其他的工作。
當(dāng)我第二個禮拜去報到的時侯,我被領(lǐng)著去與那個程序維護(hù)組的師父見面。人事部總管
帶著我快步地穿過開發(fā)中心黑暗的走廊,最后她指著長長的大廳通道盡頭處的一扇門說
:“他在那里面?!闭f完志身走了,好像有些心神不定。
我向門口走去,眼睛朝里面窺探,我看見一個男人正坐在終端前工作,但他背對著我,
所以我不知道他有多大年紀(jì),長得什么樣。我只有靠咳嗽一聲來表明我的存在,這里,
那位大師甚至沒有回頭瞅一眼便說:“請坐”。
越過他的肩膀,我瞟見了那些難以理解的屏幕顯示,隨著他纖長的手指在鍵盤上飛舞,
它們一閃一閃地出現(xiàn)在他的終端上。最后,他滿意地咕噥了一聲,退出系統(tǒng),然后轉(zhuǎn)過
身來面對著我。
我所看見的讓我吃了一驚,因為他看上去不像那種應(yīng)該是禪師的人,他的臉乏味,幾乎
是丑陋的,他的頭發(fā)如同一圈煩惱的光環(huán)。但人們首先注意的是他的眼睛,透過厚厚的
眼鏡片射出淡淡的藍(lán)光。
他從頭到腳地打量了我一番,然后點點頭,就好像確認(rèn)一個個人觀點,“你就是那個新
來的?”他酸酸地問。
“是的?!蔽一卮?。我假裝充滿激情,把我的經(jīng)歷和在大學(xué)的成績向他作了快速的匯報
。
這位禮貌的聽著,然后說:“那很好,但你以前做過程序的維護(hù)工作嗎?”
我坦白地告訴他我沒有做過。
師父長長地嘆了口氣,“那好,我們應(yīng)該做我們做做的事。”他說。然后他從一個架子
上取下一本龐大的程序清單,隨意地翻開它,并遞給我。接著他問:“你怎樣對付這個
?”
我眼睛盯著這本清單,那上面是匯編語言,還攙和著一些奇怪的宏語言。每隔十幾行語
句,控制權(quán)便轉(zhuǎn)移到某個神秘的子程序,而且,即使這個程序具有任何結(jié)構(gòu)性,我也看
不出來。“這是什么程序、”我問。
師父把那本清單從我的膝蓋上拿了過去,“這是《世代大師編碼藏經(jīng)》,”他說,“當(dāng)
你學(xué)會了從迷魂陣中把錯誤的代碼抓出來時,那就是你出師的時侯了?!比缓?,他合上
清單,把它放回到書架上。
我不久便意識到,程序的維護(hù)遠(yuǎn)比我想象的要難得多。我起初試圖學(xué)會那本《編碼藏經(jīng)
》中所用的匯編語言,但令我煩惱的是,我發(fā)現(xiàn)那套匯編語言從未按規(guī)矩提供過說明文
檔,現(xiàn)存的僅有一些筆記,是一位多年前就死去或離開公司的硬件開發(fā)者寫的。
這本《編碼藏經(jīng)》不能給我什么幫助了。雖然其中偶爾有一些注釋,但這些注釋和這種
匯編語言一樣模糊,除了一些涉及到有關(guān)原始硬件構(gòu)造的使人干著急的資料以外,別無
它物。
當(dāng)我向那位師父抱怨這一切的時侯,他禮貌地聽著,并在我們兩人沉默了許久之后,回
答我說:
“你正在試圖理解某種不可能被你的理性思維所理解的東西,”他說,“這樣所導(dǎo)致的
結(jié)果必然是失敗。你必須先清空你的大腦,只有那時,你才能開始領(lǐng)悟《編碼藏經(jīng)》。
”
接著,師父開始慢慢地向我闡釋那本《編碼藏經(jīng)》里復(fù)雜的邏輯。當(dāng)我聆聽他那溫和的
聲音時,我終于開始覺察到一點光芒的閃爍,這是隱藏在《編碼藏經(jīng)》中輝煌的和永恒
的靈光?!澳切┐髱煂Α己玫某绦蛟O(shè)計慣例與規(guī)則’一無所知,”師父說,他們努力
去理解普遍意義上的計算機思維的內(nèi)部活動,他們還需要什么說明文檔呢?那些程序是
極限的表達(dá)。
然而,即使我慢慢開始有所領(lǐng)會,我還是感覺到自己像一只在琥珀在掙扎的小飛蟲。師
父所講的與我曾學(xué)過的東西截然不同,我的理性思維很難接受。但師父總是耐心地一遍
遍解釋說,我必須不靠理性思維去推理,而要用潛意識來領(lǐng)悟《編碼藏經(jīng)》的內(nèi)涵。
經(jīng)過數(shù)月的指點后,我感到很自信了,便想試試我的第一塊修補程序。為了給師父一個
驚喜,我偷偷地工作。我寫了一段能重新運行幾行語句的補丁,把程序重新進(jìn)行匯編,
并把新程序釋放到生產(chǎn)系統(tǒng)中去。
第二天早上,我來晚了一會兒。讓我感到奇怪的是,開發(fā)中心的主任和從事部總管正在
師父的辦公室里。當(dāng)我走進(jìn)大廳后,從事部總管看見了我就把門關(guān)上了。我聽見了很大
的說話聲,但聽不清說什么。
等到那兩位來訪者離開后,我走進(jìn)師父的辦公室,“什么事?”我問。
“你的修補程序,昨天晚上六點整進(jìn)入了生產(chǎn)系統(tǒng)。它現(xiàn)在已經(jīng)被刪除了?!?“那么?”
“你仍然可以繼續(xù)工作?!睅煾刚f。
最后,我終于明白,所有用我的理性思維去理解《編碼藏經(jīng)》的努力都是徒勞的,這使
我很絕望。師父覺察到了我思想上的這個變化,他開始向我傳授開機。他教給我冥想和
查錯的技巧,他說這些技巧是從計算機時代之初,由技術(shù)支持部一代一代地傳下來的。
我聽著聽著,開始意識到一個關(guān)于我以前的編程體驗的特大事實。在大學(xué)里,我一起認(rèn)
為程序員的工作主要是控制硬件和軟件的活動,編程的最高藝術(shù)境界是,為了完成一項
任務(wù)或達(dá)到一個目標(biāo)而成功地運用高超的編程技巧。但程序維護(hù)是不同于程序開發(fā)的。
要想維護(hù)一個程序,就要把程序看作是一棵漸漸成長的植物,拔苗助長是毫無益處的。
事實上,這樣的行為更容易導(dǎo)致植物的死亡。一個程序必須被小心地滋養(yǎng)。程序員在對
程序進(jìn)行改動之前,必須對每一個邏輯關(guān)系非常熟悉,必須對程序的意圖有很深刻的理
解力。這種理解力不是在一夜之間就可以得來的,需要長時間的積累。
好幾個月以后,我終于能夠給《編碼藏經(jīng)》成功地設(shè)計修補程序了,但設(shè)計之前要經(jīng)過
長時間的冥想,還要把那本程序清單打開著支在我的桌子上。我還發(fā)現(xiàn),如果我工作的
時侯點燃一支香,口中不停在重復(fù)師父教給我的口訣:“Null-So-Stix-Etx-Eot”(AS
CII碼表中頭五個字節(jié)NUL、SOH、STX、ETX、EOT的發(fā)音--譯注),我更容易集中注意
力。師父說,那個口訣意味著宇宙的“五原”。
不久我發(fā)現(xiàn)我不再關(guān)心是否能為工作成績而得到獎勵了,在我自身和我所維護(hù)的程序之
間也看不見任何分離了。我像一個一生都活在陰影里的人一樣,開始理解編程之禪,這
是一種隱于程序員設(shè)計背后的難以言喻和難以形容的力量,就像投射影子的太陽一樣。
從那毫無意義的“自我的存在”中擺脫出來后,我開始發(fā)覺,那些偉大的編程語句過去
對我來說似乎模糊不清,只是因為我還沒有徹悟,無法理解它們。我現(xiàn)在知道了為什么
過去的那些程序員從不為他們的程序提供文檔,因為英語語言的描述本身更讓人迷惑,
而非使人受到啟發(fā)。
一天,我發(fā)現(xiàn)自己正在解決的一個問題涉及到《編碼藏經(jīng)》中最復(fù)雜的部分--錯誤分
析全程。我在對此一無所知的情況下,給出了一個修補程序,它能通過對硬件中斷區(qū)的
內(nèi)容進(jìn)行檢查來測定錯誤的情況,使程序能繼續(xù)正確執(zhí)行。
那天下午,師父第一次走進(jìn)了我的工作間,他把手放在我的肩膀上,眼睛朝下看著我,
“現(xiàn)在該是你出師的時侯了?!彼f。
這些就是我第一次接觸禪式程序設(shè)計的經(jīng)歷。雖然從那以后我被指派參加過很多項目設(shè)
計,但我從未忘記過我的第一位師父給我的教誨。
想象一下我的驚奇--當(dāng)我在《編程之禪》中發(fā)現(xiàn)了如此之多的我?guī)煾阜浅O矏鄣恼Z言
時。我終于看到了那些隱于他那難忘的演說背后的古代傳統(tǒng)。
James先生將那本經(jīng)典的影響深遠(yuǎn)的著作重新發(fā)掘出來,我們大家都欠他一份人情。要不
是他的持之以恒,它可能會永遠(yuǎn)失傳。在本書中,James先生收集了一大堆定期,如異端
的說教、民間故事和詩歌等,它們組成了具有傳奇色彩的“集成教”的教義。正是通過
James先生這樣的學(xué)者的努力,才使得深藏禪機的程序設(shè)計的光芒永世不滅地照耀著后代
的人們。
Charlie(Chuck)Babbage
--
※ 修改:·jj 於 Jun 8 19:03:20 修改本文·[FROM: 10.121.13.175]
※ 來源:·飄渺水云間 Freecity.dhs.org·[FROM: 10.121.13.175]
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -