第三篇 設計
編程大師如是說:
“當程序被測試時,再修改設計方案就太遲了。”
3.1
曾經有個人去參加一次電腦展示會。每天當他進展館時,都對門衛說:“我是一個大盜,我偷盜的本領是出了名的。事先警告你,這次展示會也在劫難逃。”
這番話讓門衛坐立不安,因為裡面有價值婁百萬美元的電腦設備,所以他緊緊地盯住這個人。但這個人只是從一個展攤逛到另一個展攤,嘴裡輕輕地哼著小曲。
當這個人出門時,門衛把他拉到一邊,搜查他的衣服,但一無所獲。
第二天,這個人又來了,並對著門衛囂張地嚷著:“我昨天滿載而歸,但今天的收獲會更大。”於是,門衛盯他盯的更緊了,但仍一無所獲。
在展示會的最後一天,門衛再也抑制不住自已的好奇心了。“大盜先生,”門衛說,“我被你搞糊塗了,實在想不明白。請告訴我,你究竟在偷什麼?”
這個人笑了。“我在偷想法”他說。
3.2
曾經有位編程大師,喜歡編寫非結構化的程序。一位初學者試圖模仿他,也開始編寫非結構化的程序。當這位徒弟請師父評價他的進展時,師父批評了他的做法。他說:“對一位編程高手適合的,對初學者來說並不一定適合。在超越結構化之前,你必須先領悟道。”
3.3
曾經有們員被派到IBM的軍機大臣手下工作。軍機大臣問程序員:“設計一個財務軟件包,和設計一個操作系統,哪一個更容易?”
“操作系統。”程序員回答說。
軍機大臣立刻發出一種不信任的驚歎,“與一個復雜的操作系統相比,一個財務軟件包簡直就是小巫見大巫。”他說。
“並非如此,”程序員說,“在設計一個財務軟件包時,編程人員是作為一個中介者在觀念各異的人們之間起作用的:這個軟件必須如何操作,它的報表必須是什麼形式,它必須如何與稅法一致,等等。相反,一個操作系統則不為其外觀所限制。當設計一個操作系統時,編程人員只要在機器與人的思維之間尋找一種最簡單的和諧就可以了。這就是為什麼操作系統更容易設計。”