标题:侯捷推荐书籍




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

动机

之前,在学校的演讲场合中,我总会推荐各领域的好书给大家。後来觉得抄写书名和作者,很费时间,而 <无责任书评> 以及时而发表的文章中,又已有这些书籍的列表和详尽介绍,所以慢慢就不再现场抄写了,直接请大家到 BBSNews)找文章,或查阅 <无责任书评>

但又总是知道,不是每个人都常常上网,也不是每个人都刚好能够看到那些书评文章。新来者众,他们或许更不知道有这些资讯。

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 的密合度上,当可令人放心。本书之 errata 网址:http://people.we.mediaone.net/stanlipp/index.html

Thinking in C++
by Bruce Eckel, Prentice Hall 1995, 813 pages
未见译本

也属「C++ 百科」类书。口碑甚佳,唯目录所列页次与实际页次 offset 41/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++ 物件模型/ /1998

适合给已有 C++ 经验的人阅读。可为你扎下 C++ 内部机制的深厚基础。原文书笔误极多(100 个以上,大大小小),影响阅读甚巨,建议读中译本。对大部份人而言,chap3,4 可带来最大边际效益。

Effective C++
by Scott Meyers, Addison Wesley 1992, 206 pages
陈泰维译/Effective C++ 中译本/和硕/1997

以条列方式列出 50 条宝贵的程式经验。每一条均有深入的原理说明。适合有 C++ programming 经验者。本书已有第二版,以下资料查自 www.amazon.com256 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 松岗有译本。

崇高的地位,无瑕的口碑,完整的规划,伟大的销售量;骇人的页数,骇人的尺寸,骇人的重量,骇人的价格。是 SDKWindows APIProgramming 的近乎全典,适合入门亦适合进阶。

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, WindowProchooks, 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, Add
ison Wesley 1996, 709 pages
未见译本

市面上探讨 MFC 组织架构之书,以此书为最。对於资深之MFC programmer 可带来程式设计以外的另一层帮助,当然这层帮助最後也会回映到程式设计上来。适合 MFC seniorMFC 功力无三两三者,不要轻率想过梁山。

■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 MTSMicrosoft Transaction Server)应用程式。

Understanding ActiveX and OLE - A Guide for Developers & Managers
by David Chappell, Micro
soft Press 1996, 328 pages
黄俊翔译/ ActiveX/OLE 技术手册/松格/1997

一本着重观念的书籍。没有技术背景的人,大概只能看 3 分钟。虽然书名副标显示经理人也可以看,但除非这位经理人刚从 COM/ActiveX 开发小组中调过来不满半年,否则我不相信。此书做为观念总整理是不错的,搭配前述硬梆梆的 COM 技术书籍,颇得另番滋味。

■Windows Registry


Inside the Windows 95 Registry
by Ron Petrus
ha, 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 程式设计师专辑/ /1993

极佳的 Assembly programming 手册,内容详尽。为了解某些反组译(除错)出来的低阶动作,我仍时常藉助本书。

--- the end