品味.NET巨著——書評《Microsoft .NET框架程序設計(修訂版)》
2024-07-10 12:59:19
供稿:網友
在經歷了漫長的等待后,我們終于看到了清華大學出版社組織重譯的《microsoft .net框架程序設計(修訂版)》一書。本書英文原名是applied microsoft .net framework programming,由全球知名的技術作家 jeffrey richter先生所著。在去年《程序員》的.net好書榜中,我們曾推薦過此書的英文版。一直以來,能透徹地分析.net框架平臺體系和底層技術的書籍了了無幾。毫無疑問,《microsoft .net框架程序設計(修訂版)》給國內.net開發人員帶來了新的希望,本書對.net平臺進行了全面地剖析,語言流暢、翻譯準確,不愧為.net領域的經典圖書。
說到此書,就容我稍費筆墨對jeffrey先生做一簡要的介紹。jeffrey richter先生是windows/.net程序設計領域享有盛譽的技術作家,名刊msdn雜志的.net專欄撰稿人。其傳奇著作《windows 高級編程指南》(windows 95:a developer's guide,advanced windows)、《windows核心編程》(programming applications for microsoft windows)早已成為 windows 程序設計領域事實上的圣經。他在13歲時開始癡迷于編程,23歲從drexel university獲得計算機學位后,就耕耘在windows開發領域。他的windows著作培育了幾代軟件開發設計人員。
本書的譯者是做技術出身的李建忠先生。在譯序中,李建忠就告訴讀者準備.net框架 sdk和一些常用工具,并給讀者提了一些指導性建議。他在每章的關鍵技術點都加有譯注,顯示了譯者本人深厚的技術功底,同時也給本書增值不少!更重要的是他對jeffrey所犯的錯誤以譯注的形式進行了糾正,作為讀者理解原書的重要補充。在一些技術細節上,李建忠親自對代碼進行調試,如在第六章“通用對象操作”里,李建忠親自重寫equals和gethashcode方法中的一個,檢驗編譯器是否出現警告信息。讀者可以留意每一章中的譯注,就會發現,所有的這些都是非技術出身的翻譯人員無法做到的!由于李建忠的技術功底和語言領悟能力,本書算是給jeff交了一份圓滿的答卷,也給讀者交了一份圓滿的答卷!
在讀《microsoft .net框架程序設計(修訂版)》時,給我的總體感覺是:剖析透徹、條理清晰、每一頁都有收獲,每一個技術點都值得我們去理解和品味。譯文流暢、讀書簡直是一種享受。書中的內容主要是涉及.net平臺核心技術,如.net框架原理、程序集、元數據、值類型/引用類型、類型設計、異常處理、垃圾收集等核心技術進行了精妙的講解,而且作者對開發中的種種問題給予了指導。比如:講解.net框架原理時,深入分析了我們利用c#編譯器(csc.exe)生成托管模塊(需要通用語言運行時clr才能執行的pe文件),托管exe如何啟動clr,微軟組件對象運行時執行擎(mscorree.dll,在system32目錄下)怎么工作等做了詳細的解釋。
給我留有深刻印象的是該書的第十九章。這一章可以說是.net技術的理論精華所在:關于.net自動內存管理(即垃圾回收)。在以前,.net框架幫助文檔闡述得不是很詳細。在本書中,作者用平實的語言闡述了垃圾收集的機制。比如我們用new關鍵字實例化一個對象,中間語言(il)指令newobj創建新的對象,在托管堆中為對象分配內存。垃圾收集器檢查托管堆中是否有不再使用的對象,進行內存回收。這一系列的理論,通過譯者的表述,把整個過程表述得十分清晰明了,而且配有圖表進行詳細的說明!
在本書中,jeffrey先生還寫了大量的c#代碼,結合.net框架深入進行剖析,比如值類型的“裝箱和拆箱”,分析了大量的代碼,以及這些代碼執行多少次裝箱和拆箱操作。我想,本書之所以如此成功,是和jeffrey先生十幾年來的c++技術背景分不開的。尤其是對底層的理解上,jeffrey先生熟悉windows底層,經常用反匯編工具(ildasm.exe),這對理解.net框架起到了很大作用。
看過此書的人,對.net框架會有一個全面的理解,而且可以發現微軟.net領域的技術精髓。那時,你會覺得visual studio.net只是一個高級的源代碼編輯工具而已。而更多的底層技術,是由.net框架來完成的。你可以分析到程序的底層,可以解決程序編寫、調試、部署中的許多問題。現在,你不訪在網上下載《microsoft .net框架程序設計(修訂版)》的一些章節,細細品味。
引用本書譯序中的一段話作為本文的結尾:
“相信對于.net領域應該很快會有同樣的說法——.net程序員將會因為此書而分為兩類,一類是讀過《applied microsoft.net framework programming》的,一類是沒有讀過《applied microsoft.net framework programming》的。”