logo资料库

编程之道 杰弗雷﹒詹姆斯.pdf

第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
资料共56页,剩余部分请下载后查看
Geoffrey James InfoBooks, 1987 InfoBooks, 1988 InfoBooks, 1989 译者序 如今程序设计类的图书可谓是层出不穷,其中绝大部分是以教程、使用手册和编程技巧为主, 它们都是用来处理一些技术性的问题的。 然而,怎样领悟程序设计的内涵和精髓呢?程序员编程时是一种怎样的思维方式?他们的工 作、生活是个什么样子?他们在想些什么?作为一名经理如何同他们相处并处分发挥他们的 积极性?涉及这些方面的书却寥寥无几。但没有并不代表不重要--随着我国程序设计事业 从起步到发展,这些方面的内容显得越来越重要,我们越来越希望了解它们。 美国是个软件工业和程序设计水平处于世界依靠地位的国家,我们是不是可以从那里借鉴点 什么呢?您将要读到的《编程之道》一书便是出息美国的一位善于进行哲学性思考、有十多 年工作经验的程序设计师--Geoffrey James 之手。 在本书中,作者以一种幽默、辛辣的眼光审视着发生在程序设计室里的各种各样的小故事, 并运用东方的哲学体系进行深层次的思考和理解,即进行“道”式的思考和理解。简单的故 事蕴含深奥的道理,是本书的极大特色。 本书不仅语言优美、比喻生动,而且在结构上颇具匠心。 本书在美国出息时分为三册--《编程之道》《编程之禅》和《计算机寓言--信息时代的 启示》,经与作者协商,决定将中译本汇总为一本以《编程之道的》的书名出版。 1、《编程之道》The Tao of Programming 本书的构思新颖而奇特。作者作为一名计算机考古的业余爱好者,偶然发现了在程序设计业 内传说的《编程之道》。这其中的内容,每个程序员都想知道,但谁也没有见到过,就有点 像金庸的小说《射雕英雄传》中的《九阴真经》。于是作者便将它“翻译”成此书,公之于 众。全书共分为九篇: 第一篇 静寂的空宇
第二篇 古代的大师 第三篇 设计 第四篇 编码 第五篇 维护 第六篇 管理 第七篇 公司里的学问 第八篇 硬件和软件 第九篇 尾声 2、《编程之禅》The Zen of Programming 在本书中,作者借用中国传统文化中的五行--“金、木、水、火、土”来代表与计算机相 关的概念,并以此将多个富有祖宗色彩的故事有机地组织起来。全书分为五篇: 第一篇 木 第二篇 火 第三篇 土 第四篇 金 第五篇 水 3、《计算机寓言--信息时代的启示》 Computer Parables: Enlightenment in the Information Age 作者以四季--“春、夏、秋、冬”来组织本书的结构。全书共分为四篇: 第一篇 秋--虚幻与真实 第二篇 冬--战争与死亡 第三篇 春--真爱与新生 第四篇 夏--启示 我们将此书献给那些爱笑也爱思考的程序设计者,以及那些同程序设计者打交道的管理人 员,当然他们也爱笑爱思考。
《编程之道》 目录 前言 第一篇 静寂的空宇 第二篇 古代的大师 第三篇 设计 第四篇 编码 第五篇 维护 第六篇 管理 第七篇 公司里的学问 第八篇 硬件和软件 第九篇 尾声 第一篇 静寂的空宇 编程大师如是说: “当你有本事夺走我手中的这块水晶石时,就是你出师的时候了。” 1.1 在静寂的空宇里,一种神奇的物质形成并诞生了。它立刻便静止了,独自守候着,毫无动静, 然而又处于永恒的运动之中。它是所有程序的源头,我不知道它的名字,所以我将称它为编 程之道。 如果此道是完美的,那些操作系统就是完美的,如果操作系统是完美的,那么编译程序就是 完美的,如果编译程序是完美的,那么应用程序就是完美的。用户满意之至--和谐便应运 而生。 编程之道流逝远去,又乘着晨风而归。 1.2 此道产生了机器语言,机器语言又产生了汇编语言, 汇编语言产生了编译程序,如今有了上万种的语言。 每一种语言都有其各自的卑微用途。每一种语言都表达出软件的阴和阳。每一种语言都在此 道之中有其一席之地。
但是,应尽量避免用 COBOL 语言编写程序。 1.3 宇宙之初有道,道产生了空间和时间。空间和时间便是程序设计之阴阳。 不能领悟此道的编程者总是耗尽他们所要编写的程序的时间和空间;而领悟了此道的编程者 却总有足够的时间和空间来达到他们的目标。 除此之外,难道还有其它的情形吗? 1.4 精明的编程者听说了此道,并遵循它;平庸的编程者听说了此道,并寻觅它;愚蠢的编程者 听说了此道,却嘲笑它。 要不是因为有嘲笑,道也就不复存在了。 最高的声音最难被听见。前进也是一种倒退。大器晚成。即使是一个完美的程序也仍然会有 隐患。 道深藏不露,难于理解。 第二篇 古代的大师 编程大师如是说: “倘若三天不编程,生活将变得毫无意义。” 2.1 老一辈的程序员是神秘的、深奥的。我们没法揣摩他们的想法,我们所能做的只是描述一下 他们的表象。 他们是清醒的,就像一只游过水面的狐狸;他们是警惕的,就像一位战场上的将军;他们是 友善的,就像一位招待客人的女主人;他们是简单的,就像未经刻凿的木头;他们还是难以 琢磨的,就像黑暗的洞穴中漆黑的池水。 谁能说出他们心中的秘密? 答案只存在于道中。
2.2 计算机科学巨擘图灵曾经梦到他是一台机器。当他醒来时,他惊叹道: “我不知道--我是梦到了自己是台机器的图灵,还是一台梦到了自己是图灵的机器?” 2.3 一家大电脑公司的一名程序员参加了一次软件研讨会。他回来后向经理汇报说:“为其它公 司工作的那些程序员都是些什么的人啊?他们行为拙劣,不顾及自己的仪表。他们的头发又 长又乱,衣服又皱又旧。他们闯进我们的会客组,还在我演讲时发生粗鲁的喧闹。” 经理说:“我本不应该让你去参加这个会议。那些程序员是生活在物质世界之外的。他们认 为生活是荒唐的,一种意外的巧合。他们来去自如。他们只为他们的程序而活着,无忧无虑 地活着。为什么要用社会习俗来约束他们呢? 他们活在此道之中。” 2.4 一个礼堂者问大师:“有位程序员,从不构思、编写文档或测试他的程序,然而所有知道他 的人都认为他是世界上最棒的程序员。这是为什么呢?” 大师回答说:“那个人掌握了道。他不需要事先进行构思,当系统崩溃时,他不会因此而闷 闷不乐,而是心平气和地接受整个事实。他还从编写程序说明文档的需要之中超脱了出来, 不在意是否有人看他的编码。他也不需要进行测试。他的每个程序都完美无缺。宁静而优雅, 程序的用途也显而易见。的的确确,他已经进入了道的神奇境界。” 第三篇 设计 编程大师如是说: “当程序被测试时,再修改设计方案就太迟了。” 3.1 曾经有个人去参加一次电脑展示会,每天当他进入展馆时,都对门卫说: “我是个大盗,我偷盗的本领是出了名的。事先警告你,这次展示会也在劫难逃。” 这番话让门卫坐立不安,因为里面有价值数百万美元的电脑设备,所以他紧紧地盯住这个人。 但这个人只是从一个展摊逛到另一个展摊,嘴里轻轻地哼着小曲。
当这个人出门时,门卫把他拉到一边,搜查他的衣服,但一无所获。 第二天,这个人又来了,并对着门卫嚣张地嚷着:“昨天我满载而归,但今天的收获会更大。” 于是,门卫盯他盯得更紧了,但仍一无所获。 在展示会的最后一天,门卫再也抑制不住自己的好奇心了。“大盗先生,”门卫说,“我被你 搞糊涂了,实在想不明白。请告诉我,你究竟在偷什么?” 这个人笑了。“我在偷想法。”他说。 3.2 曾经有位编程大师,喜欢编写非结构化的编程。一位初学者试图模仿他,也开始编写非结构 化的程序。当这位徒弟请师父评价他的进展时,师父批评了他的做法。他说:“对一位编程 高手适合的,对初学者来说并不一定适合。在超越结构化之前,你必须先领悟道。” 3.3 曾经有位程序员被派到 IBM 的军机大臣手下工作。军机大臣问程序员:“设计一个财务软件 包,和设计一个操作系统,哪一个更容易?” “操作系统。”程序员回答说。 军机大臣立刻发生一种不信任的惊叹,“与一个复杂的操作系统,一个财务软件包简直是小 巫见大巫。”他说。 “并非如此,”程序员说,“在设计一个财务软件包时,编程人员是作为一个中介者在观念各 异的人们之间起作用的:这个软件必须如何操作,它的报表必须是什么形式,它必须如何与 税法一致,等等,一个操作系统则不为其外观所限制。当设计一个操作系统时,编程人员只 要在机器与人的思维之间寻找一种最简单的和谐就可以了。这就是为什么操作系统更容易设 计。” 军机大臣点点头,笑了。“说来也是。但要想检测和纠正其中的错误,哪个更容易呢?” 程序员没有回答。 3.4 一位经理到编程大师那里,交给他一份有关一个新应用程序的需求说明。经理问编程大师: “如果我分配五个程序员给你,你需要多久能设计好这个系统?” “那将花费一年的时间。”大师立刻回答。 “但我们马上就需要这个系统,甚至要求更快!如果我分配十个程序员给你,你需要多长时 间?”
大师皱了皱眉头,“那样的话,需要两年。” “如果我分配一百个程序员给你怎么样?” 大师耸了耸肩膀,“那么这项设计将永远无法完成。”他说 第四篇 编码 编程大师如是说: “一个写得完美的程序是其自身的天堂,而一个写得糟糕的程序则是其自身的地狱。” 4.1 一个程序应当是轻盈的、灵活的,它的子程序就像一串珍珠一样连接着。它的精神和意图应 该贯穿始终。在程序中,内容既不应太多,也不应太少;既不应该有不需要的循环结构,也 不该有冗余的变量;既不缺乏结构性,又不过分僵化。 一个程序,无论多么复杂,都应该以一个整体的方式运行。程序应以其内在的逻辑为指引, 而非外在形态。 如果一个程序不能达到这些要求,它将处于一种杂乱无章的混淆不清的状态。唯一的方法就 是重写这个程序。 4.2 一位初学者问大师:“我有个程序,时灵时不灵。我一直都遵循着编程的规则,结果却整个 儿搞糊涂了。这是什么原因呢?” 大师回答说:“因为你没有领悟道,所以你迷惑不解。只有傻瓜才会指望从人类身上看到理 性的行为,你又能指望一台人类制造的机器怎么样呢?计算机模仿的是决定论,只有道才是 尽善尽美。 编程用的那些条条框框式的规则仅仅是昙花一现,只有道才是永恒的。因此,在你受到道的 启发之前,你必须沉思于道。” “但是我怎样才能知道我已经受到了启发了呢?”初学者问。 “当你的程序运行无误时。”大师回答说。 4.3
一位大师正在向他的一名初学编程的弟子解释道的真谛。“此道体现在所有的软件当中-- 不管它看上去多么无足轻重。”大师说着。 “此道体现在手掌计算器中吗?”初学者问。 “是的。” “此道在电子游戏中吗?”初学者继续问。 “此道甚至也体现在电子游戏之中。”大师说。 “那么此道也体现在个人电脑的 DOS 系统之中吗?” 大师咳嗽一声,并稍稍挪动了一下位置。“今天的课就到这里吧。”他说。 4.4 一位项目经理手下的一名程序员正编写软件。他的手指在键盘上飞舞着,在程序的编译过程 中没有出现任何错误信息。程序运行起来就像一阵和风。 “太好了!”经理高兴地大叫了起来,“你的技艺简直是完美无缺。” “技艺?”程序员说着便从他的终端机前转过身来,“我遵循的是道--所有的技艺远不能 及!当我刚开始编程时,我眼前看见的是整个问题乱成一团。三年之后,我再也看不见这种 一团糟的情形了。相反,我用了各种各样的子程序。但现在,我什么也看不见了。我的整个 身心存在于一种无形的虚空里,我的知觉是空荡荡的。 我的精神随其本能而动,不无原则计划就能自由地工作。总而言之,是我的程序自己写出了 自己。诚然,有时会有一些难题。我看见那些难题向我走来,于是我放慢了速度,默默地注 视着他们。然后我更改了一行编码,那些问题就烟消云散了。然后我完成程序的编译。我静 静地坐着,让工作的欢心情舒畅遍布我的全身。我闭上双眼,歇息片刻,然后退出系统。” 经理说,“希望我的所有的程序员都这么聪明!” 第五篇 维护 编程大师如是说: “即使一个程序只有三行长,总有一天它也不得不需要维护。” 5.1 一记扇经常开启的门的绞链不需要润滑油。
分享到:
收藏