精華區beta CompBook 關於我們 聯絡資訊
【主廚推薦 侯捷菜單】 侯捷 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