windows程式設計的四書五經

來源:互聯網
上載者:User

內容整理自互連網。

所謂的Win32開發,就是在C語言的層面上,直接使用Win32 API開發Windows應用程式或者系統程式。雖說現在直接用Win32 API開發應用程式的人已經不多了,深入理解Windows系統程式設計原理,仍然是成為Windows開發高手的必經之路。所謂的Win32,其實是一個API規範,與UNIX系統編程介面標準POSIX是同一個性質的概念。從設計上講,Win32絕對算不上是簡潔優雅,因此學習Win32系統編程,相對來說是比較困難的。Win32來源於Win16,而Win16最初設計於1980年代中早期。設計Win16的時候,Microsoft還是一家小公司,應該說能力還有限。同時,Win16的主要目標是DOS之上GUI系統,設計上偏重GUI部分,在系統編程領域考慮不多。等到設計Win32時,微軟能力增強了,有心要把Win32打造成第一流的作業系統API規範,但是已經背上了Win16的曆史包袱。所以相對而言,Win32的設計實在趕不上POSIX那麼簡介優雅。微軟在隨後又先後進入了COM時代和.NET時代,每一次進步都需要繼續背負以前的曆史包袱,使得微軟的技術體系越來越複雜。

        微軟技術的複雜性,是微軟與Java競爭中的最大弱勢。而對我們程式員個人來說,無論你現在是在學習和使用最新的.NET技術,還是繼續堅持COM開發模型,要克服微軟技術的複雜性,必須上溯到Win32。那麼Win32領域的“四書五經”是那些?我們一一道來:

1. Charles Petzold, 《 Windows 程式設計(第5版)(上、下冊) 》 北京大學出版社

       這本是盡人皆知的Win32 API編程經典,也稱為“Petzold Book”,學習Win32 API編程的人幾乎都從這本書入手。這本書的優點是落墨細緻,對基本概念和基本技巧的解釋非常詳盡,不厭其煩。同時,這本書篇幅雖然不小,但是包容的東西並不多,基本上把重點放在GUI編程上和常規編程任務上,所以能夠把很多問題講得非常透徹。通常第一次閱讀這本書,都會覺得作者行文有一些羅嗦。但是日後在開發中,卻會發現,這些當時覺得羅嗦的論述,都是實際工作中值得反覆查 木 嚼的寶貴資料。這就是所謂的Petzold風格,既可做tutorial,又可做reference。

       幾年前,人民郵電出版社出版過一本Charles Calvert的《 21天學通WINDOWS 95編程(上、下冊) 》,那本書的定位與“Petzold Book”相似,而且寫得也非常出色,在控制項編程方面的闡述甚至超過了“Petzold Book”。可惜這本書完全被“Petzold Book”的光芒所覆蓋。不僅國內沒有再版過,而且原出版者也徹底打消了與“Petzold Book”對抗的念頭。

       現在仍然用Win32 API直接開發GUI的人,恐怕是少之又少,所以這本書的意義不及當年。更公允的說,Petzold Book現在最大的意義是作為Win32的入門教材。不經過它的洗禮,很難升堂入室。

2. Jeffrey Richter, 《 Windows核心編程 》第四版 機械工業出版社

       這本書的前三版名為Advanced Windows,第四版改名為Programming Applications for Microsoft Windows。作者在前言裡還特別講了改名的原因。但是在我看來,這本書還是叫做Advanced Windows更貼切。因為這本書雖然同樣是講Win32 API,卻幾乎和Petzold Book沒有任何重複。初級的內容完全略過不提,GUI部分也是一帶而過,全書頃力與系統編程,一上來就講Win32核心對象,從進程到線程,從DLL到SEH,從鉤子到記憶體管理,可以說是不避艱險,迎難而上,將最複雜最微妙的細節完整展現出來,同時配備又大量精心準備的例子,代碼品質非常高超。因此,這本書從問世之日起,就成為Win32系統編程方面的聖經,作者Jeff
Richter也成了Win32編程方面的絕對權威。想要學習Win32核心編程,不讀這本書是無法想象的。遺憾的是,這本書的中文版翻譯配不上原書的高水平,可以說是大錯不多,小錯不少。如果有讀者要認真研讀此書,可以去尋找北京大學出版社出版的影印版。

       這本書是Richter的代表作,也奠定了Richter世界頂級技術作家的地位。我本人非常喜歡讀Richter的書,因為他的文字是寫給專業人士看的,決不假裝弱智,同時有相當體貼細緻,非常符合我的習慣和胃口。所以通常在某個領域有了Richter的書,我就不會去看別人的書了。

       對於某些讀者來說,Marshall Brain的Win32: System Service 3/e(中文名《深入學習:Win32系統服務開發與執行個體》,電子工業出版社“深入學習”系列)和Johnson Hart的Win32 System Programming 2/e(中文名《 Win32系統編程—Windows 2000應用程式開發指南(第二版) 》,中國電力出版社)都是不錯的選擇。兩本書的論述都不如Richter深入,但是例子精當,講解恰到好處。Brain的書覆蓋面很廣,例子非常有啟發性,而Hart的書最適合從UNIX轉到Win32的朋友。我發現自己在有閒置時候喜歡啃Richter的書,但是在實踐中需要快速學習解決方案時,反而Brain和Hart的書對我更有協助。所以這兩本書雖然不象Richter那麼必須,但是也是非常實用的補充。

       Petzold Book和Richter的這本書,構成一個連冠一致的系列,一般Win32學習者精讀並且基本掌握這兩本書的主要思想和技術,就可以稱得上是Win32系統開發的專家了。如果說這兩本書的弱點,主要存在兩個方面。其一是兩本書寫作時將Win9X的開發作為一個基本出發點,因此對於Win2000平台的新特性介紹不足。特別是對於Windows 2000服務端高效能軟體的開發,基本上沒有涉及,很多Win32特有的機制也沒有覆蓋到。因此,如果想在Win32方面再上一層樓,可以考慮Jeffrey
Richter的另一本書。

3. Jeffrey Richter, Programming Server-side Application for Microsoft Windows(影印版)北京大學出版社

        知道I/O Completion Port嗎?知道如何在多CPU伺服器上把機器的能力發揮到極至嗎?知道如何利用Windows的logging service嗎?知道如何利用WMI開發服務端程式嗎?即使你是一個Win32開發高手,也許對上述問題也會感到困難。隨著一般應用程式的開發逐漸轉移到Java、.NET或者至少Delphi這樣的RAD平台上,Win32能夠完全發揮威力的最後一個角落,大概就是服務端高效能程式設計了。而如果你想在這個領域有所建樹,Jeffrey Richter的這本書就不可不讀。這本書幾乎是這個領域裡唯一的一本書,而Jeffrey
Richter的實力又保證了這本書的水平達到了相當的高度。讀這本書給人以震撼的快感,你會感歎,Jeffrey Richter對於Windows系統的理解竟能夠達到如此深度!

       這本書跟上面提到的Petzold Book和《 Windows核心編程 》幾乎又是零重疊,所涉及的內容都是進階技術,特別是自Windows 2000以來出現的伺服器軟體開發新技術。與前兩本配合起來,形成了一條從基礎到專家的完整鏈條。在當今業界,仍然使用純Win32開發程式的開發人員,又不少是在金字塔頂端的“高手”級人物。如果說Petzold Book在今天的主要意義在於教育,《 Windows核心編程 》的主要意義在於深化你對系統的理解,那麼這本書中教授的知識是實實在在吃飯的傢伙。因此,對於高手和有志最終成為高手的程式員來說,這本書是一本難得的經典。

下面是針對MFC的:

深入淺出MFC(第二版)侯捷

MFC Windows程式設計(第2版)  Jeff Prosise

Visual C++ 技術內幕(第4版)David Kruglinski

深入解析MFC George Shepherd

Visual C++.NET 技術內幕(第6版) David Kruglinski

貌似孫鑫老師的VC++深入詳解也很不錯,因為網上可以下載配套視頻,自學很方便的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.