程序员修炼之道(英文注释版)
基本信息
- 作者: (美)Andrew Hunt David Thomas
- 丛书名: 图灵程序设计丛书.程序员修炼系列
- 出版社:人民邮电出版社
- ISBN:9787115155665
- 上架时间:2007-11-26
- 出版日期:2007 年12月
- 开本:16开
- 页码:321
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 综合
计算机 > 软件与程序设计 > 综合 > 程序(设计)理论
编辑推荐
熔知识、哲理、幽默与实践于一炉的编程奇书
引导你领悟程序设计的真谛
丰富的难词和背景信息注释
内容简介回到顶部↑
《程序员修炼之道》适合各层次软件开发人员阅读,也适合高等院校计算机专业学生和教师阅读。
目录回到顶部↑
1 a pragmatic philosophy 注重实效的哲学
1. the cat ate my source code 猫把我的代码吃了
2. software entropy 软件熵
3. stone soup and boiled frogs 石头汤与被煮的青蛙
4. good-enough software 恰到好处的软件
5. your knowledge portfolio 知识资产
6. communicate! 交流!
2 a pragmatic approach 注重实效的途径
7. the evils of duplication 重复之罪
8. orthogonality 正交性
9. reversibility 可逆性
10. tracer bullets 曳光弹
11. prototypes and post-it notes 原型与便笺
12. domain languages 领域语言
13. estimating 估算
3 the basic tools 基本工具
14. the power of plain text 纯文本的威力
15. shell games shell之妙
16. power editing 强力编辑
前言回到顶部↑
本书将帮助你成为更为出色的程序员。
无论你是单独的开发者,大型项目团队中的一员,还是同时面对许多客户的咨询师,本书都将帮助你作为个体更好地完成工作。本书不是理论图书——我们专注于实践性的话题,专注于使你凭借自己的经验做出更明智的决策。pragmatic(注重实效)一词来自拉丁语的pragmaticus,即“精于事务”,后者又源自希腊语的 ,意为“to do”。是的,这是一本关于“实践”的书。
编程是一门技艺。用最简单的话来说,编程就是让计算机做你(或你的用户)想要它做的事情。作为程序员,你既是倾听者,又是指导者;既是解释者,又是发号施令者。你努力捕获难以表述的需求,并找到表达它们的方式,让机器能够正确处理;你努力记录你的工作,以便其他人能够理解它;你还努力进行设计,以便其他人能够在此基础上进一步开发;另外,你还努力在项目时钟不停歇的“嘀嗒”声中完成这些工作。你每天都在创造小小的奇迹。
编程是一项艰难的工作。
有许多人要帮助你,工具商吹嘘其产品的神奇效果,方法学专家承诺他们的方法肯定有效。每个人都声称他们的编程语言是最好的,而每一种操作系统都能解决所有问题。
当然,所有这些都不是真的,并不存在简单的答案,也不存在最佳解决方案,无论工具、语言还是操作系统。只有在某些特定情形下更为适用的系统。
这正是注重实效的用武之地。你不应该局限于任何特定的技术,而是应该拥有足够广博的背景和经验,以让你能在特定情况下选择好的解决方案。你的背景源自对计算机科学基本原理的理解,而你的经验来自广泛的实际项目。理论与实践的结合将使你无比强大。
应该调整方法,适应当前的环境。判断影响项目的所有因素的相对重要性,再利用你的经验制定适合的解决方案。随着工作的进展不断这样做。注重实效的程序员不仅完成工作,而且要漂亮地完成。
读者对象
本书的目标读者是有志于提高自己编程效率的程序员。或许你正在为自己没有发挥出真正的潜力而感到灰心;或许你注意到同事们似乎在使用一些工具,使他们比你效率更高;或许你现在的工作使用的是些老技术,你希望知道怎样把新的思想应用于手头的工作。
我们不会假装自己知道所有的(或者大部分)答案,我们的想法也并不适用于所有情形。我们要说的是,如果你遵循我们的方法,将迅速获取经验,生产效率将会提高,并且还能对整个开发过程有更好的理解,最终,你能够编写更好的软件。
注重实效程序员的特征
每一位开发者都是独特的,有自己的强处和弱点、喜好和厌恶。随着时间的流逝,每一位开发者都会营造出自己的个人环境。这个环境会强烈地反映这位程序员的个性,就像其业余爱好、衣着或是发型一样。但是,如果你是一位注重实效的程序员,就会具有许多下列特征:
□早期的采纳者/快速的适应者。你具有技术上的直觉,喜爱试验各种事物。给你一样新东西,你能很快地掌握它,并与其他知识结合起来。你的自信源自经验。
□好奇。你喜欢提问。“那真漂亮啊——你是怎么做的?”“你用那个库时有问题吗?”“我听人说起过BeOS,它是什么东西?”“符号链接是怎样实现的?”你孜孜不倦地收集各种小知识,而每一条小知识都有可能影响到以后的某项决策。
□审慎的思考者。你很少在没有了解事实之前人云亦云,当同事说“因为以前就是这么做的”或者厂商承诺提供全部问题的解决方案时,你就应该在心中打一个大大的问号。
□现实。你会努力理解所面临的每个问题的本质。这种注重现实的态度会使你更好地认识到任务的难度和工作量,认识到困难和艰巨性能够给予你坚持不懈的毅力。
□广博。你会尽力熟悉广泛的技术和环境,并且与各种新发展俱进。虽然现在的工作也许只要求你某方面的专才,但你将总是能够转向新的领域,迎接新的挑战。
我们把最基本的特征留到了最后。所有注重实效的程序员都应具备这些特征。这些特征是如此重要,以至于需要用提示的方式来陈述:
无论你是单独的开发者,大型项目团队中的一员,还是同时面对许多客户的咨询师,本书都将帮助你作为个体更好地完成工作。本书不是理论图书——我们专注于实践性的话题,专注于使你凭借自己的经验做出更明智的决策。pragmatic(注重实效)一词来自拉丁语的pragmaticus,即“精于事务”,后者又源自希腊语的 ,意为“to do”。是的,这是一本关于“实践”的书。
编程是一门技艺。用最简单的话来说,编程就是让计算机做你(或你的用户)想要它做的事情。作为程序员,你既是倾听者,又是指导者;既是解释者,又是发号施令者。你努力捕获难以表述的需求,并找到表达它们的方式,让机器能够正确处理;你努力记录你的工作,以便其他人能够理解它;你还努力进行设计,以便其他人能够在此基础上进一步开发;另外,你还努力在项目时钟不停歇的“嘀嗒”声中完成这些工作。你每天都在创造小小的奇迹。
编程是一项艰难的工作。
有许多人要帮助你,工具商吹嘘其产品的神奇效果,方法学专家承诺他们的方法肯定有效。每个人都声称他们的编程语言是最好的,而每一种操作系统都能解决所有问题。
当然,所有这些都不是真的,并不存在简单的答案,也不存在最佳解决方案,无论工具、语言还是操作系统。只有在某些特定情形下更为适用的系统。
这正是注重实效的用武之地。你不应该局限于任何特定的技术,而是应该拥有足够广博的背景和经验,以让你能在特定情况下选择好的解决方案。你的背景源自对计算机科学基本原理的理解,而你的经验来自广泛的实际项目。理论与实践的结合将使你无比强大。
应该调整方法,适应当前的环境。判断影响项目的所有因素的相对重要性,再利用你的经验制定适合的解决方案。随着工作的进展不断这样做。注重实效的程序员不仅完成工作,而且要漂亮地完成。
读者对象
本书的目标读者是有志于提高自己编程效率的程序员。或许你正在为自己没有发挥出真正的潜力而感到灰心;或许你注意到同事们似乎在使用一些工具,使他们比你效率更高;或许你现在的工作使用的是些老技术,你希望知道怎样把新的思想应用于手头的工作。
我们不会假装自己知道所有的(或者大部分)答案,我们的想法也并不适用于所有情形。我们要说的是,如果你遵循我们的方法,将迅速获取经验,生产效率将会提高,并且还能对整个开发过程有更好的理解,最终,你能够编写更好的软件。
注重实效程序员的特征
每一位开发者都是独特的,有自己的强处和弱点、喜好和厌恶。随着时间的流逝,每一位开发者都会营造出自己的个人环境。这个环境会强烈地反映这位程序员的个性,就像其业余爱好、衣着或是发型一样。但是,如果你是一位注重实效的程序员,就会具有许多下列特征:
□早期的采纳者/快速的适应者。你具有技术上的直觉,喜爱试验各种事物。给你一样新东西,你能很快地掌握它,并与其他知识结合起来。你的自信源自经验。
□好奇。你喜欢提问。“那真漂亮啊——你是怎么做的?”“你用那个库时有问题吗?”“我听人说起过BeOS,它是什么东西?”“符号链接是怎样实现的?”你孜孜不倦地收集各种小知识,而每一条小知识都有可能影响到以后的某项决策。
□审慎的思考者。你很少在没有了解事实之前人云亦云,当同事说“因为以前就是这么做的”或者厂商承诺提供全部问题的解决方案时,你就应该在心中打一个大大的问号。
□现实。你会努力理解所面临的每个问题的本质。这种注重现实的态度会使你更好地认识到任务的难度和工作量,认识到困难和艰巨性能够给予你坚持不懈的毅力。
□广博。你会尽力熟悉广泛的技术和环境,并且与各种新发展俱进。虽然现在的工作也许只要求你某方面的专才,但你将总是能够转向新的领域,迎接新的挑战。
我们把最基本的特征留到了最后。所有注重实效的程序员都应具备这些特征。这些特征是如此重要,以至于需要用提示的方式来陈述:
序言回到顶部↑
作为审稿人,我有了提早阅读本书的机会。即使还处在初稿阶段,它就已经是一本很好的书了。Dave Thomas和Andy Hunt有话要说,并且深谙阐述之道。我了解他们所做的事情,知道他们的方式是行之有效的。我主动要求来撰写这个序,从而有机会来解释其中的原因。
简而言之,本书将告诉你怎样以一种训练有素的方式编程。也许你认为这不是一件困难的事情,但事情往往并非如此。为什么?原因之一是,并非所有的编程图书都是由程序员撰写的。其中许多图书是由语言设计者,或是与他们有合作关系的专业技术作者们编撰而成的,意在推销其作品。那些书所讲的只是怎样使用某种编程语言进行表达——这当然很重要,但这只是程序员工作的一小部分而已。
除了使用编程语言进行表达之外,程序员还需要做些什么呢?嗯,这是一个更深入的问题了。大多数程序员都不太容易说清楚自己的工作。编程是一项需要兼顾各种细节的工作,留意这些细节需要花费精力。时间流逝,代码被编写出来,看看吧,其中全是语句。如果你不假思索,也许会以为编程不过就是输入某种编程语言的语句。这当然错了,但搜遍书店的编程专柜,你却讲不出错在何处。
在本书中,Dave和Andy告诉我们怎样以一种训练有素的方式编程。他们怎么会如此聪明呢?他们不也和其他程序员一样,需要专注各种细节吗?答案是,他们在工作时,会留意自己所做的事情,然后试着加以改善。
设想你正在参加一个会议。你或许在想:这个会议没完没了,还不如去编写程序呢。而Dave和Andy会想,他们为什么要开会,是否有其他方式能够取代开会,而且一些事情可以自动决定,以使开会推后。然后他们就会这样去做。
这就是Dave和Andy的思考方式。开会并不是阻碍他们编程的事情。开会就是编程,而且是能够改善的编程。我之所以知道他们这样的思考方式,是因为这是书中的第二条建议:思考你的工作。
想像一下吧,他们就这样思考了几年,很快就积累了一套解决方案。而他们又在随后的几年中在工作中使用这些解决方案,放弃了其中太过困难或者不能总是产生结果的解决方案。于是,这样的做法就基本上定义了pragmatic(注重实效)的含义。现在他们又用了一、两年来写出他们的解决方案。你也许会想,这些信息肯定是座“金矿”。完全正确。
本书中,两位作者讲述了他们的编程之道,而且是以一种可以实践的方式叙述的。这种方式本身的意义更为深远。让我来解释一下。
作者一直在小心地避免提出什么新的软件开发理论。这是值得庆幸的,因为如果他们那么做,就不得不为了证实自己的理论而对各章进行“处理”。这样的“处理”在物理这样的学科中是一种传统,在这些学科中,理论最终不是成为定律,就是被静静地抛弃。而编程所具有的定律非常少(如果说还有一些的话),所以围绕那些要成为定律的东西所形成的编程建议写出来也许很好,而在实践中却无法令人满意。这也是那么多方法学图书误入歧途的原因所在。
我研究这个问题已经十多年了,发现一种称为模式语言(pattern language)的方法最有前途。简单说来,模式(pattern)就是解决方案,而模式语言就是彼此相辅相成的若干解决方案组成的系统。围绕对这些系统的探索,已经形成了一个整体社区。
本书并不只是许多建议的汇集,它是另外一种形式的模式语言。我之所以这样说,是因为其中每条建议都源自作者的经验,是非常具体的,而且与其他建议联系起来形成了一个系统。这些都是能够学习并遵循的模式语言的特征。在本书中它们同样发挥着作用。
你可以遵循书中的建议,因为它们是具体的。你不会发现含混不清的抽象之辞。Dave和Andy 紧贴你的需要,每条建议仿佛都是使你的编程生涯如虎添翼的必备策略。他们建议尽量简单,通过讲故事来解释,使用轻松的笔触,然后还给出了各种问题的解答。
不仅如此。在阅读了10或15条建议之后,你将开始看到另一层面的工作。我们有时称之为QWAN,即quality without a name(无名特质)的简称。本书的理念将渗入你的意识,并与你自己的理念融合在一起。它并不宣扬什么,只是讲述行之有效的东西。这正是本书精彩之处:它体现了自己的哲学,而且是以朴实无华的方式。
它已经在你手中了:一本易读也易用的、完整讲述编程实践的书。我一直在不断讲述它为何有效,而你关心的也许只是它是否有效。它确实有效,你马上就会看到。
——Ward Cunningham
软件模式和极限编程的先驱,Wiki之父
简而言之,本书将告诉你怎样以一种训练有素的方式编程。也许你认为这不是一件困难的事情,但事情往往并非如此。为什么?原因之一是,并非所有的编程图书都是由程序员撰写的。其中许多图书是由语言设计者,或是与他们有合作关系的专业技术作者们编撰而成的,意在推销其作品。那些书所讲的只是怎样使用某种编程语言进行表达——这当然很重要,但这只是程序员工作的一小部分而已。
除了使用编程语言进行表达之外,程序员还需要做些什么呢?嗯,这是一个更深入的问题了。大多数程序员都不太容易说清楚自己的工作。编程是一项需要兼顾各种细节的工作,留意这些细节需要花费精力。时间流逝,代码被编写出来,看看吧,其中全是语句。如果你不假思索,也许会以为编程不过就是输入某种编程语言的语句。这当然错了,但搜遍书店的编程专柜,你却讲不出错在何处。
在本书中,Dave和Andy告诉我们怎样以一种训练有素的方式编程。他们怎么会如此聪明呢?他们不也和其他程序员一样,需要专注各种细节吗?答案是,他们在工作时,会留意自己所做的事情,然后试着加以改善。
设想你正在参加一个会议。你或许在想:这个会议没完没了,还不如去编写程序呢。而Dave和Andy会想,他们为什么要开会,是否有其他方式能够取代开会,而且一些事情可以自动决定,以使开会推后。然后他们就会这样去做。
这就是Dave和Andy的思考方式。开会并不是阻碍他们编程的事情。开会就是编程,而且是能够改善的编程。我之所以知道他们这样的思考方式,是因为这是书中的第二条建议:思考你的工作。
想像一下吧,他们就这样思考了几年,很快就积累了一套解决方案。而他们又在随后的几年中在工作中使用这些解决方案,放弃了其中太过困难或者不能总是产生结果的解决方案。于是,这样的做法就基本上定义了pragmatic(注重实效)的含义。现在他们又用了一、两年来写出他们的解决方案。你也许会想,这些信息肯定是座“金矿”。完全正确。
本书中,两位作者讲述了他们的编程之道,而且是以一种可以实践的方式叙述的。这种方式本身的意义更为深远。让我来解释一下。
作者一直在小心地避免提出什么新的软件开发理论。这是值得庆幸的,因为如果他们那么做,就不得不为了证实自己的理论而对各章进行“处理”。这样的“处理”在物理这样的学科中是一种传统,在这些学科中,理论最终不是成为定律,就是被静静地抛弃。而编程所具有的定律非常少(如果说还有一些的话),所以围绕那些要成为定律的东西所形成的编程建议写出来也许很好,而在实践中却无法令人满意。这也是那么多方法学图书误入歧途的原因所在。
我研究这个问题已经十多年了,发现一种称为模式语言(pattern language)的方法最有前途。简单说来,模式(pattern)就是解决方案,而模式语言就是彼此相辅相成的若干解决方案组成的系统。围绕对这些系统的探索,已经形成了一个整体社区。
本书并不只是许多建议的汇集,它是另外一种形式的模式语言。我之所以这样说,是因为其中每条建议都源自作者的经验,是非常具体的,而且与其他建议联系起来形成了一个系统。这些都是能够学习并遵循的模式语言的特征。在本书中它们同样发挥着作用。
你可以遵循书中的建议,因为它们是具体的。你不会发现含混不清的抽象之辞。Dave和Andy 紧贴你的需要,每条建议仿佛都是使你的编程生涯如虎添翼的必备策略。他们建议尽量简单,通过讲故事来解释,使用轻松的笔触,然后还给出了各种问题的解答。
不仅如此。在阅读了10或15条建议之后,你将开始看到另一层面的工作。我们有时称之为QWAN,即quality without a name(无名特质)的简称。本书的理念将渗入你的意识,并与你自己的理念融合在一起。它并不宣扬什么,只是讲述行之有效的东西。这正是本书精彩之处:它体现了自己的哲学,而且是以朴实无华的方式。
它已经在你手中了:一本易读也易用的、完整讲述编程实践的书。我一直在不断讲述它为何有效,而你关心的也许只是它是否有效。它确实有效,你马上就会看到。
——Ward Cunningham
软件模式和极限编程的先驱,Wiki之父
评论交流
共有21人开贴评论 23人参与评论 13人参与打分 查看
评价等级:





发表于:2007-12-10 16:34:00
我作为一名程序员,随着参与的项目越来越多,也开始有越来越多的困惑。这也是我为什么要买这本书来看的原因。相信每一个专职的程序员都会明白我的意思。
在学校里面学习技术与在公司里参与量产项目的开发,有着很大不同。
在亚马逊里面有人评价说这本书是每一个程序员都应该拥有的,而也有不同的意见说这本书压根就不是给程序员看的。
刚刚拿到书,只是粗略地看了一下,文字很不同于以往我们常见的那种教科书风格,比喻很多。
另外,这是英文注释本,并非影印本。保留了正文,一些无关紧要的序言之类的翻译成了中文,此外正文对稍微有难度的英文都在旁边加了注释。也许有的人会很欢迎这种做法,因为你不必再翻字典了,但对于有的人来说,可能会感觉破坏了整体感觉,给人很零乱的感觉,也许会觉得别扭。
不管怎么样,感谢引进该书的编辑,毕竟他是花了一番心思,努力想让这本书能够被更多中国读者接受。
我会在读一段时间这本书之后再来发表书评,希望我的书评可以对大家有帮助。
在学校里面学习技术与在公司里参与量产项目的开发,有着很大不同。
在亚马逊里面有人评价说这本书是每一个程序员都应该拥有的,而也有不同的意见说这本书压根就不是给程序员看的。
刚刚拿到书,只是粗略地看了一下,文字很不同于以往我们常见的那种教科书风格,比喻很多。
另外,这是英文注释本,并非影印本。保留了正文,一些无关紧要的序言之类的翻译成了中文,此外正文对稍微有难度的英文都在旁边加了注释。也许有的人会很欢迎这种做法,因为你不必再翻字典了,但对于有的人来说,可能会感觉破坏了整体感觉,给人很零乱的感觉,也许会觉得别扭。
不管怎么样,感谢引进该书的编辑,毕竟他是花了一番心思,努力想让这本书能够被更多中国读者接受。
我会在读一段时间这本书之后再来发表书评,希望我的书评可以对大家有帮助。
| 我要写评论 |
| 查看所有评论交流(共21条) |


点击看大图




加载中...
