1999.01.14 發表



> 侯先生您好:
> 對於您寫文章及書籍的功力早就耳有所聞。最近再拿起 
> <無責任書評2>來讀更有這種感覺。自己對於您 1999 計劃所著、
> 譯、改版之眾多書籍相當期待,但就如您所說的「有人練書法,
> 有人寫毛筆字,有人拿有毛的筆寫字」,在等待您巨著出來的同
> 時,我也不禁問自己,需要再加強些什麼,才有能力消化您即將出
> 的書呢?我是一個主修資管的大三學生,我認為自己的基礎知識並
> 不深厚,但對於 Windows 的內部原理又極有興趣。我沒有 SDK
> 經驗,更沒有 MFC 概念,對於 C++ 我只能說半生不熟。所以,
> 我有個不情之請,想請侯先生給我一張書單,亦或能告訴我
> 如何才能踏進這一塊系統程式內部的園地?
>
> 讀您的書是我最大的快樂,能讀懂並融會貫通甚至應用則是
> 我最大的希望...
>
> 一位希望能拿有毛的筆寫字的忠實讀者
> Eddie Fu


●少年當立凌雲志

當然,Eddie 絕不只是希望「拿有毛的筆寫字」而已,他應該是希望達到書法的境界,只是不好意思說出來。

Eddie 和其他許多年輕朋友(以及曾經的我)一樣,可能不太敢對自己(和別人)宣示:「我要如何如何...,我要達到怎樣怎樣的目標...」。

為人不必驕傲,但需立志高遠,如高山崴巍,如水流湯湯。

●我對 Eddie 的建議

如果你最終的標的平台是 Windows,以下是我的建議程序:

1. C/C++ (console mode 練基本功。尤重 polymorphism 觀念之建立)
2. SDK(瞭解 message based, event driven 之觀念後,即可嘗試 MFC)
3. MFC programming (or BCB programming)
4. Windows OS 觀念(亦可與 SDK programming 並進學習)
5. COM(or CORBA)

●動機

之前,在學校的演講場合中,我總會推薦各領域的好書給大家。後來覺得抄寫書名和作者,很費時間,而 <無責任書評> 以及時而發表的文章中,又已有這些書籍的列表和詳盡介紹,所以慢慢就不再現場抄寫了,直接請大家到 BBS(News)找文章,或查閱 <無責任書評>。

但又總是知道,不是每個人都常常上網,也不是每個人都剛好能夠看到那些書評文章。新來者眾,他們或許更不知道有這些資訊。

1998/10/30 在輔大的演講中,我答應把一些經典好書重列一份,載於 BBS。遲遲未能整理出來的原因是,我真的很忙碌;不忙於工作的時候,則忙著休息。
收到 Eddie 的信,又有了動機。於是將書單整理於下,並加上個人觀感。書單中缺乏 C 語言書籍,實是因為我學習 C 語言的時代距今已太過久遠,而目前書肆中的 C 語言書籍我都很陌生。

我的主要閱讀範圍在:

o. C++/OOP
o. SDK programming
o. Visual C++/MFC programming
o. Windows OS
o. Windows Driver programming
o. COM/OLE/ActiveX

書單中絕大部份是英文書,中文書方面只列出侯捷自己的作品。列出自己的作品是因為作者本人當然最清楚自己作品的份量,而我有信心薦之;未列出他人的作品是因為其他中文書籍我閱歷不多,實在不敢置一詞。

原文書方面,我把我所知道的中譯本列出,但並非就此代表我的推薦。中譯本好壞與否,請自行找朋友師長探探口碑。

有些中譯本我手上沒有,但殘留有逛書店時的印象,那麼其書名年份譯者等詳細資料就可能有所缺漏。若網友知道請協助補上。

●侯捷書單 & 個人觀感

以下只列各主題之奠基好書。各式各樣之次主題,不列;浩瀚書海中的其他好書,囿於侯捷的閱讀範圍與能力,遺珠難免。

■C:

侯捷學習 C 語言的時代距今已太過久遠,而目前書肆中的 C 語言書籍我都很陌生,所以沒有辦法推薦。

■C++:

★ The C++ Programming Language (3/e)
by Bjarne Stroustrup, Addison Wesley 1997, 910 pages
葉秉哲譯/C++ 程式語言/儒林(聽說已在後製作階段)

屬「C++ 百科」級的書。此書可謂 C++ 原典,具權威性,由 C++ 之父所著。連 ANSI C++ 制定時都得參考此書。不論是內容深度或文字風格,都不適合生手,但很適合做為進階研究或參考查閱壯膽之用。原文書之code 編排令我感到不舒服,行文之間學院派的味道頗重。本書為與C++ Standard 相映合,有份量極重之 errata,務請讀者上網下載。網址:???

★ C++ Primer (3/e)
by Stanley B. Lippman & Josee Lajoie, Addison Wesley 1998, 1237 pages
侯俊傑譯/C++ Primer 中文版/眳p(預定 1999/09 完成)

在「C++ 百科」類書中,與 The C++ Programming Language 齊名,親和性較佳。老字號,有口碑。副作者 Josee Lajoie 是 ANSI/ISO C++ Standard 委員會的核心語言工作小組主席,因此本書在與C++ Standard 的密合度上,當可令人放心。本書之 errata 網址:http://people.we.mediaone.net/stanlipp/index.html

★ Thinking in C++
by Bruce Eckel, Prentice Hall 1995, 813 pages
未見譯本

也屬「C++ 百科」類書。口碑甚佳,唯目錄所列頁次與實際頁次 offset 4。1/e 年代過於陳舊,當此 C++ Standard 已定案之際,實屬過時。2/e 已在 beta 版,請參考:http://www.BruceEckel.com/ThinkingInCPP2e.html

★ C++ Standard ISO/IEC 14882,1998
"Programming Language - C++", 748 pages
不可能有人翻譯,翻譯了也不可能有人願意出版 :)

醉心學術以及喜歡看 definition 的人,一定會喜歡。有此資料在手,與人爭辯 C++ 時可使用最大的膽子和最大的分貝。電子版(PDF 格式)可於
http://webstore.ansi.org/ 購得,US$ 18.0。列印出來裝訂得美美的,
擺在架上足以唬人。

Inside the C++ Object Model
by Stanley B. Lippman, Addison Wesley 1996, 280 pages
侯俊傑譯/深度探索 C++ 物件模型/眳p/1998

適合給已有 C++ 經驗的人閱讀。可為你紮下 C++ 內部機制的深厚基礎。原文書筆誤極多(100 個以上,大大小小),影響閱讀甚鉅,建議讀中譯本。對大部份人而言,chap3,4 可帶來最大邊際效益。

★ Effective C++
by Scott Meyers, Addison Wesley 1992, 206 pages
陳泰維譯/Effective C++ 中譯本/和碩/1997

以條列方式列出 50 條寶貴的程式經驗。每一條均有深入的原理說明。適合有 C++ programming 經驗者。本書已有第二版,以下資料查自 www.amazon.com:256 pages 2nd edition (September 1997) Addison-Wesley Pub Co; ISBN: 0201924889

★ More Effective C++
by Scott Meyers, Addison Wesley 1996, 318 pages
未見譯本

以條列方式列出 35 條寶貴的程式經驗。每一條均有深入的原理說明。適合有 C++ programming 經驗者。此書將與 Effective C++ 合併出光碟版,可參考
http://meyerscd.awl.com/DEMO/INDEX.HTM

多型與虛擬(Polymorphism in C++)340 pages
by 侯俊傑著/松崗/1998/340頁

在 C++ 語法粗具的基礎上,直接把讀者導引到最核心最重要的物件導向觀念,並且在建立這個觀念的過程中,提供足夠的必要基礎。第5章展示如何建立一個 C++ framework 的底層基礎建設(以 MFC 為本),第6章帶領讀者從 C++ Object Model 躍向 Component Object Model。適合對 C++ 有點認識但一知半解者。

★ Large Scale C++ Software Design
by John Lakos, Addison Wesley 1996, 845 pages
未見譯本

想吸收 C++ 大型軟體經驗的人,可資參考。



■SDK programming:

★ Programming Windows (5/e)
by Charles Petzold, Microsoft Press 1998, 1479 pages
新版 Programming Windows 尚未見有譯本。 前一版 Programming Windows 95 松格有譯本。 再前一版 Programming Windows 3.1 松崗有譯本。

崇高的地位,無瑕的口碑,完整的規劃,偉大的銷售量;駭人的頁數,駭人的尺寸,駭人的重量,駭人的價格。是 SDK(Windows API)Programming 的近乎全典,適合入門亦適合進階。

★ Windows 95 : A Developer's Guide
by Jeffrey Richter, M&T Books 1995, 619 pages
李書良譯/侯俊傑總監/Windows 95 程式設計指南/眳p/1997
前一版(for Win3.1)譯本 Windows 程式設計實務(二)/旗標

空谷幽蘭,一本鮮為人知的絕佳書籍。進階用,主題包括 anatomy of RegisterClass, CreateWindow, WindowProc,hooks, subclassing, superclassing, processing keystrokes...。無 SDK programming 基礎者勿試。

Advanced Windows (3/e)
by Jeffrey Richter, Microsoft Press 1997, 1048 pages
張永慶譯/深入 Windows 程式設計/松崗/1998

從 API 層面下掘 Windows 作業系統。主題包括 processes, threads, memory architecture, thread synchronization, DLL, TLS, File system, Device I/O, Unicode...。本書亦可歸類於Windows 作業系統類。無 SDK programming 基礎及作業系統基本概念者勿試。

■VxD and system programming

System Programming for Windows 95
by Walter Oney, Microsoft Press 1996, 715 pages
侯俊傑譯/Windows 95 系統程式設計/松崗/1998

前半部講 Win95 作業系統的 system programming 基礎概念(偏重虛擬機器),中段介紹 VxD programming 概念,後半部以 VxDs 實務為主。內容豐富,進階實務兩相宜。書中程式方法:C/DDK and C++/VToolsD 都有。

★ Writing Windows VxDs and Device Deviers (2/e)
by Karen Hazzah/R&D Books 1997, 480 pages
未見譯本

前半部講 Win95 的虛擬機器觀念,中段介紹 VxD programming 基礎,後半部以 VxDs 及 DLL Drivers 實務為主。此書與 <System Programming for Windows 95> 各擅勝場,1/e 的圖片尤令人印象深刻。書中程式方法:C/DDK。

■Windows O.S(or System Programming)

Windows 95 System Programming Secrets
by Matt Pietrek, IDG Books 1996, 780 pages
侯俊傑譯/Windows 95 系統程式設計大奧秘/旗標/1997

侯捷評語:黃娟少婦,外孫虀臼(借楊修語)。一本絕妙好書,挖掘 Windows 95 作業系統對於 processes, modules, threads, address space, memory context, context switch, executable file format... 的實作方式,以資料結構與虛擬碼方式呈現。閱讀此書可對 Windows 作業系統層面有透徹認識,最大功用不在寫出別人寫不出的程式,而在「從此胸中自有丘壑」的從容感。這些系統基本觀念在 Windows NT 之下不可能有太大變化。無 SDK programming 基礎及作業系統基本概念者勿試。書中程式方法:C/SDK

★ Advanced Windows 3/e
by Jeffrey Richter, Microsoft Press 1997, 1048 pages
張永慶譯/深入 Windows 程式設計/松崗/1998

從 API 層面下掘 Windows 作業系統。主題包括 processes, threads, memory architecture, thread synchronization, DLL, TLS, File system, Device I/O, Unicode...。無 SDK programming 基礎及作業系統基本概念者勿試。書中程式方法:C/SDK

★ Inside Windows NT (2/e)
by David A. Solomon, Microsoft Press 1998, 528 pages
未見譯本

此應是目前關於 Windows NT 作業系統的最深入書籍,談的都是作業系統基本教義派的主題:system architecture, system mechanisms, processes and threads, memory management, security, I/O system, file system...,並教導以各式工具觀察系統行為與效能。無作業系統基本概念者勿試。

■Windows NT kernel mode driver:

★ The Windows NT Device Driver Book
by Art Baker, Prentice Hall 1996, 522 pages
未見譯本

此書完全探討 Windows NT 的 kernel mode driver,硬派!讀者需具備以下背景:1. 有基本的 Windows NT 使用經驗,包括 logging in,安裝各式 drivers...。2. 有 C 程式設計經驗。3. 有 Win32 user mode 程式設計經驗者佳。4. 你必須瞭解你的硬體,才能為它寫出 driver。

★ Windows NT Device Driver Development
Peter G. Viscarola & W.Anthony Mason, MTP publishing 1999, 684 pages
眳p正在翻譯

灰色的封面,非主流的出版公司,感覺是舊書攤的貨色,但是裡頭可能有黃金。我尚未閱畢此書,但 Weipo 兄既然說不錯,肯定錯不了。

■Visual C++/MFC

★ Inside Visual C++ (5/e)
by David Kruglinski, George Shepherd, Scot Wingo, Microsoft Press 1998, 1153 pages 5/e
尚未見有譯本, 4/e 無譯本, 3/e 侯俊傑譯/深入 Visual C++ 4.0/眳p/1996

Visual C++ step by step 的鼻祖。兼顧 Visual 工具使用與程式設計技術。是 Visual C++/MFC programming 書籍中讀者群最廣的一本。本書雖為 MFC 新手而寫,唯 MFC 新手是否可以照單服用,不無疑問。這就和「學習 C++ 是否要切入 C++ object model?何時切入?」的問題如出一轍。此劑服用之後如出現不良症狀,應以 <深入淺出 MFC> 或 <Programming Windows 95 with MFC> 為引。

深入淺出 MFC 第二版(Dissecting MFC 2/e),
by 侯俊傑, 松崗 1997, 940頁

雖然範例不多且無新意,主要以 Visual C++ 標準範例程式 Scribble 為軸,但深入之層面甚具意義。本書主旨在利用 Scribble 的循序漸進,挖掘 MFC framework 的組織架構,重點放在骨幹程式的來龍去脈、runtime type information, dynamic creation, persistence, message mapping, command routing, document/view/template...。適合 MFC 新手。此劑服用之後如出現不良症狀,應以 <多型與虛擬> 及 <Programming Windows> 為引。

★ Programming Windows 95 with MFC
by Jeff Prosise, Microsoft Press 1996, 999 pages
黃昕暐譯/深入 ActiveX/松格/1997

此為與 <Programming Windows 95> 配套之 MFC 版。不重工具之使用,著重 MFC 程式的手工打造過程。在範例設計與 MFC 組織結構的篇幅比例上,頗為得宜。適合 MFC 新手。聽說即將有 2/e。

★ MFC Internals
by Shepherd & Wingo, Addison Wesley 1996, 709 pages
未見譯本

市面上探討 MFC 組織架構之書,以此書為最。對於資深之MFC programmer 可帶來程式設計以外的另一層幫助,當然這層幫助最後也會迴映到程式設計上來。適合 MFC senior。MFC 功力無三兩三者,不要輕率想過梁山。

■COM/OLE/ActiveX

★ Inside COM
by Dale Rogerson, Microsoft Press 1997, 376 pages
黃昕暐譯/深入 COM/松格/1997

很容易上手的一本 COM 入門書。範例設計得簡單明瞭,堪稱COM 之最佳引渡書籍。然而讀者若要對 COM 的來龍去脈有根本性的瞭解,以去除心中揮之不去的障礙,還需 <Essential COM> 第1章的協助。

★ Essential COM
by Don Box, Addison Wesley 1998, 440 pages
侯俊傑譯/COM 本質論/眳p/1999

第1,2兩章適合 COM 入門。後續章節深掘 COM 的工作原理,可能會令不少人吃不消。不過即使只讀懂第1,2章也已完全值回票價,因為寫得太好了。

★ Effective COM
by Don Box etc., Addison Wesley 1999, 220 pages
未見譯本

以條列方式列出 50 條寶貴的程式經驗,每一條均有深入的原理說明。用以改善 COM 和 MTS(Microsoft Transaction Server)應用程式。

★ Understanding ActiveX and OLE - A Guide for Developers & Managers
by David Chappell, Microsoft Press 1996, 328 pages
黃俊翔譯/ ActiveX/OLE 技術手冊/松格/1997

一本著重觀念的書籍。沒有技術背景的人,大概只能看 3 分鐘。雖然書名副標顯示經理人也可以看,但除非這位經理人剛從 COM/ActiveX 開發小組中調過來不滿半年,否則我不相信。此書做為觀念總整理是不錯的,搭配前述硬梆梆的 COM 技術書籍,頗得另番滋味。

■Windows Registry

★ Inside the Windows 95 Registry
by Ron Petrusha, Oreilly 1996, 575 pages
有譯本否?

深深深!只想認識 Windows Registry 之架構與使用方式的人,將會剔到鐵板,但對於有 system programming 能力者,應該是一塊金磚。由於 Registry 本就藏著系統的諸多秘密,能夠規劃 registry 甚至監視 registry,當然也就得以刺探系統的諸多秘密。

★其他的 Registry 書籍

其他的 Registry 書籍,大同小異。主要是給 power users 或 system administrators 看的,not for developers。

■Assemble

★ Microsoft Macro Assembler Bible (2/e)
by Barkakati and Hyde, SAMS (Waite Group) 1992, 952 pages
吳啟仁譯/Macro Assembler 程式設計師專輯/眳p/1993

極佳的 Assembly programming 手冊,內容詳盡。為瞭解某些反組譯(除錯)出來的低階動作,我仍時常藉助本書。

--- the end


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bjarne.jpg (19218 bytes)

cpp-primer.jpg (20871 bytes)

bruce.jpg (25641 bytes)

inside-cpp-object-model.jpg (16988 bytes)

meyers1.jpg (17528 bytes)

meyers2.jpg (15071 bytes)

large-scale-cpp-software-design.jpg (16997 bytes)

 

petzold5.jpg (18772 bytes)

win95adg-e.jpg (22538 bytes)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

masm-bible.jpg (16192 bytes)