« 买了一本杂志和一份报纸 | Main | 本次beta技术沙龙我来分享银杏搜索利用snmp作服务监控的话题 »

谈谈《程序员修炼之道》

作者:virushuo 发表于 2009-08-08 00:08 最后更新于 2009-08-08 01:08
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明


学过高中物理的人,应该会记得,原子中的电子获得能量之后,将发生能级跃迁,到达更高的能量状态。其实任何工种都是一样的,要跳出自己的水平,到达更高的级别,不是件容易的事,这个跳跃过程总需要一些东西的辅助。诚然,如果要成为一个好人,那么只要做好在幼儿园中学到的一切就足够。如果要成为一个好程序员,所需要的道理也不太多,只不过,当水平不够的时候,永远不能认识到那些朴素道理的重要。而当水平达到的时候,这些道理自然会明白。所以一本帮助程序员进阶的书,很容易落到低手觉得是废话,高手也觉得是废话的悲惨境地。

很多年以前,有人和我推荐过这本《程序员修炼之道》,甚至专门买了一本送到我家。而当年的我,不知道是由于无知,自负,浮躁,或是其他,只草草翻了一下,就下了个"烂书"的定义,扔在书架一角。后来有朋友在我书架上发现,如获至宝,说已经买不到了。我当然乐得送了人情。在我心目中,最好的入门书永远是《代码大全》,那也是对我影响最深的一部书。

过了很多年之后,再来谈这本书,发现很多人的评价比我高的多,自知不妙,赶快找来重读,这才知道错过了什么。在一个滥俗的译名之下,在一个看起来不知所云的目录之后,在一些读起来拗口的句子之中,隐藏的竟然是相当伟大的思想,朴素而真挚,简单而有效。这时候我突然明白,这是一本不逊于《代码大全》的伟大著作,后者一直被我誉为"新手圣经"。

经验这个东西,往往并不能告诉我们什么一定对,但是可以告诉我们什么一定不对。这本书完全是经验凝成,没有大道理,没有新观念。这些朴素的道理就是创造一个合格软件和作一个好程序员所必须了解的。比如 "提示44 不要靠巧合编程",这句话表达的意思是"不要预设立场"。听起来简单,但是只要随手翻翻你最新写过的一段程序,通常都会发现代码中做了大量的"假设"。书中用一道习题,假设了用户使用命令行环境,假设用户懂英语....都可能导致问题。怕了吧?幸好还有"提示30 你不可能写出完美的软件",这可不是帮你开脱责任,而是在讲如何控制需求,这正是能顺利完成一个项目的根本前提,可惜事实上往往到了项目失败的时候,人们才想起来需求出了问题。

这本书涉猎的范围相当广,如何设计架构,如何思考问题,如何测试,如何编码,如何处理文档...如果细心琢磨,构建软件的所有主干和细微枝节都有所涉及。和很多人的看法不同,我不认为这是一本可以轻松读完的书。一方面,这本书涉及的内容太多,虽然已经尽量讲述,但所有话题都可以继续引申出无限的内容,如果用心,还可以配合附录中所提到的各种论文和资源继续学习。习题也需要仔细思考。这绝不是一本小说。另一方面,作者用了大量的隐喻,导致读起来有一定难度。开始我认为是翻译质量有问题,不过慢慢发现美国的读者读起来也未必容易。原因还是涉及到的范围过大。我特意模仿这种风格写了本文的第一段。虽然是中文,读起来也不容易吧。

相信以上的两点会阻挡一部分人阅读这本书。我也算是曾经受阻的人之一。 不过,好书并不会随着时间的推移和平台变化而消亡,好书只会成为经典。无论是《人月神话》,还是《代码大全》,都在时间的长河中沉淀下来,传颂至今。这本书,虽然历史只有10年,不过现在再来翻看,不仅毫不落伍,甚至感觉穿透了时间,看到了这些年中不少自己犯过的错误,我相信这也是一本能经的起时间沉淀的书,只不过需要多点耐心。因此,我郑重的写下这篇书评,希望再能读到这本书的人多一点耐心,越过语言的障碍,直入本质,直至跃向更高级别。这个希望,不仅仅是对新手说的,其实也包括我自己。如本书开头所说:注重实效的程序员应该不断学习。我们都应该不断的学习下去。

Comments

非常赞同。作为一个以开发软件为职业的人,必读的一本书。
尤其是工作了一段时间在读,就会有一种相见恨晚的感觉。

最近一年都在看《代码大全》,这个《修炼之道》早先几年听你提起过,看来要找出看看

罗素说过,现代的知识分子是教士的后代。我觉得程序员是知识分子的后代——如果他要热爱编程体验。编程领域的大师要有认识抽象的卓越能力,这一点和人类知识历史中的先知有些相像。

经验这个东西,往往并不能告诉我们什么一定对,但是可以告诉我们什么一定不对。

好神奇,这个假期正好有在看这本书。看的英文注释版的,英语不好,觉得吃力,但是确实绝对是一本好书。
道理被人懂常常有两种情况。
一是道理人人都懂,只是像是本能,人人都在用却没有进行归纳过,当看到有人把内心一直存在的东西写成文字,就会觉得很震撼,然后更加庆幸自己是对的,更加认真地做下去。
二还是道理人人都懂,只是一直不做,一边觉得自己懂了,一边却偷奸躲懒又意淫着自己达到更高的层次。
这本书讲的就是也许人人都懂,或者看了以后觉得确实是这样以至于感觉自己懂 的道理们。就看自己是什么样的人。

感觉这个不只是在程序中的道理,很多东西都是相通的~刚从xuyou那儿看了半天us建国历史,又跑你这儿来了~恩这个周五过得挺有意思。

高手的观点都是新手认为比较弱智的,这就是辩证法。

网上有的下吗?我编了2年程序,学到的东西也没觉得多少。这本书来看看。

有电子版的么?

Post a comment


about me:
me.jpg
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2