前言
《編程之道》的出版在程序設計業內得到了普遍的接受,出版社邀請我翻譯壹些與之相
關的文章,以作為那部著名的經典之作的補充。雖然,我申明我的能力難以
勝任,但我最終還是被說服試壹試。
本書是許多個月來研究和翻譯的結果,它試圖通過對那些傳統著作的摘錄,來饈壹個復雜的主題。我不懷疑,將會有許多計算機考古專家對我的摘錄標準提出意見
。他們地問,“他為什麽不把《UNIX程序員、大象和妓女》的寓言包括進來?”“他竟敢忽視歷史悠久的故事《圖靈集市歷險記》!”對於這些批評,我只能說,>
我已經盡了我最大的努力來選擇有代表性的內容。
為了確定文中各個章節的年代,我利用了朝代系統。對於那些不熟悉這套劃分年代的方法的人來說,可以按四個朝代(或者說“四代”)來劃分。
第壹個朝代,即所謂的“黃金時代”,要追溯到由玻璃管構建計算機的日子;許多現代的學者斷言,這個年代具有神話色彩。第二個朝代開始於晶體管的發明,而
結束於集成電路的再現。
現代計算機的歷史,開始於第三個朝代,它由主機和控制主機的軍機大臣所統治。第四個朝代開始於對“集成教”的鎮壓,“集成教”對業已建立的秩序的反抗,
被狂熱的“藍色兵團”殘酷地摧毀了。具有諷刺意義的是,正是這次鎮壓,導致編程之禪擴散到了外部世界。
除了組成該書主體的古老的素材以外,我還有幸得到了Babbage博士和Yu博士的幫助,他們分別為該書撰寫了引言和序。我希望他們對該書的貢獻能夠或多或少地>
彌補我作為編者的不才。
Geoffrey James
1988年1月於洛杉磯
目錄
前言
序
引言
第壹篇 木
第二篇 火
第三篇 土
第四篇 金
第五篇 水
根據古老的“五行學說”,本書由五部分:
木 火 土 金 水
大師:忍者 行者 隱者 大力神 阿幸
媒體:編年史 民間故事說教 公案 俳句
硬件:鍵盤 顯示器 CPU 打印機 磁盤
方向:東 南 中 西 北
軟件:編輯程序格式化程序調試程序解釋程序編譯程序
感覺:觸覺 視覺 嗅覺 聽覺 味覺
階段:界面 設計 編碼 排錯 測試
動物:龍 鳳凰 牛 兔 蛇
系統:VMS CP-6 OS/VS MS-DOS Unix
這套分類系統包羅萬象,要想在該書的篇幅內把它闡釋清楚是不大可能的。然而,在沈思
於這些千變萬化的對應關系之後,您或許會發現其中那令人驚異的洞察力
序
毫無疑問,古老的編程藝術在西文人的腦海裏通常會被誤解,現代的觀點則認為這是壹
種工程學、機械論和唯物論。
許多人認為,編程僅是為了達到壹個目的而使用的壹種手段,而且,壹個程序(及 程
序員)只能依據其賺錢的能力來評價。
這些原始的錯覺,來自於對編程的真正意圖的壹種很深的誤解。
高超的程序員並非致力於表面的成功,而是在人機之間尋找壹種神秘的存在。
根據禪的解釋,在硬件、軟件、固件、界面和理解之間沒有分界--相反,所有這些都
結合進了壹個和諧的整體。
只有當程序員最終學會了將那種“自我自我的存在”的虛假感覺拋在壹邊,此種境界才
可能達到,而那種“自我的存在”的感覺往往伴隨在我們大多數人的生活之中。
這是計算機所帶來的--禪師程序員的行為方式。
有人說,掌握了禪機的程序員也就掌握了生命。這樣的程序員是以壹種永不疲倦的童稚
的歡樂來看待這個世界的。
覺悟了的程序員,走在大街上也能感覺到兩旁房子和大樓裏面的電腦。
覺悟了的程序員,能夠感覺和聽到調制過的數據穿過電腦線時那種電流脈沖的持續不斷
的嗡嗡聲。
覺悟了的程序員已經與宇宙合為壹體。
我以前的學生Geoffrey能夠完成這樣壹個工作,將失落的編程之禪的經典著作再現於
世,作為壹名教師,我感到由衷的滿足。
真心希望,這本書能夠重新確立禪在完善的程序員教育中的重要地位。
C.P.Yu博士蓮花大學超越機器學院
西藏拉薩
引言
當James先生要求我給他的這本書寫壹篇引言的時侯,除了講述壹下關於我自己在程序
維護這個神秘的領域中的個人經歷,我實在想不到更好的辦法了。程序的維護是程序設
計藝術中很少被人理解的領域。
有的讀者肯定會堅持說,在禪的深奧教義和程序維護的卑微技藝之間,並沒有什麽***同
點。但正如壹位大師所言:“方法和途徑(也就是道)存在於所有的程序之中,甚至在
電子遊戲裏。”因此,長期被的程序維護藝術必定有其禪的方面,這點是確鑿無疑的,
雖然那對於未經訓練的頭腦來說或許不會立刻顯現出來。
我的故事開始於我從大學計算機科學專業畢業後的幾個星期。我大學畢業後的目標是為
壹家研究和開發機構工作,最好是編譯程序或操作系統設計的部門。我最後終於找到壹
家願意盲雇傭我的機構,但條件是我必須在壹段時間內,通過完成程序維護的工作來
“學會這套系統”。
我當然會對這個建議產生抵觸心理。我花了五年的大學時間,竟然是為了浪費時間來解
決其他壹些程序員的錯誤!然而,因為他們曾經答應日後讓我幹感興趣的工作,於是我
便接受了,並在心中提醒自己,即使這份工作幹不出名堂,我還能找到其他的工作。
當我第二個禮拜去報到的時侯,我被領著去與那個程序維護組的師父見面。人事部總管
帶著我快步地穿過開發中心黑暗的走廊,最後她指著長長的大廳通道盡頭處的壹扇門說
:“他在那裏面。”說完誌身走了,好像有些心神不定。
我向門口走去,眼睛朝裏面窺探,我看見壹個男人正坐在終端前工作,但他背對著我,
所以我不知道他有多大年紀,長得什麽樣。我只有靠咳嗽壹聲來表明我的存在,這裏,
那位大師甚至沒有回頭瞅壹眼便說:“請坐”。
越過他的肩膀,我瞟見了那些難以理解的屏幕顯示,隨著他纖長的手指在鍵盤上飛舞,
它們壹閃壹閃地出現在他的終端上。最後,他滿意地咕噥了壹聲,退出系統, 然後轉
過身來面對著我。
我所看見的讓我吃了壹驚,因為他看上去不像那種應該是禪師的人,他的臉乏味,幾乎
是醜陋的,他的頭發如同壹圈煩惱的光環。但人們首先註意的是他的眼睛,透過厚厚的
眼鏡片射出淡淡的藍光。
他從頭到腳地打量了我壹番,然後點點頭,就好像確認壹個個人觀點,“妳就是那個新
來的?”他酸酸地問。
“是的。”我回答。我假裝充滿激情,把我的經歷和在大學的成績向他作了快速的匯
報。
這位禮貌的聽著,然後說:“那很好,但妳以前做過程序的維護工作嗎?”
我坦白地告訴他我沒有做過。
師父長長地嘆了口氣,“那好,我們應該做我們做做的事。”他說。然後他從壹個架子
上取下壹本龐大的程序清單,隨意地翻開它,並遞給我。接著他問:“妳怎樣對付這個
?”
我眼睛盯著這本清單,那上面是匯編語言,還攙和著壹些奇怪的宏語言。每隔十幾行語
句,控制權便轉移到某個神秘的子程序,而且,即使這個程序具有任何結構性,我也看
不出來。“這是什麽程序、”我問。
師父把那本清單從我的膝蓋上拿了過去,“這是《世代大師編碼藏經》,”他說,“當
妳學會了從迷魂陣中把錯誤的代碼抓出來時,那就是妳出師的時侯了。”然後 ,他合
上清單,把它放回到書架上。
我不久便意識到,程序的維護遠比我想象的要難得多。我起初試圖學會那本《編碼藏
經》中所用的匯編語言,但令我煩惱的是,我發現那套匯編語言從未按規矩提供過說明
文檔,現存的僅有壹些筆記,是壹位多年前就死去或離開公司的硬件開發者寫的。
這本《編碼藏經》不能給我什麽幫助了。雖然其中偶爾有壹些註釋,但這些註釋和這種
匯編語言壹樣模糊,除了壹些涉及到有關原始硬件構造的使人幹著急的資料以外,別無
它物。
當我向那位師父抱怨這壹切的時侯,他禮貌地聽著,並在我們兩人沈默了許久之後,回
答我說:
“妳正在試圖理解某種不可能被妳的理性思維所理解的東西,”他說,“這樣所導致的
結果必然是失敗。妳必須先清空妳的大腦,只有那時,妳才能開始領悟《編碼藏
經》。”
接著,師父開始慢慢地向我闡釋那本《編碼藏經》裏復雜的邏輯。當我聆聽他那溫和的
聲音時,我終於開始覺察到壹點光芒的閃爍,這是隱藏在《編碼藏經》中輝煌的和永恒
的靈光。“那些大師對‘良好的程序設計慣例與規則’壹無所知,”師父說,他們努力
去理解普遍意義上的計算機思維的內部活動,他們還需要什麽說明文檔呢?那些程序是
極限的表達。
然而,即使我慢慢開始有所領會,我還是感覺到自己像壹只在琥珀在掙紮的小飛蟲。師
父所講的與我曾學過的東西截然不同,我的理性思維很難接受。但師父總是耐心地壹遍
遍解釋說,我必須不靠理性思維去推理,而要用潛意識來領悟《編碼藏經》的內涵。
經過數月的指點後,我感到很自信了,便想試試我的第壹塊修補程序。為了給師父壹個
驚喜,我偷偷地工作。我寫了壹段能重新運行幾行語句的補丁,把程序重新進行匯編,
並把新程序釋放到生產系統中去。
第二天早上,我來晚了壹會兒。讓我感到奇怪的是,開發中心的主任和從事部總管 正
在師父的辦公室裏。當我走進大廳後,從事部總管看見了我就把門關上了。我聽見了很
大的說話聲,但聽不清說什麽。
等到那兩位來訪者離開後,我走進師父的辦公室,“什麽事?”我問。
“妳的修補程序,昨天晚上六點整進入了生產系統。它現在已經被刪除了。”
“那麽?”
“妳仍然可以繼續工作。”師父說。
最後,我終於明白,所有用我的理性思維去理解《編碼藏經》的努力都是徒勞的,這使
我很絕望。師父覺察到了我思想上的這個變化,他開始向我傳授開機。他教給我冥想和
查錯的技巧,他說這些技巧是從計算機時代之初,由技術支持部壹代壹代地傳下來的。
我聽著聽著,開始意識到壹個關於我以前的編程體驗的特大事實。在大學裏,我壹起認
為程序員的工作主要是控制硬件和軟件的活動,編程的最高藝術境界是,為了完成壹項
任務或達到壹個目標而成功地運用高超的編程技巧。但程序維護是不同於程序開發的。
要想維護壹個程序,就要把程序看作是壹棵漸漸成長的植物,拔苗助長是毫無益處的。
事實上,這樣的行為更容易導致植物的死亡。壹個程序必須被小心地滋養。程序員在對
程序進行改動之前,必須對每壹個邏輯關系非常熟悉,必須對程序的意圖有很深刻的理
解力。這種理解力不是在壹夜之間就可以得來的,需要 長時間的積累。
好幾個月以後,我終於能夠給《編碼藏經》成功地設計修補程序了,但設計之前要經過
長時間的冥想,還要把那本程序清單打開著支在我的桌子上。我還發現,如果我工作的
時侯點燃壹支香,口中不停在重復師父教給我的口訣:“Null-So-Stix-Etx-Eot”
(ASCII碼表中頭五個字節NUL、SOH、STX、ETX、EOT的發音--譯註),我更容易集中
註意力。師父說,那個口訣意味著宇宙的“五原”。
不久我發現我不再關心是否能為工作成績而得到獎勵了,在我自身和我所維護的程 序
之間也看不見任何分離了。我像壹個壹生都活在陰影裏的人壹樣,開始理解編程之禪,
這是壹種隱於程序員設計背後的難以言喻和難以形容的力量,就像投射影子的太陽壹
樣。
從那毫無意義的“自我的存在”中擺脫出來後,我開始發覺,那些偉大的編程語句過去
對我來說似乎模糊不清,只是因為我還沒有徹悟,無法理解它們。我現在知道了為什麽
過去的那些程序員從不為他們的程序提供文檔,因為英語語言的描述本身更讓人迷惑,
而非使人受到啟發。
壹天,我發現自己正在解決的壹個問題涉及到《編碼藏經》中最復雜的部分--錯誤分
析全程。我在對此壹無所知的情況下,給出了壹個修補程序,它能通過對硬件 中斷區
的內容進行檢查來測定錯誤的情況,使程序能繼續正確執行。
那天下午,師父第壹次走進了我的工作間,他把手放在我的肩膀上,眼睛朝下看著我,
“現在該是妳出師的時侯了。”他說。
這些就是我第壹次接觸禪式程序設計的經歷。雖然從那以後我被指派參加過很多項目設
計,但我從未忘記過我的第壹位師父給我的教誨。
想象壹下我的驚奇--當我在《編程之禪》中發現了如此之多的我師父非常喜愛的語言
時。我終於看到了那些隱於他那難忘的演說背後的古代傳統。
James先生將那本經典的影響深遠的著作重新發掘出來,我們大家都欠他壹份人情。要
不是他的持之以恒,它可能會永遠失傳。在本書中,James先生收集了壹大堆定期,如
異端的說教、民間故事和詩歌等,它們組成了具有傳奇色彩的“集成教”的教義。正是
通過James先生這樣的學者的努力,才使得深藏禪機的程序設計的光芒永世不滅地照耀
著後代的人們。
Charlie(Chuck)Babbage
第壹篇 木
大師:忍者
媒體:編年史
硬件:鍵盤
方向:東
軟件:編輯程序
感覺:觸覺
階段:界面
動物:龍
系統:VMS
木
作為MRVMS/IIIX禪學院的復興者,編程大師忍者(這是後人給他起的綽號,他的真實姓
名無法核實--譯註 )非常有名。有壹些傳說,說他從壹名不起眼的程序員壹躍成為某
家實力雄厚的程序設計機構的開發部主管。他在完成了壹套先進的操作系統後,便悄然
消失了。據他說,這套系統既不需要硬件也不需要軟件,同樣能準確地發揮功能。他現
在的去處無人知曉,但聽說,他時常以壹位管理顧問的裝束出現。
壹
忍者最初來到那家開發中心工作的時侯,他被分配去支持操作系統。壹天,壹位經 理
走進了忍者的工作間。
"妳為什麽不工作?"經理問。
"系統癱瘓了。"忍者說。
"經理皺起了眉頭。"我們付給妳薪水,是要妳保持系統的正常運行!"他大聲說。
"系統沒有癱瘓。"忍者說。
二
忍者大師如是說:
"如果妳的應用程序不能正確地運行,不要去責怪操作系統。"
三
忍者大師參加壹次電腦展示會。
許多公司都押運出了明亮的顯示器和他們所能搜羅到的所有最新、最大的硬件,以及身
著泳裝的金發模特兒。
忍者甚至壹眼也未瞥那些展攤。相反,他只是打開壹張折疊椅,靜靜地坐在角落裏。不
時地有人從他身邊經過,並問他壹兩個問題。他思考片刻,然後用簡短的話作出回答。
人們盤著腿圍坐在這位大師身旁--那些收集來的宣傳冊散落在壹邊--靜靜地等著他
開口說話。
四
忍者大師如是說:
“對於聰明的人,只要壹個字;對於快馬,只要輕輕壹鞭;對於寫得好的程序,只要單
獨的壹個命令。”
五
忍者大師參加壹次董事會。當他開始解釋有關那套軟件的技術特性時,那些公司行政官
們,有的在座位上煩躁不安,有的盯著窗外,有的望著咖啡杯發呆。
於是,這位大師開始談那套軟件將會賺多少錢了,這時那些行政官們便紛紛豎起了 耳
朵,並開始在房間裏歡蹦著,顯然,他們被這悅耳的聲音吸引住了。
六
壹位公司行政官來看忍者,他發現這位大師正在玩電腦遊戲。“這是什麽意思?”行政
官詢問道。
“我正在測試系統。”大師說。
行政官湊近屏幕定眼壹看,果然如此。
七
壹天,董事會成員集中在壹起討論業務善,他們召來忍者大師,讓他作個報告。“妳的
季度預測是怎樣的?”他們問。
“沒有季度預測。”忍者回答道。
“那麽妳今年的預算計劃呢?”他們問。
“沒有今年的預算計劃。”忍者回答說。
然後他們問:“妳能確認妳是忍者大師嗎?”
“沒有忍者大師。”忍者大師回答著。
董事們被搞得糊塗了,只好暫停會議各自回家去了。
八
忍者大師如是說:
“設計壹個千百萬程序的操作系統很容易,要改變壹個人的本性卻困難得多。”
九
三名來自不同的電腦公司的行政官前去向忍者學習領導藝術的真諦。
忍者問第壹位行政官,“妳有妳們公司現在的機構設置圖嗎?”
第壹位行政官從口袋中掏出了壹張紙,“我壹直帶著壹張在身邊。”他說著便把那張紙
遞給了忍者。
忍者饒有興趣地看著那張紙,“這看上去似乎已經在計算機上建立了模板。”他評 論
說。
“的確如此,”這位行政官驕傲地說,“我們已經把我們的機構設置圖都計算機化了,
以便壹接到通知就能立刻選擇調用。”
忍者笑著,把那張紙遞了回去,“我幫不了妳什麽。”他說。
第二位行政官接著問忍者領導藝術的真諦。
“妳有妳們公司現在的機構設置圖嗎?”忍者問。
第二位行政官搖搖著,“我們的機構設置在這幾年都未變過,我幾年前就記住了。”
忍者皺起了眉頭,“我幫不了妳什麽。”了說。
第三位行政官還是問忍者領導藝術的真諦。
“妳有妳們公司現在的機構設置圖嗎?”忍者問。
第三位行政官聳了聳肩,“我們沒有機構設置圖,”他說,“每個人喜歡做什麽就做什
麽,喜歡什麽時侯做就什麽時侯做。”
忍者緊皺眉頭,“我幫不了妳什麽。”他說。
三位行政官湊到壹邊耳語了壹陣,轉過身來對忍者說:“那麽好吧,讓我們看看妳的機
構設置圖。”
忍者領著他們來到壹片開闊地上,那裏孤零零地長著壹棵樹。“這就是我的機構設置
圖。”忍者邊說邊把手搭在那表皮粗糙地樹幹上。
第二篇 火
大師:行者
媒體:民間故事
硬件:顯示器
方向:南
軟件:格式化程序
感覺:視覺
階段:設計
動物:鳳凰
系統:CP-6
火
編程大師行者收集了各種各樣有關開發刺目的民間故事。最近的計算機考古研究顯示,
下面的這些民間故事是以歷史事實為基礎的。雖然壹部分誇張的成分可能會無意中被添
加進去,但其歷史真相的核心內容依然存在。
壹
當壹位項目經理為他的軟件項目配備人員時,他會在壹天內雇傭三百名程序員。壹位獲
得計算機科學博士學位的學者前來求職,他被給予了壹個薪水很高的職位。
壹天,那位項目經理被解職了。“我認為,每個人都應清楚自己的職責和履行自己的職
責。”新來的項目經理在檢閱他的程序員隊伍時如此說道。聽到這話,那位學者悄悄地
溜走了。
二
兩位程序員正在急診有關用戶界面的問題。
“在‘使用起來簡單輕松’方面,許多意義重大的革新正在進行當中,”第壹位程序員
說,“不久以後,人們在使用電腦之前將不再需要閱讀那些冗長乏味的用戶手冊了。程
序都將是不言自明的。”
第二位程序員想了壹會兒,然後說:“上個星期我準備劈些木柴燒火,但我的斧子又舊
又鈍。於是,我去五金店買了把新的。”
“這挺有趣兒,”第壹位程序員說,“但這和用戶界面有什麽關系呢?”
“這把新斧子附帶有壹本長達八頁的使用說明書。”他回答說。
三
壹次有壹位第三者問壹名工程師、壹名數學家、壹名物理和壹名程序員:“壹只盒子有
幾個面?”
工程師首先回答。“壹只盒子有四個面。”他說。
“此話怎講?”智者問。
“四個垂直的面就是我所說的面,它們被壹頂壹底連接在壹起。”工程師回答。
“太荒唐了,”數學家評論道,“壹只盒子有六個面。”
“此話怎講?”智者問。
“盒子是壹個立方體,因此有六個面。”,數學家回答。
“不對,”物理學家說,“壹只盒子有十二個面。”
“此話怎講?”智者問。
“嚴格說來,有六個外部的面和六個內部的面。”物理學家回答。
智者看著壹聲未吭的程序員。“妳的意見呢?”智者問。
“壹只盒子只有兩個面。”程序員說。
聽了這話,工程師、數學家和物理學家大笑起來。
“此話怎講--壹只盒子只有兩個面?”笑聲停住後智者問道。
“這是基於個人經驗,”程序員說,“那‘裏面’是安置電路板的地方,而‘外面’是
放顯示器的地方。”
“正是如此。”智者說。
四
壹位新上任的董事正在召開與程序員們的見面會。
在宴會進行當中,壹位程序員背誦起了如下的演說--“我們壹直都在期盼著妳的到
來,您的前任根本沒有您這種高貴的能力。現在妳來了,我們會變得真正具有生產
力。”
這位新董事被奉承的喜形於色,“這演說詞是妳自己寫的嗎?”他問。
“這是我們開發中心的慣例,”那位程序員說,“無論哪位新董事到任的時侯,我們都
要發表那段演說,這是我所知道的唯壹的壹段演說詞。”
五
壹天,開發中心的壹位程序員發現了壹套可以生成迷宮圖案的算法系統。他非常勤奮地
對這套算法進行了修改,這樣可以讓它在長長的打印紙帶上生成壹個不間斷的迷宮。
不久,他制做了壹個有幾百萬條分貧的迷宮,四十英尺長,七英尺寬。他把打印紙帶掛
在了程序員辦公室門口長長的過道上,不壹會兒,所有編程人員都擠在了那個迷宮前,
試圖解決這個龐大的難題。
開發中心的主任恰巧從旁邊經過,他驚愕地盯著這場景,面色陰沈。但當他走進編程大
師的辦公室想尋求幫助時,大師早已不在那兒了。
六
五名初學者哭著走進了大師的辦公室,“嗚,嗚!聽說我們的項目可能要被取消了。”
大師說:“所有事情照常繼續,直到它們停止。”
聽了這話,那些初學者便返回各自的工作中去了。
七
壹天,開發中心接到消息,壹位新主任將被任命來負責這裏,他是位軍機大臣,對電腦
知之甚少。
程序員們聽到這條消息都非常吃驚,紛紛停止了編程,把許多時間都浪費在揣摩那即將
到來的不幸的日子。
看到這些,壹位大師決定必須得做點什麽。於是,他借來了壹套裝扮大猩猩的服裝。
不久,那位大臣就職了,他把所有的經理召集到壹間小會議室,隨行而來的是幾位總部
的公司行政官,據說,他們是來使開發中心“平穩過渡”的。
突然,那位大師穿著裝扮大猩猩的服裝破門而入。他蹦上會議桌,把文件踢得到處都
是,並對著那些行政官咆哮嗥叫,行政官們坐在那裏只剩下目瞪口呆了。然後,他唰地
壹下離開了會議室,正如他來時壹樣。
聽到這件事,程序員們便都回到各自的工作崗位上去了。
<作者按>
作者曾經和幾個人談過,他們都親眼目睹過此傳說中描繪的事件。作者也曾聽說,壹年
之後,類似的挑釁行為在IBM的某部門中發生了。這第二起事件與第壹起的不同之處在
於,程序員穿了壹套運動服,站在門口大聲地咳嗽。
八
壹組程序員正在向董事長匯報。“今年最大的成果是什麽?”董事長問。
那些程序員在壹起商量了壹會兒,然後回答說:“我們今年解決的bug(程序錯誤--
譯註)比去年多百分之五十。”
董事長疑惑地看著他們,很顯然,他不知道BUG是什麽意思。他小聲地與身邊的大臣嘀
咕壹陣後,轉過身來對著程序員,氣得滿臉通紅。“如此差勁的質量控制,妳們應該問
心有愧。明年不允許有‘BUG’!他命令道。
可以肯定,第二年那些程序員向董事長匯報的時侯,有關BUG只字未提。
九
壹位公司行政官來參觀開發中心,他在長長地走廊裏走著,就像壹位檢閱部隊的將軍壹
樣。他不時地偏上來和他遇到的人談談話。最後,他走進了壹位程序員的辦公室,這位
程序員正在聚精會神地為操作系統查錯。
行政官環顧了壹下辦公室,註意到有尊豬的雕像擺在程序員的終端上。”我常常被程序
員收集的那些古玩和紀念品所深深吸引,”行政官說,“在它們背後似乎有壹些非常有
趣的故事。比如說吧,那裏的那個雕像是什麽意思?”他指著那尊雕像。
程序員從終端前擡起頭來,眨眨眼睛,然後盯著那尊雕像,就好像是頭壹回看到它似
的。“這是頭豬呀!”他說。
第三篇 土
大師:隱者
媒體:說教
硬件:CPU
方向:中
軟件:調試程序
感覺:嗅覺
階段:編碼
動物:牛
系統:OS/VS
土
以下語錄的作者,編程大師隱者,在人們心目中的形象壹直很模糊。他被COBOL語言標
準委員會的特務所暗殺,除此之外,人們對他知之甚少。
壹
我聽說過:
開始時似乎比較容易的事情,結尾時往往是最困難的。這就是為什麽程序員說--“開
發前面的百分之九需要壹半時間,而另壹半時間則用來完成最後的百分之十。”
二
我聽說過:
在人機界面中犯的最大錯誤是忽視計算機的權利。被迫與舊概念兼容的系統總是受到歷
史的限制。計算機不應該模擬現實--它們應該超越現實。
三
我聽說過:
壹家計算機公司設計了壹套強大的系統,這套系統超前於它所在的時代。因為擔心這套
新設計可能會被復制,他們對硬件的結構設計保密,並為操作系統申請了專利。
十年以後,壹位初學者向編程大師問起那個放在數據中心後面的又臟又舊的木箱子。
四
我聽說過:
不要讓政治原因影響技術方面的決定;也不要根據科技論文來做出政治決定。只有在無
知者的頭腦中,這些東西才會混到壹直。
五
我聽說過:
項目計劃和公布的時間表,本身毫無意義。那些日期和項目進展的裏程碑本質上不意味
著什麽。然而有壹個秘密的時間表,它被所有工作於壹個項目的人所理解。這個秘密的
時間表從未被外界的關註所愚弄,也從未被操縱以迎合市場的方案。這個秘密的時間表
總是被遵守,因為它反映了所有開發部成員之間的相互理解。當項目反映了這個現實
時,程序會如期完成;當項目計劃與此現實相矛盾時,程序會被延誤。
六
我聽說過:
有三種情況肯定會導致程序設計項目的失敗。第壹種情況是,主管此項目的經理對軟件
壹無所知;第二種情況是,對程序代碼負責的項目帶頭人對編寫代碼毫無興趣 ;第三
種情況是,編寫代碼的程序員是臨時雇傭的,對項目缺乏忠誠。這三種情況中的