Design
Book Three
Thus spake the master programmer:
编程大师如是说:
"When program is being tested, it is too late to make design changes."
“程序被测试时再去改变它的设计已经太晚了。”
3.1
There once was a man who went to a computer trade show. Each day as he entered, the man told the guard at the door:
曾经有一个人参加计算机展览,每天他进门时都对门卫说:
"I am a great thief, renowned for my feats of shoplifting. Be forewarned, for this trade show shall not escape unplundered."
“先警告你,我是偷盗高手,我入室偷盗的本领闻名遐迩。这次展览会也再劫难逃。”
This speech disturbed the guard greatly, because there were millions of dollars of computer equipment inside, so he watched the man carefully. But the man merely wandered from booth to booth, humming quietly to himself.
警卫因此大动干戈,因为里面有价值百万的计算机设备,所以他牢牢盯紧了这个人,但是这个人只是从一个摊位逛到另一个摊位,一边平静地喃喃自语。
When the man left, the guard took him aside and searched his clothes, but nothing was to be found.
当这个人离开时,警卫搜了他的身,但是什么也没有发现。
On the next day of the trade show, the man returned and chided the guard saying: "I escaped with a vast booty yesterday, but today will be even better." So the guard watched him ever more closely, but to no avail.
展览会的第二天,这个人又对警卫说:“昨天我满载而归,但是今天我会收获更大。”所以警卫更加小心地盯紧他,但是这样做完全于事无补。
On the final day of the trade show, the guard could restrain his curiosity no longer. "Sir Thief," he said, "I am so perplexed, I cannot live in peace. Please enlighten me. What is it that you are stealing?"
展览会的最后一天,警卫再也不能忍住他的好奇心了。“小偷先生,”他说,“ 你说我惊慌不安,请告诉我,你到底偷了什么?”。
The man smiled. "I am stealing ideas," he said.
这个人笑笑说:“我在偷想法。”
3.2
There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying: "What is appropriate for the master is not appropriate for the novice. You must understand the Tao before transcending structure."
有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。当他让大师看他的进步时,大师批评了他的非结构化程序:“ 对一位编程大师合适的东西未必对一个初学者同样合适,在超越结构化之前,你必须理解编程之道。”
3.3
There was once a programmer who was attached to the court of the warlord of Wu. The warlord asked the programmer: "Which is easier to design: an accounting package or an operating system?"
###有人问一位程序员,“一个财务软件和一个操作系统哪个更容易设计?”
"An operating system," replied the programmer.
“是操作系统”,这位程序员回答说。
The warlord uttered an exclamation of disbelief. "Surely an accounting package is trivial next to the complexity of an operating system," he said.
此人大惑不解。他说:“显然一个财务软件比起操作系统来说其复杂性是微不足道的”。
"Not so," said the programmer, "when designing an accounting package, the programmer operates as a mediator between people having different ideas: how it must operate, how its reports must appear, and how it must conform to the tax laws. By contrast, an operating system is not limited my outside appearances. When designing an operating system, the programmer seeks the simplest harmony between machine and ideas. This is why an operating system is easier to design."
程序员说:“不,设计财务软件时,一个程序员必须成为持不同意见的用户与计算机的一个中介,他必须了解用户的操作习惯,报表要是什么形式,如何遵循税法。相反,一个操作系统完全与这些外部的东西无关。设计操作系统,程序员只需要达到自己的设想与机器之间的简单的和谐。这就是为什么操作系统反而比财务软件更容易设计。”
The warlord of Wu nodded and smiled. "That is all good and well, but which is easier to debug?"
这些人笑着说。“不错,但是哪一个更容易调试呢?”
The programmer made no reply.
程序员没有回答。
3.4
A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: "How long will it take to design this system if I assign five programmers to it?"
一个项目经理带给编程大师一个项目的需求,然后问大师:“如果我给你5个程序员,要多少时间设计这个项目?”
"It will take one year," said the master promptly.
“一年”,大师说。
"But we need this system immediately or even sooner! How long will it take it I assign ten programmers to it?"
“但是我们等不了那么长时间,越快越好,如果10程序员呢?”
The master programmer frowned. "In that case, it will take two years."
大师皱了一下眉头说:“那就要花2年”。
"And what if I assign a hundred programmers to it?"
“那,100年程序员呢?”
The master programmer shrugged. "Then the design will never be completed," he said.
大师耸了耸肩说:“那这个项目就永远完不成了。”
原文地址 linux/docs/linux-3274.htm#book1" target=_blank>http://www.lslnet.com/linux/docs/linux-3274.htm#book1
分享到:
相关推荐
《卓越编程之道 - 卷2》是一本深受程序员喜爱的编程指南,主要聚焦于底层编程思维和高级语言的编写。作者Randall Hyde以其独特的视角和深入浅出的讲解,为读者揭示了编程世界的奥秘。这本书是《Write Great Code》...
编程之道,编程之道-pdf
总之,《编程之道-IOS设计模式解析》是一本全面且实用的iOS设计模式指南,它不仅能提升开发者对设计模式的理解,也能帮助他们更好地应对iOS开发中的各种挑战。通过深入学习和实践,开发者可以提升自己的编程技巧,...
Rust编程之道-随书编程.zip,看清楚哦,是随书编程的内容
Objective-C编程之道主要聚焦于如何在iOS开发中运用设计模式,设计模式是软件工程中的一种最佳实践,通过解决常见问题来提升...因此,这份"Objective-C编程之道-设计模式源码"是一个宝贵的参考资料,值得深入研究。
3. **语言的诞生**:编程语言是“编程之道”的具体体现。最初的编程语言是机器语言,随后产生了汇编语言,最终发展成今天的各种高级语言。每种语言都有其独特的作用和价值,共同构成了“编程之道”的多样性。 4. **...
《编程之道-C#篇》是一本深入探讨C#编程语言的书籍,旨在帮助读者掌握C#的核心概念和技术,提升编程技能。习题答案的提供,为读者提供了自我检验和学习巩固的机会,使得理论与实践相结合,更好地理解并应用所学知识...
3. 控制台应用与图形界面:洪恩编程之道的案例可能包括控制台应用程序和Windows Forms应用程序。掌握Form设计、控件添加和事件处理是图形界面编程的重点。 4. 面向对象编程:封装、继承和多态是OOP的三大特性,在VB...
要学习编程是要有很大恒心和毅力的,首先你要明确自己的目标,想好自己编程是为了干什么。如果你学习仅仅只是一时想编出QUAKE和成为比尔盖次的冲动,那么我劝你还是应该不要开始学习,因为这样的目标很难支持你日后...
《编程之道-C#篇》是一本深入探讨C#编程语言的资源集合,包含了丰富的源代码示例。这个压缩包文件提供了学习和理解C#编程语言的宝贵材料,适合初学者和有一定经验的开发者。让我们一起来深入挖掘其中所涵盖的知识点...
《编程之道》是一本深入探讨编程艺术和技术的书籍,它涵盖了编程实践的各个方面,旨在帮助读者提升编程技能,理解编程的本质,并掌握编程之道。书名中的“道”寓意着编程不仅仅是技术的堆砌,更是思想的体现和智慧的...
S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程安装包SP9S7-200编程...
《编程之道》是一本深入探讨计算机编程艺术与实践的书籍,其核心理念在于教导读者如何以更为高效、优雅的方式编写代码。"编程之道"这一标签,暗示了书中的内容不仅涵盖了基础的编程语法和概念,更注重编程思维的培养...
编程之道ASP数据库编程入门
《安全编程之道》是一本专注于C和C++编程语言的安全编程指南,旨在帮助开发者提升代码质量和安全性,防止软件漏洞导致的潜在威胁。本书基于“program secure”理念,深入探讨了如何在开发过程中实施最佳安全实践。 ...
《VC++编程之道》是一本深入探讨Visual C++编程技术的专业书籍,其配书光盘包含了大量的源代码示例,旨在帮助读者更好地理解和实践书中所讲解的编程概念和技术。光盘中的"MR"可能代表“Master Resource”,暗示了这...
最全最新版 Objective-C编程之道IOS设计模式解析.pdf
这篇博客“对话框高级编程——公共控件之一(旋转按钮、滑块和进度条)”主要探讨了三种常用的公共控件:旋转按钮(Spin Button)、滑块(Slider)和进度条(Progress Bar),并提供了源码示例。这些控件在很多应用...