第三篇土
大师:隐者
媒体:说教
硬件:CPU
方向:中
软件:调试程序
感觉:嗅觉
阶段:编码
动物:牛
系统:OS/VS
土
以下语录的作者,编程大师隐者,在人们心目中的形象一直很模糊。他被COBOL语
言标准委员会的特务所暗杀,除此之外,人们对他知之甚少。
一
我听说过:
开始时似乎比较容易的事情,结尾时往往是最困难的。这就是为什么程序员说--
“开发前面的百分之九需要一半时间,而另一半时间则用来完成最后的百分之十。
”
二
我听说过:
在人机界面中犯的最大错误是忽视计算机的权利。被迫与旧概念兼容的系统总是受
到历史的限制。计算机不应该模拟现实--它们应该超越现实。
三
我听说过:
一家计算机公司设计了一套强大的系统,这套系统超前于它所在的时代。因为担心
这套新设计可能会被复制,他们对硬件的结构设计保密,并为操作系统申请了专利
。
十年以后,一位初学者向编程大师问起那个放在数据中心后面的又脏又旧的木箱子
。
四
我听说过:
不要让政治原因影响技术方面的决定;也不要根据科技论文来做出政治决定。只有
在无知者的头脑中,这些东西才会混到一直。
五
我听说过:
项目计划和公布的时间表,本身毫无意义。那些日期和项目进展的里程碑本质上不
意味着什么。然而有一个秘密的时间表,它被所有工作于一个项目的人所理解。这
个秘密的时间表从未被外界的关注所愚弄,也从未被操纵以迎合市场的方案。这个
秘密的时间表总是被遵守,因为它反映了所有开发部成员之间的相互理解。当项目
反映了这个现实时,程序会如期完成;当项目计划与此现实相矛盾时,程序会被延
误。
六
我听说过:
有三种情况肯定会导致程序设计项目的失败。第一种情况是,主管此项目的经理对
软件一无所知;第二种情况是,对程序代码负责的项目带头人对编写代码毫无兴趣
;第三种情况是,编写代码的程序员是临时雇佣的,对项目缺乏忠诚。这三种情况
中的任何一种都会导致项目的失败;三种情况同时出现,就必死无疑了。
七
我听说过:
许多公司行政官乐于看到把他们摆在高高在上,而让他们的下属居于其下的机构设
置图。这些行政官无异于那些玩“山上的国王”游戏的孩子们。机构设置图有时侯
叫做树状结构,但使用那些结构图的行政官们似乎总是忘记,树叶在底下的树是已
经被连根拔起的树,活不了多久。优秀的行政官总是把自己看作是组织的询问,承
受作为领导的重担,因为这才是他发挥作用的最佳途径。
这就是关于编程大师忍者的著名寓言--他没法传授领导艺术的真谛,因为那三位
想当他学生的人太相信他们自己的力量了。当一个组织被出色地领导时,雇员甚至
不知道他们正在被领导。当项目完成时,他们会对自己说:“看看我们通过我们自
己的努力所取得的成绩吧!”
八
我听说过:
一个程序的价值不能由它的宣传册的大小,或出现在大众计算机杂志上的整页广告
的数量来判断。这些噪音越响,程序越不可能有用;真正优秀的程序不需要广告,
用户会口口相伟。
九
我听说过:
有一种循环,这是一种宇宙的节奏。今天一个程序流行,明天是另一个;今天修正
了五百个程序中的错误,明天又将出现五百个新的。要理解生命,就要知道这种节
奏的存在。要理解禅,就要活在这种节奏之外,从日常生活的牵挂之中超脱出来。
只有这样,头脑才会自由。
第四篇金
大师:大力神
媒体:公案
硬件:打印机
方向:西
软件:解释程序
感觉:听觉
阶段:排错
动物:兔
系统:MS-DOS
金
编程大师大力神试图在讲解中使用公案--禅的一种独特的教学手段。通常说来,
每个公案的含意都很难辨析,并且常常有好肉食的和外在的意思。
一
一个在大学里学习了很长时间的初学者来拜访编程大师。
初学者说:“我已经记住了《计算机编程艺术》的十二卷书中所汇集的算法,我能
用LISP、PROLOG、ALGOL、MODULA2和ADA语言编程。
大师礼貌的点点头。”我很少遇见像你这样博学的人,”他说,“我想听听你关于
我写过的一个程序的意见。”
“我很高兴助您一臂之力。”说着,初学者骄傲地挺起了胸脯。
大师走到他的电脑前插入一张软盘。“首先我得拷贝一下。”他解释说。
他们坐在那儿,听着旋转的驱动器沙沙作响同。突然电脑上显示出一条信息,“磁
盘上没有空间--Abort,Retry or Ignore?”
大师敲了个“R”进行重试,他们又一次听着驱动器的声音,接着那提示又一次出
现在屏幕上。大师仅仅再次摁了个“R”,重复着同样的事情。
最后初学者再也按捺不住了。“磁盘上没有空间了,”他生气地说,“他太满了!
”
大师说道:“是你的脑袋太满了。”
初学者一下子恍然大悟。
二
大师如是说:“任何一个程序,无论它多么小,总存在着错误。”
初学者不相信大师的话,“如果一个程序小得只执行一个简单的功能,那么会怎样
?”他问。
“这样一个程序将没有意义,”大师说,“但假设这样一个程序存在的话,操作系
统最后将失效。产生一个错误。”
但初学者不满足。“如果操作系统不失效,那么会怎样?”他问。
“没有不失效的操作系统,”大师说,“但假设这样一个操作系统存在的话,硬件
最后将失效,产生一个错误。”
初学者仍不满足。“如果硬件不失效,那么会怎样?”他问。
大师长叹一声。“没有不失效的硬件,”他说,“但假设这样的硬件存在的话,用
户就会想让这个程序做一件不同的事,这件事也是一个错误!”
没有错误的程序是一则谬论,世间难寻。假设存在着一个没有任何错误的程序,那
么这个世界将会不复存在。
三
象牙塔里的魔术师前来拜访编程大师,像往常一样,带来了他最新的发明。
编程大师从他的终端前抬起头来,看见魔术师站在门口,“这次你带来了什么呀?
”大师问。
“这是我最伟大的发明,”魔术师说着,用车推着一个盒子进了屋,“这是终极桌
上印刷系统,有了它,排字机、描图桌和照相机能做的事我全能做。我已经设计好
了,任何熟悉传统印刷术的人能够在几个月内学会。这儿有我制作的样张,看,它
像《古腾保圣经》的首页。”
大师仔细地看了看样张,露出一丝微笑。“这部装置打算用来干什么?”他问。
“我们将用它来印刷技术说明资料。”魔术师说。
<作者按>
这位魔术师经常出现在禅的民间故事中,作为对立面。这个人物是否真正存在,不
得而知。然而有传说说,这座象牙塔曾被一伙狂热的信徒控制,这伙人被唆使去干
软件盗版、谋杀以及其它各种各样的不道德的事情,以报复机器时代的Cray-2超级
计算机的统治。
这座象牙塔在第三个朝代末被包围并几乎毁掉,但由于政府的援助而幸免于难,并
得以重建。
四
一位初学者走进大师的工作间,看见一台新电脑摆在大师的桌上。
“那台电脑是什么?”初学者问。
大师把手搭在一个小盒子上,这个小盒子通过一根电缆与那台电脑相连。“看,”
大师说,“这部装置控制着我们在屏幕上看到的东西。”
初学者紧紧地盯着屏幕,但他看到的只是毫无意义的符号。
“这个屏幕模仿的是一张桌子,”大师解释道,“比如说,屏幕的这里是文件柜和
垃圾桶,这里是打字机和计算器。”
“这是一项伟大的发明。”初学者敬畏地低声说道。
“并不像看上去的那样伟大。”大师说,他推着初学者的肩膀往后退了几尺,“你
能看见那两张桌子吗?”大师问道。
初学者点点头。“一张在地板上,另一板在屏幕上。”他说。
“是这样的。那么,是否有一张桌子上少了什么东西?”
初学者沉思片刻。“其中一张桌子上没有电脑。”他说。
大师摇摇着。“任何一张桌子上都没有电脑。”
五
一位初学者问大师:“程序设计的真正含义是什么?”
大师回答说:“饿的时侯就吃;困的时侯就睡;当时机恰当时,就进行程序设计。
”
六
编程大师走进初学者的工作间,听见了一阵骚乱。
“这些该死的电脑!”初学者气愤地叫嚷着,“要想让它们做点事,我得使用三个
甚至四个编辑程序。有时侯我被搞得糊里糊涂,结果删除了整个文件,这简直难以
忍受!”
大师盯着初学者。“那么你打算怎样补救呢?”他问。
初学者想了一会儿。“我将设计一个新的编辑程序,”他说,“一个将取代所有这
些程序的程序。”
突然,大师敲了一下初学者的脑袋。这一击并不重,但初学者却很惊讶。“你这是
什么意思?”初学者惊问道。
“我根本不想学另一个编辑程序。”大师说。
初学者一下子就恍然大悟了。
七
一位初学者问大师,“每当我在一套新的系统上编程时,必须学会一种新的语言。
为什么没有一套标准呢?”
大师转身而去。“唯一真正的标准是死亡。”他说
八
一位初学者问大师:“在ADA编译程序中有没有佛性?”
大师回答说:“你曾注意到在八进制、十六进制和十进制中字符NUL都是000吗?”
初学者一下子就恍然大悟了。
九
名叫狄阿古和古多的两位程序员正在向大公司的董事长汇报。
当古多站起来发言时,他对那位公司行政官说,“你天生聪明,能够理解电脑的真
正含义。”“瞎扯,”狄阿古说,“你为什么表扬这个蠢才?他也许是行政官,但
他对电脑一无所知。”
行政官对他们俩都给予了奖励,然后雇了一名顾问来决定他们俩谁对谁错。
第五篇水
大师:阿幸
媒体:俳句
硬件:磁盘
方向:北
软件:编译程序
感觉:味觉
阶段:测试
动物:蛇
系统:Unix
水
尼姑阿幸最初是写俳句的。俳句即短诗,用一套预先好的章节来试图表达一种情感
或一种想法。阿幸的俳句则更多地表达了一名程序设计者的那种孤独的生活:为了
调试而工作到深夜,徒劳无获的测试,看着一段程序编译时的那种简单的喜悦,等
待。所有的程序设计者都有过这些体验,但他们很少提及,即使是在他们之间。
本书这最后一部分,显然是一部大作中的片段。作者不才。未能将这些短诗中的深
奥的意蕴完全翻译出来,以达到和原诗类似的效果,还望读者多多包涵。
一
程序不过是梦,
生于无形无象的禅中,
我们只是那做梦的人。
二
我编程三日,
两耳不闻人声,
只有硬盘在歌唱。
三
编译程序在运行,
像一条湍急的河流,
我静静地等侯。
四
为何要用LISP?
COBOL语言我不懂,
所以我用LISP。
五
编程一整夜,
透过窗户,照到屏幕上,
初升的太阳。
六
硬件和软件,
我们是你们的主人和奴隶,
我们的生活是程序。
七
你能听见吗,
上程序的声音?
答案是NUL。
八
电子邮件说,
项目已取消,
清理文档时,我哭了。
九
计算中心空空荡荡,
静静的只有风扇在嗡鸣。
我走过一排排的CPU,
磁通量刺痛了我的皮肤。
我打开一扇门,又冷又硬,
看见指示灯在控制板上跳动。
一台没有灵魂的机器,人们说,
但它的灵魂是同事们的汗水,
在它里面有我们多年的生命,
失望,友谊,悲伤,欢乐,
算法成功时的狂喜,
和无数个徒劳无获的长夜。
我听见了叹息和欢笑的回声,
在这间黑洞洞的办公室里,
终端机闪耀着光芒,就像星星一样。