我:早上好,Coco。
Coco:天啊!居然你还在人世啊……我打你手机不接,电邮不回,我还以为你前一阵子让台风给卷跑了!
我:呵呵,真是不好意思,上个月丢了手机,丢了工作,263邮箱转帐不成功,被锁在那里不能用……所以像人间蒸发了一样,真是对不起。
Coco:可怜啊……不过你把我晾在一边不管,消失这么长时间,我也就不想可怜你了!除了这些,你就没有做什么对人生更有意义的事?
我:有啊有啊,我失业后买了《设计模式》,然后没日没夜的读了一遍,真的是大有收获啊!就是那本由软件工程界的四位专家写成的名著。我推荐你尽快去买一本来读,会对你很有好处。
Coco:这本书有这么好?不过听说书中的代码都是用C++和Smalltalk写成的,C++语言我不熟,Smalltalk可以说一点都不懂,这本书对于我是不是太难了些?
我:虽然很多书评都把这本书列为面向高水平读者的高难读物,但以我的切身体会,它在语言方面的难度并不是很高,也没有任何艰涩难懂的代码。这本书的重点在于介绍了23个设计模式的由来,结构分析,设计方法和适用范围。所以说它主要的作用在于培养读者分析和解决问题的能力,而不在于语言的技巧。你的已经会使用C++进行一些简单的类设计和编写,了解它的基本语法,可以读懂一些较深入的代码。我看这个水平完全可以读这本书了。如果有学Smalltalk出身的朋友,我看达到同样的程度就可以。
Coco:这么一说,我就有信心了。不过,以我这个初学者,读这本书会有很重要的意义吗?毕竟我的时间也很紧张。
我:我认为,这本书应该尽早开始读,因为它对培养程序员的思维方式有很大的帮助,知识可以学习,但思维方式和习惯,一旦养成,就很难再改变。虽然你还读不懂书中的所有内容,但你试着与作者一起思考的时候,自然的就会为之影响,当你理解和怎样像作者一样把问题化繁为简,分而治之,你就离真理更近了一步。这不尽会对你写C++程序有帮助,还会对你编写其它程序,甚至对你思考和处理问题,都会有很大帮助。老实讲,如果我早几年读到这本书,就不会是现在这个水平。:)对我来说,这本书读到的太晚了。
Coco:那如果我读不懂这本书中的代码怎么办?
我:前面说了,这里面没有很艰涩的代码,以你的水平,如果有个别的代码不能理解,可以对照着读一下手边的C++教材,重要的是要学着理解书中代码的设计方式,也是说是,不止要理解它们是“做什么用”,还要理解它们“为什么是这样”。这方面的困惑可能更难解决,一个是和有开发经验的朋友多交流;一个是不要操之过急,要明白作为一个初学者,你有这样的困难是正常的,可以先把它放在一边,在日后写程序的时候慢慢体会。
Coco:如果我以后不用C++写程序了,这本书的内容会不会对我没有用了?
我:绝对不会,关于设计模式的知识和开发语言是没有关系的,更重要的是写程序的人。就像Bjarne Stroustrup 所说过的,一个人如果真正理解了面向对象的思想,他用纯C也能写出面向对象的程序。一个人如果理解了设计模式,那么他在使用任何开发语言和工具时,那可以自如的应用甚至创造新的设计模式。事实上,现在应用设计模式最广泛彻底的,也许不是C++,而是Java。如果你理解了设计模式,肯定会对你理解Java的架构,开发Java程序大有帮助。据我所知,有很多研究设计模式的人,都把Java做为工作平台,相关的资料也有很多。
Coco:但是这类的读物我也读过一些,比如在很多地方都介绍过“工厂模式”,但我一直就读不懂为什么要有工厂模式,工厂模式到底做了什么。
我:出现类似的问题主要有几个方面,一个是你没有足够的开发经验,设计模式是为了解决一些特定的问题出现的,如果你没有遇到过这一类的问题,可能不会明白它们的意义;还有一方面就是单独的文章不足以说明设计模式的设计方法以及对各个模式进行详细的分析。所以我建议你读一读这本整体介绍设计模式的《设计模式》。事实上,它的门槛不高,正文内容只有二百多页,文字也没有什么架子,都很容易懂。轻便好带,你上晚自习的时候可以装在书包里,背英语背累了拿出来读读,挺不错的。
Coco:说得我心动了,明天我就去书店买一本吧。有影印版,我直接买一本影印版。
我:好啊,为了不会买错,我在这里说一下,书名叫《设计模式》,英文名“Design Patterns”,作者是:Erich Gamma, Richard Helm, Ralph Johnso, John Vlissides。机械工业出版社出版。不要笑我多嘴,我就在一家书店里亲眼见过著名的Delphi书藉《Delphi 5 开发人员指南》旁边放了本国人编的《Delphi 5 开发指南》,厚度价钱什么的都差不多,可质量却天差地远……
Coco:那我干脆买英文版好了。
我:说到英文版,这么久不来,我给大家带了份薄礼:《Python文档》的中译本。现在刚刚开始译《Python指南》,本来是想至少译完这一部分后,再把它贴上来,再找个地方把它完整的保存好。但我明天就要出发去外地,可能很久都没机会再忙它,只好把现有的这个开头先传上来。实话实说,这个译本并不算理想。很多地方都不是很细致,也不是精准的对照翻译(这与的我观点有关,我认为翻译重要的是准确表达意思而不是文字)。希望所有发现有错误或争议的朋友及时指出,谢谢大家。
Coco:你又要人间蒸发啊……好吧,那么大家再见。希望我们可以尽快再见!