【主廚推薦 侯捷菜單】
侯捷 jjhou@ccca.nctu.edu.tw
1999.01.14 第一次發表於
清大.楓橋驛站(140.114.87.5).電腦書訊版(CompBook)
----------------------------------------------------
●讀者來函
> 侯先生您好:
> 對於您寫文章及書籍的功力早就耳有所聞。最近再拿起 <無責任書評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 COBRA)
●動機
之前,在學校的演講場合中,我總會推薦各領域的好書給大家。後來
覺得抄寫書名和作者,很費時間,而 <無責任書評> 以及時而發表的
文章中,又已有這些書籍的列表和詳盡介紹,所以慢慢就不再現場抄寫
了,直接請大家到 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 中文版/碁峰(預定 1999/09 完成)
在「C++ 百科」類書中,與 The C++ Programming Language 齊名,
親和性較佳。老字號,有口碑。副作者 Josee Lajoie 是 ANSI/ISO
C++ Standard 委員會的核心語言工作小組主席,因此本書在與
C++ Standard 的密合度上,當可令人放心。
★ Thinking in C++
by Bruce Eckel, Prentice Hall 1995, 813 pages
未見譯本
也屬「C++ 百科」類書。口碑甚佳,唯目錄所列頁次與實際頁次 offset 4。
1/e 年代過於陳舊,當此 C++ Standard 已定案之際,應屬過時。
印象中已有 2/e。
★ C++ Standard
ISO/IEC 14882,1998 "Programming Language - C++", 748 pages
不可能有人翻譯,翻譯了也不可能有人願意出版 :)
醉心學術以及喜歡看 definition 的人,一定會喜歡。有此資料在手,
與人爭辯 C++ 時可使用最大的膽子和最大的分貝。電子版(PDF 格式)
可於 http://webstore.ansi.org/ 購得,US$ 18.0。列印出來裝訂得
美美的,擺在架上足以唬人。
★ The C++ Object Model
by Stanley B. Lippman, Addison Wesley 1996, 280 pages
侯俊傑譯/深度探索 C++ 物件模型/碁峰/1998
適合給已有 C++ 經驗的人閱讀。可為你紮下 C++ 內部機制的
深厚基礎。原文書筆誤極多(100 個以上,大大小小),影響
閱讀甚鉅,建議讀中譯本。對大部份人而言,chap3,4 可帶來
最大邊際效益。
★ Effective C++
by Scott Meyers, Addison Wesley 1992, 206 pages
陳維泰譯/書名?/和碩/199?
以條列方式列出 50 條寶貴的程式經驗。每一條均有深入的原理說明。
適合有 C++ programming 經驗者。
★ More Effective C++
by Scott Meyers, Addison Wesley 1996, 318 pages
有譯本否?
以條列方式列出 35 條寶貴的程式經驗。每一條均有深入的原理說明。
適合有 C++ programming 經驗者。
★ 多型與虛擬(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 程式設計指南/碁峰/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
未見譯本
灰色的封面,非主流的出版公司,感覺是舊書攤的貨色,但是裡頭
可能有黃金。我尚未閱畢此書,但 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/碁峰/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 programming 無三兩三者,不要輕率想過梁山。
■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 本質論/碁峰/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
一本著重觀念的書籍。沒有技術背景的人,大概只能看 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 user 或
system administrator 看的,不是給 developer 看的。
■Assemble
★ Microsoft Macro Assembler Bible (2/e)
by Barkakati and Hyde, SAMS (Waite Group) 1992, 952 pages
吳啟仁譯/Macro Assembler 程式設計師專輯/碁峰/1993
極佳的 Assembly programming 手冊,內容詳盡。為瞭解某些反組譯
(除錯)出來的低階動作,我仍時常藉助本書。
--- the end
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw