[book]道法自然
前不久读了王咏刚的〈凌波微步〉和〈凌波微步II〉,感觉不错。今天把他老人家的《道法自然》也买了下来。
在dearbook看到关于这本书的长篇大评,也一块copy了下来:
http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS0023954
认真的作者,真实的经历,实践的结晶(读者 Soundboy于2005-5-31) | 0人同意、0人反对 |
读此书,最大的收获之一就是比较轻松地理解了设计模式。说实在的,GoF的《设计模式》买了几年了,但是对于20几个模式始终没有建立起一个明确的概念。而了《道法自然》一书中,经典的模式被作者用浅显甚至诙谐的语句描述了出来,使得脑子里马上有了一个直观的感性认识。这个时候再回头来看严密经典的论述就轻松了许多。
这本书在网上是比较有争议的一本,其中争议的一个焦点就是书名,有人认为起了这么个名字太虚了,技术人员应该务实。有人则认为这个名字形象、容易记。我的感觉是按照这个词在中国文化中的地位这本书的确是有点欠份量,但是此书的确是一本独到的书,应该有一个独到的名字。这个名字给了这本书一个清晰明确的ID,方便大家交流。
这本书可能不适合对于软件工程已经很有造诣的高手学习,因为里面讲的东西几乎都可以在近年的一些流行经典书籍中找到更详细、严格的描述。当然抱着挑毛病的目的的除外。 也不适合刚刚学习了C语言而没有写过几个完整程序的学生阅读。因为讲的东西大多数都是只有在实际项目中才能体会的。而有一类人,他们掌握了C++等语言的基本语法,也做了一些项目,但是对于究竟怎么去从整体上把握一个项目确没有很好的想法,买了几本类似《UML用户指南》、《设计模式》等大师著作却因为自己理解能力有限而读得费劲,总感觉书上的理论过于抽象难以和实际的应用有个顺利的链接而放弃。很不幸我就是这类人,而这本书最适合的读者应该就是这类人。很庆幸我就是这类人之一。因此我感觉这本书很适合我阅读。
此书的作者一定是阅读了大量的面向对象方面的书籍文献。我这么想到不是因为书后罗列了4页纸的参考文献,而是书中大量明确的和广泛交叉的引用。要做到这点如果不对原著中的观点充分理解几乎是不可能的。
这本书不能作为学习面向对象知识的教材,而只能作为辅导书。作者在简介中说“如果吧面向对象大师们偏重理论建构的经典读物称为面向对象盛宴中的主菜,那么本指南若能充当佐餐的凉菜或者是饭后的甜点,作者就心满意足了。”看来作者对于自己的作品有着清楚的认识和定位。我看经典读物可以比作高能量的压缩食品,营养丰富但是并不可口。有了《道法自然》书的调配,美味和营养就可以兼得了。
书中的“笨笨点评”我比较喜欢,可以使得在读书的时候喘口气,还获得了一些常识。如果还嫌书的正文不够通俗,那么点评中的话就更是聊天式的。
关于书的价钱,很多人说是贵了,这本书一共将近450页,定价是45.00元,平均每页一毛钱。我是在网上买的34块多,平均每页几分钱。不是很便宜,但也绝对不是贵。其实书的价钱要是按照纸张的量来算那是收旧书的小贩,读者买的是书的内容。我的感觉是花这30几块钱是值得的。
很多人批评这本书没有自己的新观点,而是把面向对象理论做了一汇编。这看来是事实,但这里的汇编绝对不是简单的罗列,而是放在了实际的工程中的有血有肉的展示。而且,任何知识到了一个真正理解了他的人的脑子里面,或多或少都要产生一些自己的东西的。仔细的看此书,里面还是有一些出彩的地方的:
第14章、UML的消息和进程间调用函数的关系。“为什么UML把所有函数调用都称为消息。”这个结果可能很多人都知道,但是能回答为什么的有几个人呢。这个分析好像在其他书中没有提及的(抑或是我孤陋寡闻?),而且这个问题也是一个长期疑惑的问题。
书上还着重提了一下C++语言里面多态的概念,其实这是绝大多数模式存在的基础,要是没有多态,大部分模式根本就不可能存在。可是现在学过C++、甚至写过C++程序说不清多态的人大有人在(我好像就是其中一个,大概知道,但是严格说清楚好像不行)。从这点上看此书像是一个优秀的学生学习设计模式做的笔记,把相关内容串起来了讲了一下。给一些没有老师的学生一个学习的指到路线。
这本书虽然在设计模式上用了大量的笔墨,但是却不是一本专门讲设计模式的书,不能用来作为设计模式的教材。Bridge ,Interpreter 等模式书中就没有提及。我在刚开始读这本书的时候感觉最大的收获是通俗的的讲解了设计模式。等到继续阅读以后,发现让读者学习设计模式不是作者的最终目的。书中讲了一个实际的、完整的项目。前三分之二部分讲的系统分析等。
以上文字写于2004年底,最近又把这本书拿出来翻了一下,感觉还是有新的收获,虽然早先看的很多都忘记了。的确,如果没有实践的机会,很多东西是很难深刻掌握的,这本书讲的就是实践中的东西,给我们了一个真实实践的过程记录,其中也包括了作者多年的总结。
如果你感觉到自己写了不少的代码,但是总是感觉停留在代码工人的阶段。对于整个软件的结构无法把我,而实践中又没有多少理论学习的机会,一些大部头的著作看起来又有点费劲,那么这本书是再适合不过了。