《参透delphi》书评
这是本几乎与我擦肩而过的书。
众所周知,国内delphi的好书寥寥无几,个中原因毋需我多言。当你有了几年delphi开发经验后,国内出版的delphi书籍,我想你差不多应该都能耳详目闻,就那么少数几本,国外经典倒是不少,可你除了牙根痒痒地去amazon转转外,就只有羡慕c++/java程序员的好福气了——名作经典基本上都有中译本和影印本,想比之下,delphi方面的曾经有过影印本吗?即使是拿译本来说,能否快速说出十本?你只能把目光转向国内——这下好了,百花齐放,万草共长——delphi书籍可是计算机图书市场的涌涌大流也!!所以,年中在china-pub上见到这本书,颇对此书名不以为然——深圳李战已有文章《悟透delphi》(delphi的原子世界),此书与之只有一字之差。我看了看目录,没怎么仔细浏览,就看到第二部分的“用户界面设计”,洋洋洒洒倒也百十页,于是以为又是市面上那种常见的垃圾,便跳将过去,不再理会了。偶然的一次机会,和朋友去八卦岭买书(呵呵,进门第二家,深圳的朋友有空还是多去跑跑,就是china-pub深圳分店,全场8折,环境也不错,想节约5块钱送书费就直接跑去算了,不过咱们兄弟大都在南山,还是送书划算:),看到了这本书,于是随手翻翻,看到谈虚方法时,就仔细看了一下——既然讲虚方法,那离了VMT恐怕不会有个透彻的理解,但很少有书谈到VMT,即使是Marco Cantu的Mastering系列,也是犹抱琵琶地稍稍点点,不注意还看不到(国庆去逛书店,发现d7的版本又翻译出来了,真是快——翻译的快,换人了),而手册系列的开发指南,基本上连OP都讲的不多,我看到的第一篇讲VMT的文章就是delphi的原子世界,另外就是delphi in a nutshell了,虽然较为深入,但篇幅太短, Ray Lischner惜墨如金,只留一个vmt.exe让你自己去体会,但已是宝库(VCL)透出一缕光芒来!另外一篇则是虫虫的《天方夜潭VCL》,同样精彩——当我看到作者推测动态方法表与虚方法表基地址的区别时,我知道,我对这本书的第一看法错了!事实上,我对动态方法表理解不深,虽然Ray Lischner在书中列出了一个动态方法表的布局,但我常常一翻而过,没有去深入研究,而看到这本书,看作者饶有兴趣地做出推测和验证,倒也让我兴趣盎然:)可以说,《参透delphi》的精粹所在,就在第一部分“Object Pascle语言精义“这一部分!
系统地学习OP,不需要太多的书籍,看看Marco Cantu的Pascle精要,再仔细地学习delphi附送的object pascle参考手册(国内有中文版),那么OP的基础已经打好(很多人都抱怨没有OP方面的书,那么请你先仔细研究OP参考手册吧!)再深入,就可以看Mastring系列的前几章,另外,则是这本,我毫不掩饰对这本书的喜爱——尤其是第一部分的九章!举个小例子,第7章,p201-204,reintroduce关键字,重引入与重定义,仔细地解释这个关键字的书籍倒是不多,这本书的例子就很清晰,让初学者能够很快地有个了解(看看Aanders在c#里的加的”new“关键字——我说的不是用来create对象的那个,呵呵:)再如第二章”子程序参数“一节,关于参数的类型这种非常基础却又非常重要的知识,在开发人员指南里,仅仅只介绍了值、引用和常量参数,对于out和untyped参数竟然提都未提!是否两位作者觉得太基础而没有必要解释?:)而国内的很多书籍亦是如此,仿佛是什么”高深“的理论而不用给初学者解释:(我不得不承认,国内的delphi书我看的还是太少,除了OP手册,介绍的比较详细的就算这本书了,虽然是简单的小细节,却也看的出著书人的态度——如果作者总是站在读者的角度来写书的话,那么至少不会让读者读书读的云里雾里,如入深山密林之中,茫然不知方向,这种不为读者考虑的书太多,不是语句前后矛盾,就是明显拼凑剪切,或者是代码根本调不通——看看以前的的X望和现在的X思出的书吧!(恐怕马上又会有人对号入座来骂我吧:)而这本书,字里行间,我常常可以看到作者写书的严谨态度,更多的是一个真正的delphi爱好者对delphi的钟爱和其宝贵的学习经验和研究!与市面上仅为想从读者身上捞桶金而”拉“书的人(我称这种人为”拉“书而不是“写”书),高下立判!我常常希望那些“拉”书的人根本不懂delphi,这样至少会让我得到一些安慰——delphier还都是女神的仰慕者而不会去亵渎她——可惜,“拉”书的常常也是所谓的“delphier”!……抱歉说离题了:)
这本书的前9章,基本上对OP有了一个较深入的介绍和剖析,从这一点来说,这本书并不是那种从书名看是深入,从内容看却是入门的书籍,我个人认为至少应该有过通读过一遍开发指南系列和Mastring系列的阅读经历后看这本书才会更容易理解和体会其中的精粹(题外话,如果初学者觉得开发人员指南太厚而不敢下手乃至希翼找到一条终南捷径的话,我劝你还是放弃delphi,因为这本书会给你打下delphi编程的坚实基础,没有学习过指南系列的delphi编程者简直让我不敢想象——不是高的骇人就是低的骇人:)这部分可以说是OP参考手册内容的深化和细化,另外加上作者自己的探测和研究(这一部分更为深入和值得研究),所以,仅仅是这一部分,我觉得就值得个人购买(如果尚在读书,那我劝你还是先咬咬牙把开发指南买下通读——等看完后再考虑这本书)另外要提的是遍布全书的注释——几乎每页都有——这也看到了作者的严谨态度,很多似是而非的概念,作者常常会以提示的方式详细列出,容易混淆的地方常常会跟类似的概念对比加以区分,这点让我觉得很值得赞赏。
除此之外,我觉得颇有价值的则是第四部分,”操作系统核心编程“部分,24章消息的处理和拦截,子类化,26章钩与dll,27章进程与内核对象,30章虚拟内存,31章区域对象和进程间通讯,可以说是这部分的精彩之处。众所周知,深入windows内核编程方面,delphi的书籍少之又少,我个人觉得,能把Jeffey Richter的著作内容以delphi实现一遍,抑或在脑海里设想delphi该如何实现,那我想你的水平都会获得提高,而对于没有c++功底而又需要这方面知识的读者,我想这部分的内容会让你满意。
第四部分,组件开发与IDE扩展,这部分有我满意的地方,也有我很不满意的地方,比较让我满意的是第18章,RTTI这部分。虽然开发指南也有介绍,但我觉得在代码量和深入探讨上都不足以让我满意,所幸,这一章无论是从代码的数量还是理论的探讨,都让我觉得非常满意!而组件开发部分,我觉得比开发指南要逊色的多,更让我觉得不满的是第22章,接口与com这章,可能是看过Eric的delphi com编程一书的缘故,对比此章,我觉得这章即使是从概念上或实作上都无法让对接口不太了解的读者有更进一步的理解,更遑论com了,所以我觉得如果作者有心写第二版的话,这部分应该有所加强。第23章OTA部分,作者可能不是很擅长,所以了了带过,个人觉得如果要学习这方面的知识的话,可以看看陈省的深度探索,研究一下GExperts的源码,去bdn搜索一下,有几篇非常重要的文章。
最后,就是本书的鸡肋部分——第二部分:用户界面设计。我不太了解为什么作者把这部分放上去,因为跟delphi的深入探讨没什么关系,而且即使是“组件高级用法”,我觉得价值也不大——这些内容,有“葵花宝典”,有各种版本的技巧集,或者网上搜索一下,一般应用已经足够,作者没必要再添加这部分,如果有第二版的话,我希望能把这部分去掉,然后深入op部分,加强接口与com部分,扩展系统编程部分,那么就更对的起“参透”二字了!
另外要说的是,虽然注释能够代表著书人的严谨态度,但是太多就有点过犹不及了,这本书的注释让我很赞赏,但是却也有点太多——有些章节几乎每页都有了——与其这样,有些内容不如放到正文中来,而有些注释我觉得就可有可无,注释再稍少点会觉得整体的平衡感要好些——个人感觉:)
总体评分:5分满分的话,我给4分。国内相关书籍的话,我觉得这本目前应该是最好的——如果能有更多比这本书更好的书出现那就是delphier最乐于看到的事情了:)。
就此打住,如果不是经济紧张的话,推荐购买。
btw:种种原因,这篇不知道算不算书评的“书评”到国庆才拿出来,督促的朋友,向您道个歉!!同样,欢迎您来信,探讨问题,abluedog@163.com.