English

编程之道

2006-02-15 来源:中华读书报 作者:Geoffrey James著 郭海、郭涛译 我有话说

第一篇 静寂的空宇

编程大师如是说:“当你有本事夺走我手中的这块水晶石时,就是你出师的时候了。”

在静寂的空宇里,一种神奇的物质形成并诞生了。它立

刻便静止了,独自守候着,毫无动静,然而又处于永恒的运动之中。它是所有程序的源头,我不知道它的名字,所以我将称它为编程之道。

如果此道是完美的,那么操作系统就是完美的;如果操作系统是完美的,那么编译程序就是完美的;如果编译程序是完美的,那么应用程序就是完美的。

编程之道流逝远去,又乘着晨风而归。

此道产生了机器语言,机器语言又产生汇编语言。汇编语言产生了编译程序,如今有了上万种的语言。每一种语言都有其各自的卑微用途。每一种语言都表达出软件的阴和阳。每一种语言都在此道之中有其一席之地。

但是,应尽量避免用COBOL语言编写程序。

宇宙之初有道,道产生了空间和时间。空间和时间便是编程设计之阴阳。

第二篇 古代的大师

编程大师如是说:“倘若三天不编程,生活将变得毫无意义。”

计算机科学巨擎图灵曾经梦到他是一台机器。当他醒来时,他惊叹道:

“我不知道──我是梦到了自己是台机器的图灵,还是一台梦到了自己是图灵的机器?”

一家大电脑公司的一名程序员参加了一次软件研讨会。他回来后向经理汇报说:“为其他公司工作的那些程序员都是些什么样的人啊?他们行为拙劣,不顾及自己的仪表。他们的头发又长又乱,衣服又皱又旧。他们闯进我们的会客组,还在我演讲时发出粗鲁的喧闹。”

经理说:“我本不应该让你去参加这个会议,那些程序员是生活在物质世界之外的。他们认为生活是荒唐的,只是一种意外的巧合。他们来去自如。他们只为他们的程序而活着,无忧无虑地活着。为什么要用社会习俗来约束他们呢?

他们活在此道之中。”

第三篇 设计

编程大师如是说:“当程序被测试时,再修改设计方案就太迟了。”

曾经有位程序员被派到IBM的军机大臣手下工作。军机大臣问程序员:“设计一个财务软件包,和设计一个操作系统,哪一个更容易?”

“操作系统。”程序员回答说。

军机大臣立刻发出一种不信任的惊叹,“与一个复杂的操作系统相比,一个财务软件包简直是小巫见大巫。”他说。

“并非如此,”程序员说,“在设计一个财务软件包时,编程人员是作为一个中介者在观念各异的人们之间起作用的:这个软件必须如何操作,它的报表必须是个什么形式,它必须如何与税法一致,等等。相反,一个操作系统则不为其外观所限制,当设计一个操作系统时,编程人员只要在机器与人的思维之间寻找一种最简单的和谐就可以了。这就是为什么操作系统更容易设计的原因。”

军机大臣点点头,笑了。“说来也是。但要想检测和纠正其中的错误,哪个更容易呢?”

程序员没有回答。

一位经理到编程大师那里,交给他一份有关一个新应用程序的需求说明。经理问编程大师:“如果我分配五个程序员给你干,你需要多久能设计好这个系统?”

“那将花费一年的时间。”大师立刻回答。

“但我们马上就需要这个系统,甚至要求更快!如果我分配十个程序员给你,你需要多长时间?”

大师皱了皱眉头,“那样的话,需要两年。”

“如果我分配一百个程序员给你怎么样?”

大师耸了耸肩膀,“那么这项设计将永远无法完成。”他说。

第四篇 编码

编程大师如是说:“一个写得完美的程序是其自身的天堂,而一个写得糟糕的程序则是其自身的地狱。”

一个程序应当是轻盈的、灵活的,它的子程序就像一串珍珠一样连接着。它的精神和意图应该贯穿始终。在程序中,内容既不应太多,也不应太少;既不该有不需要的循环结构,也不该有冗余的变量;既不缺乏结构性,又不过分僵化。

一个程序应当遵循“最少惊讶原则”。这条原则是什么呢?简单地说,就是指一个程序对用户的指令所做出的反应,应该总是使用户最小程度地惊讶。

第五篇 维护

编程大师如是说:“即使一个程序只有三行长,总有一天它也不得不需要维护。”

一次一位初学编程者被指派编写一个简单的财务软件包。这位初学者大张旗鼓地工作了许多天。但当他的师父检查这套程序时,发现其中包含有一个屏幕编辑器,一套通用图表程序,一个人工智能界面,然而却没有任何财务方面的东西。

当师父问及此事时,初学者显得愤愤不平。“不要这样没有耐心嘛,”他说,“我最后加些财务的素材进去就是了。”

第六篇 管理

编程大师如是说:“让程序员多而经理少──然后生产效率就会高。”

一位经理走过来对他的程序员们说:“关于你们的上班时间:你们要早上九点钟到,下午五点钟下班。”听了这话,所有的程序员都很气愤,其中有几位要当场辞职。

于是,经理只好又说:“好吧,那样的话,你们可以自己安排上班时间,只要你们能按时完成项目。”程序员们满意了。以后,他们中午来到办公室,一直工作到第二天凌晨两三点钟。

第八篇 硬件和软件

编程大师如是说:“没有风,草儿静止不动;没有软件,硬件则无所为用。”

曾经有一个程序员,擅长在微电脑上编程,“瞧,我在这里过得多好呀,”他对另一位来访的程序员说,这位程序员是在大型主机上工作的,“我有自己的操作系统和文件存储设备,我不必和其他任何人分享我的资源。这里的软件自相一致,很容易使用。你为何不辞去现在的工作,加入到我这里来呢?”

于是,主机程序员开始向他的这位朋友描绘他的系统:“主机就像一位陷入沉思的圣人一样,端坐在数据中心。它的磁盘驱动器首尾相连,如同机器的海洋。这里的软件既像钻石一样能多面反射光芒,又像原始丛林一样复杂难测。这里的程序,各具特色,它们像湍急的河流穿过系统。这就是我乐于此处的原因。”

微电脑程序员听到这里,陷入了沉默。但这两位程序员至死都保持着友谊。

第九篇 尾声

编程大师如是说:“现在该是你出师的时候了。”

(摘自《编程之道》,[美]Geoffrey James著,郭海、郭涛译,电子工业出版社,预计2006年3月出版)

手机光明网

光明网版权所有

光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

光明网版权所有