第三篇 设计
编程大师如是说:
“当程序被测试时,再修改设计方案就太迟了。”
3.1
曾经有个人去参加一次电脑展示会。每天当他进展馆时,都对门卫说:“我是一个大盗,我偷盗的本领是出了名的。事先警告你,这次展示会也在劫难逃。”
这番话让门卫坐立不安,因为里面有价值娄百万美元的电脑设备,所以他紧紧地盯住这个人。但这个人只是从一个展摊逛到另一个展摊,嘴里轻轻地哼着小曲。
当这个人出门时,门卫把他拉到一边,搜查他的衣服,但一无所获。
第二天,这个人又来了,并对着门卫嚣张地嚷着:“我昨天满载而归,但今天的收获会更大。”于是,门卫盯他盯的更紧了,但仍一无所获。
在展示会的最后一天,门卫再也抑制不住自已的好奇心了。“大盗先生,”门卫说,“我被你搞糊涂了,实在想不明白。请告诉我,你究竟在偷什么?”
这个人笑了。“我在偷想法”他说。
3.2
曾经有位编程大师,喜欢编写非结构化的程序。一位初学者试图模仿他,也开始编写非结构化的程序。当这位徒弟请师父评价他的进展时,师父批评了他的做法。他说:“对一位编程高手适合的,对初学者来说并不一定适合。在超越结构化之前,你必须先领悟道。”
3.3
曾经有们员被派到IBM的军机大臣手下工作。军机大臣问程序员:“设计一个财务软件包,和设计一个操作系统,哪一个更容易?”
“操作系统。”程序员回答说。
军机大臣立刻发出一种不信任的惊叹,“与一个复杂的操作系统相比,一个财务软件包简直就是小巫见大巫。”他说。
“并非如此,”程序员说,“在设计一个财务软件包时,编程人员是作为一个中介者在观念各异的人们之间起作用的:这个软件必须如何操作,它的报表必须是什么形式,它必须如何与税法一致,等等。相反,一个操作系统则不为其外观所限制。当设计一个操作系统时,编程人员只要在机器与人的思维之间寻找一种最简单的和谐就可以了。这就是为什么操作系统更容易设计。”
军机大臣点点头,笑了。“说来也是,但要想检测和纠正其中的错误,哪个更容易呢?”
程序员没有回答。
3.4
一位经理到编程大师那里,交给他一份有关一个新应用程序的需求说明。经理问编程大师:“如果我分配五个程序员给你,你需要多久能设计好这个系统?”
“那将花费一年的时间。”大师立刻回答。
“但我们马上就需要这个系统,甚至要求更快!如果我分配十个程序员给你,你需要多长时间?”
大师皱了皱眉头,“那样的话,需要两年。”
“如果我分配一百个程序员给你怎么样?”
大师耸了耸肩膀,“那么这项设计将永远无法完成。”他说。
《待续》