Office中国论坛/Access中国论坛
标题:
编程之道——给困惑者的启示
[打印本页]
作者:
marco2
时间:
2003-9-25 18:12
标题:
编程之道——给困惑者的启示
转贴者话:曾经无数次看到有人在谈论现在什么才是最好的开发工作,我学XX语言(工具)是否还有前途,我要多久才会学通这门语言!相信看过此贴之后,你会对编程有一个新的认识!
第一篇静寂的空宇
编程大师如是说:
“当你有本事夺走我手中的这块水晶石时,就是你出师的时侯了。”
1.1
在静寂的空宇里,一种神奇的物质形成并诞生了。它立刻便静止
了,独自守侯着,豪无动静,然而又处于永恒的运动之中。它是所有
程序的源头,我不知道它的名字,所以我将称它为编程之道。
如果此道是完美的,那些操作系统就是完美的,如果操作系统是
完美的,那么编译程序就是完美的,如果编译程序是完美的,那么应
用程序就是完美的。用户满意之至--和谐便应运而生。
编程之道流逝远去,又乘着晨风而归。
1.2
此道产生了机器语言,机器语言又产生了汇编语言,
汇编语言产生了编译程序,如今有了上万种的语言。
每一种语言都有其各自的卑微用途。每一种语言都表达出软件的
阴和阳。每一种语言都在此道之中有其一席之地。
但是,应尽量避免用COBOL 语言编写程序。
1.3
宇宙之初有道,道产生了空间和时间。空间和时间便是程序设计
之阴阳。
不能领悟此道的编程者总是耗尽他们所要编写的程序的时间和空
间;而领悟了此道的编程者却总有足够的时间和空间来达到他们的目
标。
除此之外,难道还有其它的情形吗?
1.4
精明的编程者听说了此道,并遵循它;平庸的编程者听说了此道,
并寻觅它;愚蠢的编程者听说了此道,却嘲笑它。
要不是因为有嘲笑,道也就不复存在了。
最高的声音最难被听见。前进也是一种倒退。大器晚成。即使是
一个完美的程序也仍然会有隐患。
道深藏不露,难于理解。
第二篇古代的大师
编程大师如是说:
“倘若三天不编程,生活将变得毫无意义。”
2.1
老一辈的程序员是神秘的、深奥的。我们没法揣摩他们的想法,
我们所能做的只是描述一下他们的表象。
他们是清醒的,就像一只游过水面的狐狸;他们是警惕的,就像
一位战场上的将军;他们是友善的,就像一位招待客人的女主人;他
们是简单的,就像未经刻凿的木头;他们还是难以琢磨的,就像黑暗
的洞穴中漆黑的池水。
谁能说出他们心中的秘密?
答案只存在于道中。
2.2
计算机科学巨擘图灵曾经梦到他是一台机器。当他醒来时,他惊
叹道:
“我不知道--我是梦到了自己是台机器的图灵,还是一台梦到
了自己是图灵的机器?”
2.3
一家大电脑公司的一名程序员参加了一次软件研讨会。他回来后
向经理汇报说:“为其它公司工作的那些程序员都是些什么的人啊?
他们行为拙劣,不顾及自己的仪表。他们的头发又长又乱,衣服又皱
又旧。他们闯进我们的会客组,还在我演讲时发生粗鲁的喧闹。”
经理说:“我本不应该让你去参加这个会议。那些程序员是生活
在物质世界之外的。他们认为生活是荒唐的,一种意外的巧合。他们
来去自如。他们只为他们的程序而活着,无忧无虑地活着。为什么要
用社会习俗来约束他们呢?
他们活在此道之中。“
2.4
一个礼堂者问大师:“有位程序员,从不构思、编写文档或测试
他的程序,然而所有知道他的人都认为他是世界上最棒的程序员。这
是为什么呢?”
大师回答说:“那个人掌握了道。他不需要事先进行构思,当系
统崩溃时,他不会因此而闷闷不乐,而是心平气和地接受整个事实。
他还从编写程序说明文档的需要之中超脱了出来,不在意是否有人看
他的编码。他也不需要进行测试。他的每个程序都完美无缺。宁静而
优雅,程序的用途也显而易见。
的的确确,他已经进入了道的神奇境界。“
第三篇设计
编程大师如是说:
“当程序被测试时,再修改设计方案就太迟了。”
3.1
曾经有个人去参加一次电脑展示会,每天当他进入展馆时,都对
门卫说:
“我是个大盗,我偷盗的本领是出了名的。事先警告你,这次展
示会也在劫难逃。”
这番话让门卫坐立不安,因为里面有价值数百万美元的电脑设备,
所以他紧紧地盯住这个人。但这个人只是从一个展摊逛到另一个展摊,
嘴里轻轻地哼着小曲。
当这个人出门时,门卫把他拉到一边,搜查他的衣服,但一无所
获。
第二天,这个人又来了,并对着门卫嚣张地嚷着:“昨天我满载
而归,但今天的收获会更大。”于是,门卫盯他盯得更紧了,但仍一
无所获。
在展示会的最后一天,门卫再也抑制不住自己的好奇心了。“大
盗先生,”门卫说,“我被你搞糊涂了,实在想不明白。请告诉我,
你究竟在偷什么?”
这个人笑了。“我在偷想法。”他说。
3.2
曾经有位编程大师,喜欢编写非结构化的编程。一位初学者试图
作者:
marco2
时间:
2003-9-25 18:14
《编程之道》的出版在程序设计业内得到了普遍的接受,出版社邀请我翻译一些与
之相关的文章,以作为那部著名的经典之作的补充。虽然,我申明我的能力难以胜
任,但我最终还是被说服试一试。
本书是许多个月来研究和翻译的结果,它试图通过对那些传统著作的摘录,来馐一
个复杂的主题。我不怀疑,将会有许多计算机考古专家对我的摘录标准提出意见。
他们地问,“他为什么不把《UNIX程序员、大象和妓女》的寓言包括进来?”“他
竟敢忽视历史悠久的故事《图灵集市历险记》!”对于这些批评,我只能说,我已
经尽了我最大的努力来选择有代表性的内容。
为了确定文中各个章节的年代,我利用了朝代系统。对于那些不熟悉这套划分年代
的方法的人来说,可以按四个朝代(或者说“四代”)来划分。
第一个朝代,即所谓的“黄金时代”,要追溯到由玻璃管构建计算机的日子;许多
现代的学者断言,这个年代具有神话色彩。第二个朝代开始于晶体管的发明,而结
束于集成电路的再现。
现代计算机的历史,开始于第三个朝代,它由主机和控制主机的军机大臣所统治。
第四个朝代开始于对“集成教”的镇压,“集成教”对业已建立的秩序的反抗,被
狂热的“蓝色兵团”残酷地摧毁了。具有讽刺意义的是,正是这次镇压,导致编程
之禅扩散到了外部世界。
除了组成该书主体的古老的素材以外,我还有幸得到了Babbage博士和Yu博士的帮
助,他们分别为该书撰写了引言和序。我希望他们对该书的贡献能够或多或少地弥
补我作为编者的不才。
Geoffrey James
1988年1月于洛杉矶
目录
前言
序
引言
第一篇 木
第二篇 火
第三篇 土
第四篇 金
第五篇 水
根据古老的“五行学说”,本书由五部分 :
木 火 土 金 水
大师:忍者 行者 隐者 大力神 阿幸
媒体:编年史 民间故事说教 公案 俳句
硬件:键盘 显示器 CPU 打印机 磁盘
方向:东 南 中 西 北
软件:编辑程序格式化程序调试程序解释程序编译程序
感觉:触觉 视觉 嗅觉 听觉 味觉
阶段:界面 设计 编码 排错 测试
动物:龙 凤凰 牛 兔 蛇
系统:VMS CP-6 OS/VS MS-DOS Unix
这套分类系统包罗万象,要想在该书的篇幅内把它阐释清楚是不大可能的。然而,
在沉思于这些千变万化的对应关系之后,您或许会发现其中那令人惊异的洞察力。
序
毫无疑问,古老的编程艺术在西文人的脑海里通常会被误解,现代的观点则认为这
是一种工程学、机械论和唯物论。
许多人认为,编程仅是为了达到一个目的而使用的一种手段,而且,一个程序(及
程序员)只能依据其赚钱的能力来评价。
这些原始的错觉,来自于对编程的真正意图的一种很深的误解。
高超的程序员并非致力于表面的成功,而是在人机之间寻找一种神秘的存在。
根据禅的解释,在硬件、软件、固件、界面和理解之间没有分界--相反,所有这
些都结合进了一个和谐的整体。
只有当程序员最终学会了将那种“自我自我的存在”的虚假感觉抛在一边,此种境
界才可能达到,而那种“自我的存在”的感觉往往伴随在我们大多数人的生活之中
。
这是计算机所带来的--禅师程序员的行为方式。
有人说,掌握了禅机的程序员也就掌握了生命。这样的程序员是以一种永不疲倦的
童稚的欢乐来看待这个世界的。
觉悟了的程序员,走在大街上也能感觉到两旁房子和大楼里面的电脑。
觉悟了的程序员,能够感觉和听到调制过的数据穿过电脑线时那种电流脉冲的持续
不断的嗡嗡声。
觉悟了的程序员已经与宇宙合为一体。
我以前的学生Geoffrey能够完成这样一个工作,将失落的编程之禅的经典著作再现
于世,作为一名教师,我感到由衷的满足。
真心希望,这本书能够重新确立禅在完善的程序员教育中的重要地位。
C.P.Yu博士
莲花大学超越机器学院
西藏拉萨
引言
当James先生要求我给他的这本书写一篇引言的时侯,除了讲述一下关于我自己在
程序维护这个神秘的领域中的个人经历,我实在想不到更好的办法了。程序的维护
是程序设计艺术中很少被人理解的领域。
有的读者肯定会坚持说,在禅的深奥教义和程序维护的卑微技艺之间,并没有什么
共同点。但正如一位大师所言:“方法和途径(也就是道)存在于所有的程序之中
,甚至在电子游戏里。”因此,长期被的程序维护艺术必定有其禅的方面,这点是
确凿无疑的,虽然那对于未经训练的头脑来说或许不会立刻显现出来。
我的故事开始于我从大学计算机科学专业毕业后的几个星期。我大学毕业后的目标
是为一家研究和开发机构工作,最好是编译程序或操作系统设计的部门。我最后终
于找到一家愿意盲雇佣我的机构,但条件是我必须在一段时间内,通过完成程序维
护的工作来“学会这套系统”。
我当然会对这个建议产生抵触心理。我花了五年的大学时间,竟然是为了浪费时间
来解决其他一些程序员的错误!然而,因为他们曾经答应日后让我干感兴趣的工作
,于是我便接受了,并在心中提醒自
作者:
marco2
时间:
2003-9-25 18:14
第二篇 火
大师:行者
媒体:民间故事
硬件:显示器
方向:南
软件:格式化程序
感觉:视觉
阶段:设计
动物:凤凰
系统:CP-6
火
编程大师行者收集了各种各样有关开发刺目的民间故事。最近的计算机考古研究显
示,下面的这些民间故事是以历史事实为基础的。虽然一部分夸张的成分可能会无
意中被添加进去,但其历史真相的核心内容依然存在。
一
当一位项目经理为他的软件项目配备人员时,他会在一天内雇佣三百名程序员。一
位获得计算机科学博士学位的学者前来求职,他被给予了一个薪水很高的职位。
一天,那位项目经理被解职了。“我认为,每个人都应清楚自己的职责和履行自己
的职责。”新来的项目经理在检阅他的程序员队伍时如此说道。听到这话,那位学
者悄悄地溜走了。
二
两位程序员正在急诊有关用户界面的问题。
“在‘使用起来简单轻松’方面,许多意义重大的革新正在进行当中,”第一位程
序员说,“不久以后,人们在使用电脑之前将不再需要阅读那些冗长乏味的用户手
册了。程序都将是不言自明的。”
第二位程序员想了一会儿,然后说:“上个星期我准备劈些木柴烧火,但我的斧子
又旧又钝。于是,我去五金店买了把新的。”
“这挺有趣儿,”第一位程序员说,“但这和用户界面有什么关系呢?”
“这把新斧子附带有一本长达八页的使用说明书。”他回答说。
三
一次有一位第三者问一名工程师、一名数学家、一名物理和一名程序员:“一只盒
子有几个面?”
工程师首先回答。“一只盒子有四个面。”他说。
“此话怎讲?”智者问。
“四个垂直的面就是我所说的面,它们被一顶一底连接在一起。”工程师回答。
“太荒唐了,”数学家评论道,“一只盒子有六个面。”
“此话怎讲?”智者问。
“盒子是一个立方体,因此有六个面。”,数学家回答。
“不对,”物理学家说,“一只盒子有十二个面。”
“此话怎讲?”智者问。
“严格说来,有六个外部的面和六个内部的面。”物理学家回答。
智者看着一声未吭的程序员。“你的意见呢?”智者问。
“一只盒子只有两个面。”程序员说。
听了这话,工程师、数学家和物理学家大笑起来。
“此话怎讲--一只盒子只有两个面?”笑声停住后智者问道。
“这是基于个人经验,”程序员说,“那‘里面’是安置电路板的地方,而‘外面
’是放显示器的地方。”
“正是如此。”智者说。
四
一位新上任的董事正在召开与程序员们的见面会。
在宴会进行当中,一位程序员背诵起了如下的演说--“我们一直都在期盼着你的
到来,您的前任根本没有您这种高贵的能力。现在你来了,我们会变得真正具有生
产力。”
这位新董事被奉承的喜形于色,“这演说词是你自己写的吗?”他问。
“这是我们开发中心的惯例,”那位程序员说,“无论哪位新董事到任的时侯,我
们都要发表那段演说,这是我所知道的唯一的一段演说词。”
五
一天,开发中心的一位程序员发现了一套可以生成迷宫图案的算法系统。他非常勤
奋地对这套算法进行了修改,这样可以让它在长长的打印纸带上生成一个不间断的
迷宫。
不久,他制做了一个有几百万条分贫的迷宫,四十英尺长,七英尺宽。他把打印纸
带挂在了程序员办公室门口长长的过道上,不一会儿,所有编程人员都挤在了那个
迷宫前,试图解决这个庞大的难题。
开发中心的主任恰巧从旁边经过,他惊愕地盯着这场景,面色阴沉。但当他走进编
程大师的办公室想寻求帮助时,大师早已不在那儿了。
六
五名初学者哭着走进了大师的办公室,“呜,呜!听说我们的项目可能要被取消了
。”
大师说:“所有事情照常继续,直到它们停止。”
听了这话,那些初学者便返回各自的工作中去了。
七
一天,开发中心接到消息,一位新主任将被任命来负责这里,他是位军机大臣,对
电脑知之甚少。
程序员们听到这条消息都非常吃惊,纷纷停止了编程,把许多时间都浪费在揣摩那
即将到来的不幸的日子。
看到这些,一位大师决定必须得做点什么。于是,他借来了一套装扮大猩猩的服装
。
不久,那位大臣就职了,他把所有的经理召集到一间小会议室,随行而来的是几位
总部的公司行政官,据说,他们是来使开发中心“平稳过渡”的。
突然,那位大师穿着装扮大猩猩的服装破门而入。他蹦上会议桌,把文件踢得到处
都是,并对着那些行政官咆哮嗥叫,行政官们坐在那里只剩下目瞪口呆了。然后,
他唰地一下离开了会议室,正如他来时一样。
听到这件事,程序员们便都回到各自的工作岗位上去了。
<作者按>
作者曾经和几个人谈过,他们都亲眼目睹过此传说中描绘的事件。作者也曾听说,
一年之后,类似的挑衅行为在IBM的某部门中发生了。这第二起事件与第一起的不
同之处在于,程序员穿了一套运动服,站在门口大声地咳嗽。
八
一组程序员正在向董事长汇报。“今年最大的成果是什么?”董事长问。
那些程序员在一起商量
作者:
徐阿鹏
时间:
2003-9-25 19:18
很有意思,要慢慢咀嚼!
作者:
esmile
时间:
2003-9-27 17:43
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3