﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-健康，快乐，勇敢的宁帅！！-文章分类-书评及新书介绍</title><link>http://www.cppblog.com/ningfangli-blog/category/3113.html</link><description>努力、努力、再努力！
没有什么能阻止我对知识的渴望。</description><language>zh-cn</language><lastBuildDate>Tue, 27 May 2008 14:55:11 GMT</lastBuildDate><pubDate>Tue, 27 May 2008 14:55:11 GMT</pubDate><ttl>60</ttl><item><title>C++程序设计之四书五经（下篇）---转载</title><link>http://www.cppblog.com/ningfangli-blog/articles/15635.html</link><dc:creator>ningfangli</dc:creator><author>ningfangli</author><pubDate>Fri, 24 Nov 2006 11:56:00 GMT</pubDate><guid>http://www.cppblog.com/ningfangli-blog/articles/15635.html</guid><wfw:comment>http://www.cppblog.com/ningfangli-blog/comments/15635.html</wfw:comment><comments>http://www.cppblog.com/ningfangli-blog/articles/15635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ningfangli-blog/comments/commentRss/15635.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ningfangli-blog/services/trackbacks/15635.html</trackback:ping><description><![CDATA[
		<center>
				<table height="2405" cellspacing="0" cellpadding="0" width="760" bgcolor="#ffffff" border="0">
						<tbody>
								<tr>
										<td valign="top" align="left" width="973" bgcolor="#ffffff" height="305">
												<p class="MsoNormal" style="TEXT-ALIGN: center" align="center">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">程序设计之四书五经（下篇）</span>
														</b>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: center" align="center">
														<?XML:NAMESPACE PREFIX = O /?>
														<o:p>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">《程序员》2004/03</span>
														</o:p>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我在上篇中“盘点”了</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">TCPL</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和<span lang="EN-US" style="COLOR: navy">D&amp;E</span>以及</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">入门教程、高效和健壮编程、</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">模板和泛型编程等方面共十几本<span lang="EN-US">C++</span>好书。冬去春来，让我们继续<span lang="EN-US">C++</span>书籍精彩之旅</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">J</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">标准库</span>
														</b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">当我还在研究院工作时，与同院另外两家研究所合作开发过一个大型水利枢纽调度集成项目。我们三家软件系统之间都要相互通信。在调试通讯模块时，细心的客户（一名好学的系统管理员）发现对于同一通信规约的解释代码，我的不超过<span lang="EN-US">30</span>行，而对方的则超过了<span lang="EN-US">150</span>行且很难看懂。这位系统管理员很纳闷，我说大家编程风格和习惯不一样，我使用了标准库，而他使用了传统<span lang="EN-US">C</span>编程风格以及他所习惯的另外一些技术。</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">别误会！我绝无贬低这位合作伙伴的意思。事实上，我对那些真正有着深厚的<span lang="EN-US">C</span>编程功力的程序员常常怀有钦佩之心。毕竟，<span lang="EN-US">C++</span>能有今天的成功在很大程度上缘于它深深地植根于<span lang="EN-US">C</span>。作为一名<span lang="EN-US">C++</span>程序员，倘若不熟悉<span lang="EN-US">C++</span>中的<span lang="EN-US">C</span>，我往往会认为他的基本功是不扎实的，他的技术底气是不足的。</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">不过话又说回来，<span lang="EN-US">C++</span>是一种多范型（<span class="serif1"><span lang="EN-US" style="FONT-FAMILY: 宋体">paradigm</span><span style="FONT-FAMILY: 宋体">）</span></span>编程语言，具体采用哪种编程风格，专业程序员应该知道视具体情况而定。作为一名经常需要在现场做即兴开发的项目负责人，为了短平快地解决当务之急，我习惯尽量采用现有的库（和组件）。效率（以及强健性）久经验证的<span lang="EN-US">C++</span>标准库已经摆在那儿了，何乐而不用呢？</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《<span lang="EN-US">C++</span>标准程序库：自修教程与参考手册》，华中科技大学出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这是一本百科全书式的<span lang="EN-US">C++</span>标准库著作，是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法，内容涵盖包括流和本地化在内的整个标准库而不仅仅是<span lang="EN-US">STL</span>。正如本书副标题所示，它首先适合作为教程阅读，尔后又可用作参考手册。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">浅显易懂的写作风格使得这本书非常易读。如果你希望学习标准库的用法并尽可能地发挥其潜能，那你必须拥有这本书。正如网络上所言，这本书不仅仅应该摆在你的书橱中，更应该放到你的电脑桌上。<font color="#0000ff">我向每一位职业<span lang="EN-US">C++</span>程序员强烈推荐。</font></span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Angelika Langer, Klaus Kreft, Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《标准<span lang="EN-US">C++</span>输入输出流与本地化》，人民邮电出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">标准库由<span lang="EN-US">STL</span>、流和本地化三部分构成。关于<span lang="EN-US">STL</span>的书市面上已经有不少，但罕见流和本地化方面的专著。本书是这两个领域中最优秀的一本，迄今为止没有任何一本书比这一本更全面详尽地讨论了流和本地化。如果你不满足于停留在“会用”流库的层面，千万不要错过它。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">2001</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">年夏天，我草草翻阅过这本书的中文版，从内容到包装都给我留下了比较深刻的印象 — 不过负面的居多一些。<span lang="EN-US">2003</span>年秋天，无意中得知某网络书店正以超低价格甩卖这本书的中译本，情不自禁，一阵唏嘘。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《<span lang="EN-US">Effective STL</span>（影印版）》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">读完<span lang="EN-US">Scott </span>的<span style="COLOR: navy">《<span lang="EN-US">Effective C++</span>》</span>和<span style="COLOR: navy">《<span lang="EN-US">More Effective C++</span>》</span>的中译本之后，我一直期待这本书的中文版。我从潘爱民先生的个人主页上了解到，他和他的合作伙伴似乎早已完成了这本书的翻译工作，可惜至今市面上仍不得见。幸运的是，我们可以看到它的原版。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">本书是使用<span lang="EN-US">STL</span>的程序员必读之作。在这本书中，<span lang="EN-US">Scott</span>向我们讲述<span lang="EN-US">STL</span>容器和算法的工作机制以及如何以最佳方式使用它们。和<span lang="EN-US">Scott</span>的其他作品一样，这本书的写作风格清晰、精确，具有极佳的可读性。看过这本书以后，我想你也许会和我以及其他<span lang="EN-US">C++</span>程序员一样产生这样的想法：<span lang="EN-US">Scott</span>什么时候会写出一本“<span lang="EN-US">More Effective STL</span>”？</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">关于<span lang="EN-US">STL</span>，我还提醒你留心<span lang="EN-US">Matthew H. Austern</span>的<span style="COLOR: navy">《<span lang="EN-US">Generic Programming and the STL: Using and Extending the C++ Standard Template Library</span>》（《泛型编程与<span lang="EN-US">STL</span>》，中国电力出版社）</span>。这本书散发着浓厚的学院气息。</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Andrew Koenig</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和<span lang="EN-US">Barbara Moo</span>在<span style="COLOR: navy">《<span lang="EN-US">Accelerated C++: Practical Programming by Example</span>》</span>一书末尾郑重推荐另外两本进阶好书（除了他们自己的<span style="COLOR: navy">《<span lang="EN-US">Ruminations on C++</span>》</span>外），其中一本是<span lang="EN-US" style="COLOR: navy">TCPL</span>，另外一本就是本书！</span>
												</p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">网络编程</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在网络编程时代，<span lang="EN-US">C++</span>应该扮演着怎样的角色，让<span lang="EN-US">ACE</span>（<span lang="EN-US">Adaptive Communications Environment</span>）来告诉你。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns<br /><br />Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《<span lang="EN-US">C++</span>网络编程，卷<span lang="EN-US">1</span>：运用<span lang="EN-US">ACE</span>和模式消除复杂性》，华中科技大学出版社<br /><br />《<span lang="EN-US">C++</span>网络编程，卷<span lang="EN-US">2</span>：基于<span lang="EN-US"> ACE </span>和框架的系统化复用》，电子工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">采用<span lang="EN-US">C++</span>进行企业级网络编程，目前<span lang="EN-US">ACE</span>（以及这两本书）是一个值得考虑的选择。<span lang="EN-US">ACE</span>是一个面向对象、跨平台、开放源码的网络编程框架，目标在于构建高性能网络应用和中间件。<span lang="EN-US">Douglas</span>是<span lang="EN-US">ACE</span>的创始人，<span lang="EN-US">Stephen</span>则已为<span lang="EN-US">ACE</span>提供了数年的技术支持和顾问服务，两位都是<span lang="EN-US">ACE</span>社群（是的，<span lang="EN-US">ACE</span>的影响和实际应用的程度已经形成了一个社群）的专家。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">ACE</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">并不单单被大学和研究所追捧，它已经被成功地应用于世界上成千上万个商业应用中。在电信、宇航、医药和财经领域的网络系统中，<span lang="EN-US">ACE</span>已经并继续发挥着重要的作用。如果你准备开发高性能通讯系统，你应该考虑考虑这一汇集世界顶尖专家智慧的成果。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">除了使用<span lang="EN-US">C++</span>面向对象设计技术和模板等高级语言特性外，<span lang="EN-US">ACE</span>还运用了大量的模式。</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>网络编程》</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">卷<span lang="EN-US">1</span>和卷<span lang="EN-US">2</span>并不仅仅教你关于<span lang="EN-US">ACE</span>的方方面面，它还会教给你模式和通用框架设计等高级技术等。所以，作为一名中、高级<span lang="EN-US">C++</span>程序员，即使你很少进行正儿八经的<span lang="EN-US">C++</span>网络程序设计，阅读这两本书同样可以从中受益。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是的，并非所有网络应用都要使用<span lang="EN-US">Web</span>服务器（以及其他应用服务器）和重量级组件模型，换个思路，它们或许也可以从轻量级的<span lang="EN-US">ACE</span>组件中获益。</span>
												</p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">杂项</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">以下这几本书之所以被列入“杂项”单元，只是因为我没有考虑出更合适的归类方法，它们和上面的书籍一样，值得一读。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Bruce Eckel, Thinking in C++, Volume 1: Introduction to Standard C++ (2nd Edition)<br /><br />Bruce Eckel, Thinking in C++, Volume 2: Practical Programming (Second Edition)</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《<span lang="EN-US">C++</span>编程思想（第<span lang="EN-US">2</span>版）第<span lang="EN-US">1</span>卷：标准<span lang="EN-US">C++</span>导引》，机械工业出版社<br /><br />《<span lang="EN-US">C++</span>编程思想（英文版 第<span lang="EN-US">2</span>版）》，机械工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Thinking in C++</span>》</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的第<span lang="EN-US">1</span>版于<span lang="EN-US">1996</span>年荣获“软件研发”杂志评选的图书震撼大奖。最新推出的第<span lang="EN-US">2</span>版对内容进行了大幅改写和调整，以反映</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">标准化带来的影响以及</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">近几年面向对象领域最新研究和实践成果。“输入输入流”、“多重继承”、“异常处理”和“运行时类型识别”等高级主题连同<span lang="EN-US">C++</span>标准化以后增加的一些内容则被放入第二卷中。<span lang="EN-US">Bruce</span>是一名经验丰富的<span lang="EN-US">C++</span>讲师和顾问，其培训和写作经验都是世界一流水准，他的作品比那些“玩票”的技术人员写的东西更能吸引读者。事实上，在同类图书中，对于大多数读者而言，<font color="#0000ff">这本书的可读性要超过</font><span lang="EN-US" style="COLOR: #0000ff">TCPL</span><font color="#0000ff">和</font><span style="COLOR: #0000ff">《<span lang="EN-US">C++ Primer</span>》</span><font color="#0000ff">。</font>顺带一提，访问作者的站点，你可以先睹第二卷的风采。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Andrew Koenig, Barbara E. Moo, Ruminations on C++: A Decade of Programming Insight and Experience</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《<span lang="EN-US">C++</span>沉思录》，人民邮电出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Andrew</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是世界上屈指可数的<span lang="EN-US">C++</span>专家。</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这是一本关于<span lang="EN-US">C++</span>编程思想和程序设计技术而非语言细节的著作</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。如果你已经具有一定的基础，这本书将教你在进行<span lang="EN-US">C++</span>编程时应该怎样思考，应该如何表达解决方案。整本书技术表达透彻，文字通俗易懂。<span lang="EN-US">Bjarne</span>这样评价这本书：本书遍布“<span lang="EN-US">C++</span>是什么、<span lang="EN-US">C++</span>能够做什么”的真知灼见。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Stanley B. Lippman, Inside The C++ Object Model</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《深度探索<span lang="EN-US">C++</span>对象模型》，华中科技大学出版社<br /><br />《深度探索<span lang="EN-US">C++</span>对象模型（影印版）》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">从编译器的角度观察<span lang="EN-US">C++</span>可以使你知其然并知其所以然。本书探讨了大量的<span lang="EN-US">C++</span>面向对象程序设计的底层运作机制，包括构造函数、函数、临时对象、继承、虚拟、模板的实例化、异常处理、运行期类型识别等，另外还介绍了一些在实现<span lang="EN-US">C++</span>对象模型过程中做出的权衡折衷。喜欢刨根问底的<span lang="EN-US">C++</span>程序员不要错过这本书。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented software</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
																<br />
																<br />《设计模式：可复用面向对象软件的基础》，机械工业出版社<br /><br />《设计模式：可复用面向对象软件的基础（英文版）》，机械工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">设计可复用的面向对象的软件，你需要掌握设计模式。本书并非专为<span lang="EN-US">C++</span>程序员而写，但它采用了<span lang="EN-US">C++</span>（以及<span lang="EN-US">Smalltalk</span>）作为主要示例语言，<span lang="EN-US">C++</span>程序员尤其易于从中受益。四位作者都是国际公认的面向对象软件领域专家，他们将面向对象软件的设计经验作为设计模式详细记录下来。这本书影响是如此深远，以至于四位作者以及本书都被昵称为<span lang="EN-US">GoF</span>（<span lang="EN-US">Gang of Four</span>）。本书学院气息浓厚，行文风格严谨简洁，虽然它不如某些讲解模式的书籍易读，但真正要精准地理解设计模式，本书是终极权威。<font color="#0000ff">学习设计模式，这本书需要一而再、再而三的咀嚼。</font>顺带一句：请将设计模式化作开拓思维的钥匙，切莫成为封闭思维的枷锁。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">还有一些<span lang="EN-US">C++</span>好书值得一读，恕此处无法一一列出。例如<span lang="EN-US">John Lakos</span>的著作<span style="COLOR: navy">《<span lang="EN-US">Large-Scale C++ Software Design</span>》（《大规模<span lang="EN-US">C++</span>程序设计》，中国电力出版社）</span>和侯捷先生的<span style="COLOR: navy">《<span lang="EN-US">STL </span>源码剖析》（华中科技大学出版社）</span>等。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">STL </span>源码剖析》</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是一本很有特色的书，但我认为它还可以更好。我个人期待侯捷先生自第一版发行以来经过对模板技术的沉淀和再思考之后，再写一本剖析得更深入、更透彻并且更全面的“第二版”。遗憾的是，侯捷先生在完成</span>
														<span class="small1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">《</span>
														</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">C++ Templates: The Complete Guide</span>
														<span class="small1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">》一书的翻译后似乎决定暂时告别模板、泛型编程和<span lang="EN-US">STL</span>领域</span>
														</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</span>
												</p>
												<p class="MsoNormal">
														<font color="#008000">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">2004年3月31日补充：</span>
														</font>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																<font color="#008000">我目前最常查阅的两本参考书是《C++标准程序库》和《STL源码剖析》。当然了，这与我年内的写作计划有很大的关系。</font>
														</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">使用<span lang="EN-US">C++</span>成功开发大规模软件系统，不仅需要很好地理解大多数<span lang="EN-US">C++</span>书籍中讲述的逻辑设计问题，更需要掌握<span style="COLOR: navy">《大规模<span lang="EN-US">C++</span>程序设计》</span>中讲述的物理设计技术。当然，这本书的确有点过时了，不过，如果你的精力和金钱都比较宽绰，买一本看看并无坏处。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">至此，我想有必要声明一下，有一些（好）书没有得到推荐，主要原因如下：</span>
												</p>
												<ul>
														<li>
																<p class="MsoNormal">
																		<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">以上这些书已经足够多、足够好了。</span>
																</p>
														</li>
														<li>
																<p class="MsoNormal">
																		<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我不会推荐通过正常渠道很难购买到的书籍 — 不管是中文版还是英文版。</span>
																</p>
														</li>
														<li>
																<p class="MsoNormal">
																		<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">作（译）者名气大小不影响我的推荐。我们是在看书，不是看人。</span>
																</p>
														</li>
														<li>
																<p class="MsoNormal">
																		<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我不会推荐我从来没有看过的书。我至少要看过其中的某个版本（包括电子档）。这个“看”，一般指“认真阅读”，不过有一些也只能算是“浏览”。</span>
																</p>
														</li>
												</ul>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">结语</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">作为一名普通技术写译者，我深知技术创作和翻译的艰辛（和快乐），并多多少少了解一些有关技术书籍创作、翻译、制作、出版以及市场推介背后的细节。今天，我不会再对一本看上去差强人意的图书信口开河。罗列同一本书的各种版本的用意只在于为你多提供一些信息，让你多一种选择。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在本文成文的后期，我给<span lang="EN-US">Bjarne</span>写了一封信，请教如果他来写这篇文章会怎么写。他给了我简明扼要的建议。在肯定以上列出的绝大部分图书都是世界顶尖水平的<span lang="EN-US">C++</span>著作的同时，<span lang="EN-US">Bjarne</span>提醒我别忘了向专家级程序员推荐<span style="COLOR: navy">《<span lang="EN-US">The C++ Standard : Incorporating Technical Corrigendum No. 1</span>》</span></span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">。</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这本书是</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">标准规范的“图书版”，<span lang="EN-US">Bjarne</span>亲自为之作序。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Bjarne</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">还友好地提醒我，在我的推荐列表中没有哪一本有助于<span lang="EN-US">C++</span>程序员进行<span lang="EN-US">Windows</span>编程 — 这正是我的本意。在这篇文章中，我只推荐、点评平台中立的<span lang="EN-US">C++</span>著作（网络编程除外） — 和操作系统无关，和集成开发环境无关，我甚至幻想它们和编译器也无关。你可以根据业务开发需要，选读自己喜爱的领域相关的<span lang="EN-US">C++</span>书籍。</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">说到“系统无关、平台中立”，我不由得想起了“抽象层”的概念。开发实际应用的<span lang="EN-US">C++</span>程序员通常工作于特定操作系统、特定开发环境和特定业务领域之中，而对标准<span lang="EN-US">C++</span>和<span lang="EN-US">C++</span>标准库扎实而深刻的把握，无疑是你得以在不同的操作系统、不同的开发环境以及不同的业务领域之间纵横驰骋的“抽象”本钱。</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> </span>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: right" align="right">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">荣耀</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																<br />2004</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">年<span lang="EN-US">1</span>月<br />南京师范大学</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																<br />www.royaloo.com</span>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top" align="left" width="910" bgcolor="#ffffff" height="15">
										</td>
								</tr>
								<tr>
										<td valign="bottom" align="left" width="973" bgcolor="#ffffff" height="16">
										</td>
								</tr>
						</tbody>
				</table>
		</center>
<img src ="http://www.cppblog.com/ningfangli-blog/aggbug/15635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ningfangli-blog/" target="_blank">ningfangli</a> 2006-11-24 19:56 <a href="http://www.cppblog.com/ningfangli-blog/articles/15635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++程序设计之四书五经（上篇）---转载</title><link>http://www.cppblog.com/ningfangli-blog/articles/15636.html</link><dc:creator>ningfangli</dc:creator><author>ningfangli</author><pubDate>Fri, 24 Nov 2006 11:56:00 GMT</pubDate><guid>http://www.cppblog.com/ningfangli-blog/articles/15636.html</guid><wfw:comment>http://www.cppblog.com/ningfangli-blog/comments/15636.html</wfw:comment><comments>http://www.cppblog.com/ningfangli-blog/articles/15636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ningfangli-blog/comments/commentRss/15636.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ningfangli-blog/services/trackbacks/15636.html</trackback:ping><description><![CDATA[
		<center>
				<table height="2507" cellspacing="0" cellpadding="0" width="760" bgcolor="#ffffff" border="0">
						<tbody>
								<tr>
										<td valign="top" align="left" width="973" bgcolor="#ffffff" height="305">
												<p class="MsoNormal" style="TEXT-ALIGN: center" align="center">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">程序设计之四书五经（上篇）</span>
														</b>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: center" align="center">
														<?XML:NAMESPACE PREFIX = O /?>
														<o:p>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">《程序员》2004/0</span>
														</o:p>
														<span lang="en-us" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">2</span>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: center" align="center">　</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力，使其极具学术研究价值和工业价值。和<span lang="EN-US">C</span>语言一样，<span lang="EN-US">C++</span>已经在许多重要的领域大获成功。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">然而，一个不可否认的现实是，在低阶程序设计领域，<span lang="EN-US">C++</span>挤压着<span lang="EN-US">C</span>同时也在承受着<span lang="EN-US">C</span>的强烈反弹，而在高阶程序设计领域，<span lang="EN-US">Java</span>和<span lang="EN-US">C#</span>正在不断蚕食着<span lang="EN-US">C++</span>的地盘。也许<span lang="EN-US">C++</span>与<span lang="EN-US">C</span>合为一体永远都是一个梦想，也许<span lang="EN-US">Java</span>和<span lang="EN-US">C#</span>的狂潮终将迫使<span lang="EN-US">C++</span>回归本位 — 回到它有着根本性优势的开发领域：低级系统程序设计、高级大规模高性能应用设计、嵌入式程序设计以及数值科学计算等。果真如此，我认为这未尝不是一件好事。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">吸引如此之多的智力投入，以至于这个领域的优秀作品，包括重量级的软件产品、程序库以及书籍等，数不胜数。文题“<span lang="EN-US">C++</span>程序设计之四书五经”一个不太严格的含义是：<span lang="EN-US">C++</span>程序设计之四书 ⅹ 五经。是的，在本文（及其下篇）中，我将分门别类推荐<span lang="EN-US">20</span>多本<span lang="EN-US">C++</span>好书，你可以根据自己的需要选读。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">TCPL</span>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和<span lang="EN-US">D&amp;E</span></span>
														</b>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">TCPL</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和<span lang="EN-US">D&amp;E</span>分别是<span style="COLOR: navy">《<span lang="EN-US">The C++ Programming Language</span>》</span>和<span style="COLOR: navy">《</span></span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">The Design and Evolution of C++</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">》</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的简称，均出自<span lang="EN-US">Bjarne Stroustrup</span>之手<span style="COLOR: navy">。</span></span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我将它们</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">单列出来，首先</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是因为</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Bjarne</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是<span lang="EN-US">C++</span>语言的创建者，然后是因为比“首先”那个原因更重要的原因：这两本书是<span lang="EN-US">C++</span>领域毋庸置疑的杰作。说它们是<span lang="EN-US">C++</span>语言圣经，并不为过。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>程序设计语言（特别版）》，机械工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>程序设计语言（特别版）（英文影印版）》，高等教育出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">迄今为止，</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">TCPL</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是除了<span lang="EN-US">C++</span>标准文献之外最权威的<span lang="EN-US">C++</span>参考手册。和大多数人的看法不大一样，我认为<span lang="EN-US">Bjarne</span>的文字语言并不逊色于他所创建的程序语言，至少我喜欢这种学院气息浓厚的作品。本书对<span lang="EN-US">C++</span>语言的描述轮廓鲜明、直截了当。它从<span lang="EN-US">C++</span>语言创建者的角度来观察<span lang="EN-US">C++</span>，这是任何别的作者和书籍做不到的 — 没有任何人比<span lang="EN-US">Bjarne</span>自己更清楚该怎么来使用<span lang="EN-US">C++</span>。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这是一本严肃的著作，以中、高级<span lang="EN-US">C++</span>开发人员为目标读者。如果你是一名有经验的<span lang="EN-US">C++</span>程序员，需要了解更加本质的<span lang="EN-US">C++</span>知识，本书正是为你而写。它不是那种让你看了会不断窃喜的小书，需要用心体会，反复咀嚼。在阅读过程中，请特别留心<span lang="EN-US">Bjarne</span>先生强调了什么，又对什么一语带过。我个人比较喜欢这本书的第四部分“使用<span lang="EN-US">C++</span>做设计”，这样的内容在类似的程序设计语言书籍中很难看到 — 我甚至认为<span lang="EN-US">Bjarne</span>应该将这部分独立出来单独写一本书。</span>
												</p>
												<p class="MsoNormal">　</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Bjarne Stroustrup, </span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">The Design and Evolution of C++</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>语言的设计和演化》，机械工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>语言的设计和演化（英文版）》，机械工业出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span class="serif1">
																<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">D&amp;E</span>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是一本关于<span lang="EN-US">C++</span>语言设计</span>
														</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">原理、设计决策和设计<span class="serif1"><span style="FONT-FAMILY: 宋体">哲学的专著。</span></span>它清晰地<span class="serif1"><span style="FONT-FAMILY: 宋体">回答了<span lang="EN-US">C++</span>为什么会成为今天这个样子而没有变成另外一种语言。</span></span>作为<span lang="EN-US">C++</span>语言的创建者，<span class="serif1"><span lang="EN-US" style="FONT-FAMILY: 宋体">Bjarne</span><span style="FONT-FAMILY: 宋体">淋漓尽致地展示了他独到而深刻的见解。除了广受赞誉的语言特性外，<span lang="EN-US">Bjarne</span>没有回避那些引起争议的甚至被拒绝的<span lang="EN-US">C++</span>特性，他一一给出了逻辑严密、令人信服的解释。内容涵盖<span lang="EN-US">C++</span>的史前时代、带类的<span lang="EN-US">C</span>、<span lang="EN-US">C++</span>的设计规则、标准化、库、内存管理、多重继承、模板等，对包括异常机制、运行时类型信息和名字空间在内的重要的新特性都分别进行了深入探讨。每一名<span lang="EN-US">C++</span>程序员都应该可以从<span lang="EN-US">Bjarne</span>的阐释中加深对手中这门语言的认识。</span></span></span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: #ffcc00; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">需要再次提醒的是，这两本书知识浓缩，信息量极大，请不要错过<span lang="EN-US">Bjarne</span>每一句看似漫不经意的话。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: #ffcc00; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">入门教程</span>
														</b>
												</p>
												<p class="MsoNormal">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																</span>
														</b> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">学习任何一门语言都需要一个从入门到精通、从新手到高手循序渐进的过程。不过，对于一个所谓的新手而言，究竟是一个完完全全的新手，还是一个熟悉某种别的语言的“新手”，甚至是在某种语言程序设计领域已经颇有建树的高手，很难一概而论？不同的<span lang="EN-US">C++</span>新手需要不同的入门书籍。</span>
												</p>
												<p class="MsoNormal">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																</span>
														</b> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Andrew Koenig, Barbara E. Moo, Accelerated C++: Practical Programming by Example</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Accelerated C++</span>中文版》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span class="serif1">
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																</span>
														</span> </p>
												<p class="MsoNormal">
														<span class="serif1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和市面上大多数<span lang="EN-US">C++</span>教程不同，本书不是从“<span lang="EN-US">C++</span>中的<span lang="EN-US">C</span>”开始讲解，而是始于地道的<span lang="EN-US">C++</span>特性。从一开始就使用标准库来写程序，随着讲述的逐渐深入，又一一解释这些标准库组件所依赖的基础概念。另外，和其他<span lang="EN-US">C++</span>教材不同的是，这本书以实例拉动语言和标准库的讲解，对后两者的讲解是为了给实例程序提供支持，而不是像绝大多数<span lang="EN-US">C++</span>教材那样，例子只是用作演示语言特性和标准库用法的辅助工具。</span>
														</span>
												</p>
												<p class="MsoNormal">
														<span class="serif1">
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																</span>
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">作者在<span lang="EN-US">C++</span>领域的编程实践、教育培训以及技术写作方面都是世界一流水准。<span class="serif1"><span style="FONT-FAMILY: 宋体">我喜欢这种大量使用标准库和<span lang="EN-US">C++</span>语言原生特性的清新的写作风格。在这本教材面前，几乎迄今为止的所有<span lang="EN-US">C++</span>教材都黯然失色或显得过时。尽管这本教材也许对于国内的高校教育来说有些前卫，不过我仍然极力向我的同行们推荐。顺带一提，在</span></span></span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Bjarne</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和我</span>
														<span class="serif1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">最近的一封通信里，他这样评价本书：</span>
														</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">对于有经验的程序员学习<span lang="EN-US">C++</span>而言，这本书可能是世界上最好的一本。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Stanley B.Lippman, Josee Lajoie, </span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">C++ Primer (3rd Edition)</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++ Primer (3RD)</span>中文版》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这本书的名字多少有点让人误解。尽管作者声称这本书是为<span lang="EN-US">C++</span>新手而写，但无论是它的厚度还是讲解的深度都暴露了似乎并非如此。也许说它是一本“从入门到精通”的<span lang="EN-US">C++</span>教程会更合适一些。我个人认为它并不适合完全不懂<span lang="EN-US">C++</span>的初学者 — 在阅读这本书之前，你至少应该先有那么一点<span lang="EN-US">C</span>或<span lang="EN-US">C++</span>的背景知识，或者至少要具有一些其他语言的编程经验。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">尽管这本书省略了一些高级<span lang="EN-US">C++</span>特性的讨论，但仍然可以称得上是迄今为止最全面的<span lang="EN-US">C++</span>学习教程。事实上，如果一名<span lang="EN-US">C++</span>初学者能够扎扎实实地读完本书并对照<span style="COLOR: navy">《<span lang="EN-US">C++ Primer Answer Book</span>》</span>完成全部习题的话，他的水平肯定可以进入职业<span lang="EN-US">C++</span>程序员的行列。我个人认为，即使你已经拥有了<span lang="EN-US" style="COLOR: navy">TCPL</span>，这本书依然有拥有的价值，因为在许多方面它比<span lang="EN-US" style="COLOR: navy">TCPL</span>来得更详细、更易懂。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Stanley B. Lippman, Essential C++</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Essential C++</span>中文版》，华中科技大学出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Essential C++</span>（影印版）》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">可以不太严格地认为这本书是《<span lang="EN-US" style="COLOR: navy">C++ Primer</span><span style="COLOR: navy">》</span>的精简版<span style="COLOR: navy">。</span>本书一一讲述了<span lang="EN-US">C++</span>中最具代表性的主题，包括过程式编程、泛型编程、基于对象编程、面向对象编程、模板编程以及异常处理等。<span lang="EN-US">Stanley</span>将门槛调低到“具有其他语言程序设计经验”的<span lang="EN-US">C++</span>新手所能接受的最基本的层次，使他们能够迅速开始使用<span lang="EN-US">C++</span>编程而又免于阅读<span style="COLOR: navy">《<span lang="EN-US">C++ Primer</span>》</span>那样的大部头。它以实例引导学习，力图使读者在最短的时间内把握<span lang="EN-US">C++</span>的精粹。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">也许换一个人来概述<span lang="EN-US">C++</span>编程范型（</span>
														<span class="serif1">
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">paradigm</span>
														</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">）的方方面面需要好几百页才能说清楚，但这本小书不可思议地做到了这一点。我个人非常喜欢这种满是技术、简明扼要并且“有话好好说”的书。这本书同样具有一个明显的风格：所有程序例子全部采用标准库组件，让人耳目一新。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">以上三本书都不是为了完完全全的编程新手而写。完全的<span lang="EN-US">C++</span>编程新手可以阅读<span lang="EN-US">Francis Glassborow</span>的新书（尚未出版）：<span style="COLOR: navy">《</span><span lang="EN-US" style="COLOR: navy">You Can Do It!: </span><span style="COLOR: navy"><span lang="EN-US">A Beginner's Introduction to Computer Programming</span>》</span>。这也是</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Bjarne</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的推荐。</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Francis Glassborow</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">是<span lang="EN-US">ACCU</span>主席，多年来他对几乎每一本<span lang="EN-US">C++</span>经典名著评头论足，他自己的这一本自然会引起<span lang="EN-US">C++</span>社群的极大兴趣。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">高效、健壮编程</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">两年前我在负责一个省级电力调度系统项目时编写了一个网关程序，它从<span lang="EN-US">SCADA</span>系统获取电力实时信息。通讯接口采用了不常用的数据库直连方式（这个网关程序一端连接<span lang="EN-US">SQL Server 6.5</span>，另一端连接<span lang="EN-US">Oralce 8.1.6</span>）。由于实时测点近万，每次将全部取样更新或插入一遍显然是低效的。我在网关程序里建了一个内存库，获取到的数据首先在其中进行比较，然后决定是否更新物理数据库（同时还做了别的更复杂的事情……），从而在效率和资源占用两方面达到了预期效果。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这个程序一直运行得很好，但在离开现场之后的某一天，系统管理员打来电话，说大概因为网络故障等原因，有时这个网关程序会崩溃掉 — 它自己崩掉也就罢了，问题是它还会把<span lang="EN-US">Windows 2000 Advanced Server</span>搞成“蓝屏”！坦白地说，我还从来没看过哪个非蓄意的程序有这个“能耐”。由于当时正忙于另外一个大项目，无法去现场调试，最后只有凭经验对内存库代码小心翼翼地封装以异常处理代码（同时也做了一些别的修改……）。这样，虽然没有彻底解决问题，但程序终究不再死得那么难看了。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在这儿讲这么一段花絮有什么意思呢（当初为那个可怕的<span lang="EN-US">bug</span>朝思暮想时我可不认为这是一个“花絮”）？我想说的是，对于任何软件而言，离开强健，效率也就无从谈起。而对于<span lang="EN-US">C++</span>程序员来说，也许编写一个高效的程序并不难，但要编写一个需要<span lang="EN-US">7 </span>ⅹ<span lang="EN-US"> 24</span>小时持续运行的服务端软件就不是那么容易了，需要考虑许多因素，有时这些因素甚至远远超出<span lang="EN-US">C++</span>语言和开发工具的本身。作为一名开发实际项目软件的程序员，并非非得自己碰钉子才能积累经验，只要我们足够虚心，别人的经验往往都是我们很好的借鉴。鉴于此，我推荐以下几本书供你选读，它们可以让你从强健和效率两方面受益（当然了，它们涵盖的内容远不限于异常处理</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">J</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">）。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Effective C++</span>中文版》，华中科技大学出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">More Effective C++</span>中文版》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Effective C++</span>（影印版）》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">如果说<span style="COLOR: navy">《<span lang="EN-US">Effective C++</span>》</span>主要讨论<span lang="EN-US">C++</span>中一些相对基础的概念和技巧的话，那么<span style="COLOR: navy">《<span lang="EN-US">More Effective C++</span>》</span>则着重探讨了包括异常处理在内的一系列高级技术。与前者相比，后者具有两大主要区别：其一，它包含很多时新的标准<span lang="EN-US">C++</span>的内容；第二，它讨论的主题倾向于“战略化”而非“战术化”，并且讨论得更深入、更彻底。尤其是对虚析构函数、智能指针、引用计数以及代理类（<span lang="EN-US">proxy classe</span>）等技术和模式论述的深入程度，让人很难想象是出现于这样的一本小书之中。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">游刃有余的技术，高超的写作技巧，<span lang="EN-US">Scott</span>无疑是世界上最优秀的<span lang="EN-US">C++</span>技术作家之一。在简洁、清晰、易读等方面，这两本书都卓尔不群。总之，<span lang="EN-US">Scott</span>提供的这<span lang="EN-US">85</span>个可以改善编程技术和设计思维的方法，都是中、高级<span lang="EN-US">C++</span>程序员必备的技能。我强烈推荐这两本书（实际上还有一本，稍后就会看到）。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Herb Sutter, More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">Exceptional C++</span>中文版》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">More Exceptional C++</span>中文版》，华中科技大学出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">你自认为是一名<span lang="EN-US">C++</span>语言专家吗？读一读<span lang="EN-US">ISO C++</span>标准委员会秘书长的这两本书再回答。在这两本书中，</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Herb</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">采用了“问答”的方式指导你学习<span lang="EN-US">C++</span>语言特性。对于每一个专题，<span lang="EN-US">Herb</span>首先合理地设想出你的疑问和困惑，接着又猜测出你十有八九是错误的解答，然后给你以指点并提出最佳解决方案，最后还归纳出解决类似问题的普适性原则。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这两本书是典型的深究<span lang="EN-US">C++</span>语言细节的著作，很薄，但内容密集，远远超过<span lang="EN-US">Scott</span>的那两本书，读起来很费脑筋 — 我个人认为它们要比<span lang="EN-US">Scott</span>的书难懂得多。若要研习这薄薄的两本书所包含的知识，至少需要花费数月的时间！（在<span lang="EN-US">Scott</span>的荐序中，他坦陈不止一次陷入<span lang="EN-US">GotW</span>问题的陷阱，你应该知道这意味着什么）对于语言细节的深究有什么好处呢？尽管在大多数情况下，我们不必关心<span lang="EN-US">C++</span>代码幕后的动作，然而当我们不得不关心时，这两本书可以为我们提供很好的线索，因为它们揭示了<span lang="EN-US">C++</span>语言中微妙而又至关重要的东西。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Stephen C. Dewhurst, C++ Gotchas: Avoiding Common Problems in Coding and Design</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>程序设计陷阱》，中国青年出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Stephen</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的理论素养和实践经验注定这是一本值得一读的好书。<span lang="EN-US">Stephen</span>曾经是贝尔实验室中第一批<span lang="EN-US">C++</span>使用者。他已经使用<span lang="EN-US">C++</span>成功解决了包括编译器、证券交易、电子商务以及嵌入式系统等领域中的问题。本书汇集了作者来自开发一线的<span lang="EN-US">99</span>条编程真知灼见，洞悉它们，你可以避免几乎所有常见的<span lang="EN-US">C++</span>设计和编程问题。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我甚至认为，对于<span lang="EN-US">C++</span>编程菜鸟而言，阅读这本书会比阅读<span lang="EN-US">Scott</span>和<span lang="EN-US">Herb</span>的书更能轻松而立竿见影地获得更大的提高。我个人很喜欢这本书的写作风格 — <span lang="EN-US">Stephen</span>的许多观点看似极端却无可辩驳。当然了，这种自信（以及冷幽默）来自于作者深厚的技术素养，而非自大的偏执。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">除了上面推荐的书籍外，<span lang="EN-US">Dov Bulka</span>和<span lang="EN-US"> David Mayhew</span>合著的<span style="COLOR: navy">《<span lang="EN-US">Efficient C++: Performance Programming Techniques</span>》（《提高<span lang="EN-US">C++</span>性能的编程技术》，清华大学出版社）</span>也值得一看<span style="COLOR: navy">。</span>这本超薄小书聚焦于高性能<span lang="EN-US">C++</span>应用程序开发。两位作者都是<span lang="EN-US">IBM</span>软件专家，都工作于对性能要求极高的系统构建领域，本书是他们的经验之谈。也有人不喜欢这本书，因为它花了不少的篇幅讲述和<span lang="EN-US">C++</span>无关的东西，我却恰恰因为这一点而对这本书产生好感，正是这些东西让我开阔了眼界。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">模板和泛型编程</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">模板和基于模板的泛型编程无疑是当今发展最活跃的<span lang="EN-US">C++</span>程序设计技术。模板的第一个革命性的应用是<span lang="EN-US">STL</span>，它将模板技术在泛型容器和算法领域的运用展现得淋漓尽致，而<span lang="EN-US">Boost</span>、<span lang="EN-US">Loki</span>等现代程序库则将模板技术的潜能不断发挥到极致。在模板和泛型编程领域，我推荐以下两本重量级著作：</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++ Templates</span>全览（繁体版）》，台湾碁峰资讯股份有限公司</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++ Templates</span>全览（简体版）》，人民邮电出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span class="small1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">有一种老套的赞美一本书的手法，大致是“没有看过这本书，你就怎么怎么地”，这里面往往夸张的成分居多。不过，倘若说“没有看过《</span>
														</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">C++ Templates: The Complete Guide</span>
														<span class="small1">
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">》，你就不可能精通<span lang="EN-US">C++</span>模板编程”，那么这个论断对于世界上绝大多数<span lang="EN-US">C++</span>程序员来说是成立的。</span>
														</span>
												</p>
												<p class="MsoNormal">
														<span class="small1">
																<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
																</span>
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这本书填补了<span lang="EN-US">C++</span>模板书籍领域由来已久的空白。此前，上有<span style="COLOR: navy">《<span lang="EN-US">Modern C++ Design</span>》</span>这样的专注于模板高级编程技术和泛型模式的著作，下有<span style="COLOR: navy">《<span lang="EN-US">The C++ Standard Library</span>》</span>这样的针对特定模板框架和组件的使用指南。然而，假如对模板机制缺乏深入的理解，你就很难“上下”自如。鉴于此，我向每一位渴望透彻理解<span lang="EN-US">C++</span>模板技术的朋友推荐这本书。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这本书在内地、台湾各有一个译本，但出自不同的译者之手。当你看到这篇文章时，两个译本应该都已经上市，对于读者来说当然也就多了一种选择。侯捷先生个人网站上开放了繁体译本大部分章节，不妨先睹为快。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《<span lang="EN-US">C++</span>设计新思维：泛型编程与设计模式之应用》，华中科技大学出版社</span>
												</p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">《</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">C++</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">设计新思维</span>
														<span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 宋体">（影印版）》，中国电力出版社</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">你自认为是<span lang="EN-US">C++</span>模板编程高手吗？请看过这本书再回答</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">J</span>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这是一本出自天才之手令人敬畏的杰作。泛型模式，无限延伸你的视野，足以挑战任何一名<span lang="EN-US">C++</span>程序员的思维极限。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这本书共分为两大部分，第一部分讨论了<span lang="EN-US"> Loki</span>程序库采用的基础技术以及一些高级语言特性，包括基于策略的类设计、模板局部特化、编译期断言、<span lang="EN-US">Typelist</span>以及小型对象分配技术等。第二部分则着重介绍了<span lang="EN-US">Loki</span>中的重要组件和泛型模式技术，包括泛化仿函数（<span lang="EN-US">Generalization Functor</span>）、单件（<span lang="EN-US">Singleton</span>）、智能指针、对象工厂（<span lang="EN-US">Object Factory</span>）、抽象工厂（<span lang="EN-US">Abstract Factory</span>）、访问者（<span lang="EN-US">Visitor</span>）以及多方法（<span lang="EN-US">Multimethods</span>）等。每一种技术都让人大开眼界，叹为观止。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在<span lang="EN-US">C++</span>的学习方面，过犹不及往往成了不求甚解的借口。然而，面向对象并非<span lang="EN-US">C++</span>的全部，模板和泛型编程亦占半壁江山。对于“严肃”的<span lang="EN-US">C++</span>程序员而言，及时跟进这项早经例证的成功技术，不失为明智之举。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<b>
																<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">结语</span>
														</b>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">这些著作是如此大名鼎鼎，也许根本不缺我一个推荐。然而，纵然<span lang="EN-US">C++</span>程序员队伍的发展壮大速度不像其他更时髦的语言那样迅速，新人进总是多于旧人出。除了热忱地欢迎新人，我个人认为到了对<span lang="EN-US">C++</span>书籍进行“盘点”的时候了，并且希望这样的“盘点”有益于感兴趣的读者。请保持耐心和宽厚。在下篇中，我将继续介绍标准库、网络编程以及其他方面的<span lang="EN-US">C++</span>好书。有好书相伴，这个冬天不会冷。</span>
												</p>
												<p class="MsoNormal">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">
														</span> </p>
												<p class="MsoNormal" style="TEXT-ALIGN: right" align="right">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">荣耀</span>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: right" align="right">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">2004</span>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">年<span lang="EN-US">1</span>月</span>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: right" align="right">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">南京师范大学</span>
												</p>
												<p class="MsoNormal" style="TEXT-ALIGN: right" align="right">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">www.royaloo.com</span>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top" align="left" width="910" bgcolor="#ffffff" height="15">
										</td>
								</tr>
								<tr>
										<td valign="bottom" align="left" width="973" bgcolor="#ffffff" height="16">
										</td>
								</tr>
						</tbody>
				</table>
		</center>
<img src ="http://www.cppblog.com/ningfangli-blog/aggbug/15636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ningfangli-blog/" target="_blank">ningfangli</a> 2006-11-24 19:56 <a href="http://www.cppblog.com/ningfangli-blog/articles/15636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>