歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 《編程之禅》(轉載) 金

《編程之禅》(轉載) 金

日期:2017/2/27 12:16:18   编辑:Linux文化

聲明:
本文內容來自《編程之道》一書, 小趙只負責錄入. 所有版權歸該書的出版社。本文由原來的三冊書組成:《編程之道》 《編程之禅》《計算機時代的寓言》


目錄

前言

引言
第一篇 木
第二篇 火
第三篇 土
第四篇 金
第五篇 水

第四篇 金

大師:大力神
媒體:公案
硬件:打印機
方向:西
軟件:解釋程序
感覺:聽覺
階段:排錯
動物:兔
系統:MS-DOS

編程大師大力神試圖在講解中使用公案--禅的一種獨特的教學手段。通常說來,每個公案的含意都很難辨析,並且常常有好肉食的和外在的意思。

一個在大學裡學習了很長時間的初學者來拜訪編程大師。

初學者說:“我已經記住了《計算機編程藝術》的十二卷書中所匯集的算法,我能用LISP、PROLOG、ALGOL、MODULA2和ADA語言編程。

大師禮貌的點點頭。”我很少遇見像你這樣博學的人,”他說,“我想聽聽你關於我寫過的一個程序的意見。”

“我很高興助您一臂之力。”說著,初學者驕傲地挺起了胸脯。

大師走到他的電腦前插入一張軟盤。“首先我得拷貝一下。”他解釋說。

他們坐在那兒,聽著旋轉的驅動器沙沙作響同。突然電腦上顯示出一條信息,“磁盤上沒有空間--Abort,Retry or Ignore?”

大師敲了個“R”進行重試,他們又一次聽著驅動器的聲音,接著那提示又一次出現在屏幕上。大師僅僅再次摁了個“R”,重復著同樣的事情。

最後初學者再也按捺不住了。“磁盤上沒有空間了,”他生氣地說,“他太滿了!”

大師說道:“是你的腦袋太滿了。”

初學者一下子恍然大悟。

大師如是說:“任何一個程序,無論它多麼小,總存在著錯誤。”

初學者不相信大師的話,“如果一個程序小得只執行一個簡單的功能,那麼會怎樣?”他問。

“這樣一個程序將沒有意義,”大師說,“但假設這樣一個程序存在的話,操作系統最後將失效。產生一個錯誤。”

但初學者不滿足。“如果操作系統不失效,那麼會怎樣?”他問。

“沒有不失效的操作系統,”大師說,“但假設這樣一個操作系統存在的話,硬件最後將失效,產生一個錯誤。”

初學者仍不滿足。“如果硬件不失效,那麼會怎樣?”他問。

大師長歎一聲。“沒有不失效的硬件,”他說,“但假設這樣的硬件存在的話,用戶就會想讓這個程序做一件不同的事,這件事也是一個錯誤!”

沒有錯誤的程序是一則謬論,世間難尋。假設存在著一個沒有任何錯誤的程序,那麼這個世界將會不復存在。

象牙塔裡的魔術師前來拜訪編程大師,像往常一樣,帶來了他最新的發明。

編程大師從他的終端前抬起頭來,看見魔術師站在門口,“這次你帶來了什麼呀?”大師問。

“這是我最偉大的發明,”魔術師說著,用車推著一個盒子進了屋,“這是終極桌上印刷系統,有了它,排字機、描圖桌和照相機能做的事我全能做。我已經設計好了,任何熟悉傳統印刷術的人能夠在幾個月內學會。這兒有我制作的樣張,看,它像《古騰保聖經》的首頁。”

大師仔細地看了看樣張,露出一絲微笑。“這部裝置打算用來干什麼?”他問。

“我們將用它來印刷技術說明資料。”魔術師說。

<作者按>

這位魔術師經常出現在禅的民間故事中,作為對立面。這個人物是否真正存在,不得而知。然而有傳說說,這座象牙塔曾被一伙狂熱的信徒控制,這伙人被唆使去干軟件盜版、謀殺以及其它各種各樣的不道德的事情,以報復機器時代的Cray-2超級計算機的統治。

這座象牙塔在第三個朝代末被包圍並幾乎毀掉,但由於政府的援助而幸免於難,並得以重建。

一位初學者走進大師的工作間,看見一台新電腦擺在大師的桌上。

“那台電腦是什麼?”初學者問。

大師把手搭在一個小盒子上,這個小盒子通過一根電纜與那台電腦相連。“看,”大師說,“這部裝置控制著我們在屏幕上看到的東西。”

初學者緊緊地盯著屏幕,但他看到的只是毫無意義的符號。

“這個屏幕模仿的是一張桌子,”大師解釋道,“比如說,屏幕的這裡是文件櫃和垃圾桶,這裡是打字機和計算器。”

“這是一項偉大的發明。”初學者敬畏地低聲說道。

“並不像看上去的那樣偉大。”大師說,他推著初學者的肩膀往後退了幾尺,“你能看見那兩張桌子嗎?”大師問道。

初學者點點頭。“一張在地板上,另一板在屏幕上。”他說。

“是這樣的。那麼,是否有一張桌子上少了什麼東西?”

初學者沉思片刻。“其中一張桌子上沒有電腦。”他說。

大師搖搖著。“任何一張桌子上都沒有電腦。”

一位初學者問大師:“程序設計的真正含義是什麼?”

大師回答說:“餓的時侯就吃;困的時侯就睡;當時機恰當時,就進行程序設計。”

編程大師走進初學者的工作間,聽見了一陣騷亂。

“這些該死的電腦!”初學者氣憤地叫嚷著,“要想讓它們做點事,我得使用三個甚至四個編輯程序。有時侯我被搞得糊裡糊塗,結果刪除了整個文件,這簡直難以忍受!”

大師盯著初學者。“那麼你打算怎樣補救呢?”他問。

初學者想了一會兒。“我將設計一個新的編輯程序,”他說,“一個將取代所有這些程序的程序。”

突然,大師敲了一下初學者的腦袋。這一擊並不重,但初學者卻很驚訝。“你這是什麼意思?”初學者驚問道。

“我根本不想學另一個編輯程序。”大師說。

初學者一下子就恍然大悟了。

一位初學者問大師,“每當我在一套新的系統上編程時,必須學會一種新的語言。為什麼沒有一套標准呢?”

大師轉身而去。“唯一真正的標准是死亡。”他說

一位初學者問大師:“在ADA編譯程序中有沒有佛性?”

大師回答說:“你曾注意到在八進制、十六進制和十進制中字符NUL都是000嗎?”

初學者一下子就恍然大悟了。

名叫狄阿古和古多的兩位程序員正在向大公司的董事長匯報。

當古多站起來發言時,他對那位公司行政官說,“你天生聰明,能夠理解電腦的真正含義。”“瞎扯,”狄阿古說,“你為什麼表揚這個蠢才?他也許是行政官,但他對電腦一無所知。”

行政官對他們倆都給予了獎勵,然後雇了一名顧問來決定他們倆誰對誰錯。


Copyright © Linux教程網 All Rights Reserved