這是本幾乎與我擦肩而過的書。
眾所周知,國內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最樂於看到的事情了:)。
就此打住,如果不是經濟緊張的話,推薦購買。