《C++ Template Metaprogramming:Concepts,Tools,and Techniques》—— 最后一个月的期待!

pongba 2004-11-06 09:26:07
原书网站:http://boost-consulting.com/tmpbook/
出版日期(国外): 2004.12.3

今天终于做了最后的一些收尾工作,总算把两个样章都译完了(做成pdf,计50页)^_^,放到这里来,希望大家关注这部著作。
虽然国外一个月将出版这本书,国内的C++ fans(包括我啦)却不知道何时才能够看到这部著作了:(
无论如何,这两个样章都值得任何C++的热爱者一读,在没有看到全书的情况下, 从这两章大家就可以以管窥豹,获益良多了(至少对于我是这样的^_^)。
enjoy it!

如果你觉得html版本看着不舒服,可以发邮件索要pdf版(602kb)^_^
同时欢迎大家和我交流一切关于C++的问题^_^
我的blog: C++的罗浮宫:
http://blog.csdn.net/pongba
样章翻译以及书评见:
http://blog.csdn.net/pongba/category/39865.aspx


经典之后的经典

——写在C++图书出版史上又一部经典著作问世之前

刘未鹏(pongba) /文
C++图书界沉寂久矣!

至少我是这么认为的。国内引进第一批C++经典书籍的时候我是亲历的。感觉真是“忽如一夜春风来,千树万树梨花开”。别误会,我说的这个第一批并非《C++ Programming Language》《C++ Primer》这种经典中的经典。而是说诸如《Exceptional C++》《More Exceptional C++》《Effective&More Effective C++》《C++ Gotchas》《Generic Programming and the STL》《The C++ Standard Library》《C++ Templates》《Morden C++ Design》等。其中《Modern C++ Design》是最为激动人心的著作。学泛型而不读该著作就好像学算法不读D.E的《The Art of Compute Programming vol.1.2.3》一样,无法达到更高的境界。我只记得当时拿到这本书从早晨9点一直看到晚上22点,两顿饭都没有吃,如痴如醉。正因为这本书太经典,也太前卫了,所以我看完心里就暗暗的下了个结论“C++图书界将很久不会出现这样激动人心的著作了”。果然,后来出的一些如《Accelerate C++》《Applied C++》《C++ Network Programming vol.1.2》等,虽然也堪入经典之列,但是毕竟没有令人十分振奋的内容了。

然而,C++泛型技术的发展却一刻也没有停止过,boost库的不断更新将C++泛型技术逐渐推动到了一个新的高峰,原先在《Modern C++ Design》中的有些前卫有些学院派的技术到了boost库中终于和实践紧密结合到了一起,泛型的抽象本质发挥了其惊人的力量,于是boost库里出现了一个又一个具有高度可复用性和定制性的泛型构件。泛型通过boost库终于渐渐贴近了程序员的生活。

如果说C++泛型是那只压在五行山下的孙猴子,那么《Modern C++ Design》就揭开了山上的封印,释放了这猴头惊人的力量,而boost库则是孙悟空头上的那道金箍,约束并引导着它向正确的方向走,做正确的事。虽然有这道金箍,但它的力量却一点也没有削弱,甚至更强,只不过在被磨掉棱角的同时日趋成熟了而已。

然而,遗憾的是,虽然boost库中随处可见精致的泛型应用,可以说是一本源码教科书,正如Linux源代码之与程序员,但是“没有三两三,别想过梁山”,并非每个人都能够读懂其源代码,甚至一个对泛型颇为了解的程序员也会在其中迷途难返。这是因为boost库为了在大部分主流编译器上都能通过编译,做了很多的workaround,并且,为了节省代码量,boost库中随处可见大片大片的宏,这些宏就像迷宫,源代码的迷宫。这两个原因都使得boost的源代码可读性较差。

因此,boost库虽然贴近了程序员,boost库的源代码却愈发远离了程序员。

但是,在C++泛型领域已经登堂入室,欲更进一步,一窥堂奥者却非得阅读像boost这样经典的源代码不可。“熟读唐诗三百首,不会吟诗也会吟”。

虽然boost库的源代码的可读性较差,但也并非极差,如果有人事先为你透彻讲解boost库中的泛型运用和设计理念,相信你一定会在阅读时游刃有余。

这就是了——一本即将出版的经典之作,由boost的发起者之一,C++标准委员会的成员David Abraham以及另一位boost成员Aleksey Gurtovoy合著的——《C++ Template Metaprogramming:Concepts,Tools,and Techniques from Boost and Beyond》。

对于这么一本势必成为经典的书,我实在惶于评价,还是引用其主页上面的一段话吧:



这本讲述C++模板元编程的书将赋予C++用户空前的强大能力,并使这门技术成为程序员手中真正实用的一门技术。

This book covers C++ Template Metaprogramming in a way that provides unprecedented capability to the C++ power-user, and delivers practical metaprogramming into the hands of the everyday programmer.



一直以来,C++泛型似乎总处于一种奇怪的位置,有人说它太学院派,有人认为那太遥远,现在还用不到它,有人认为那是库的设计者的事情,与程序员关系不大。更有人持“不敢高攀”的态度。其实这些都是错误的态度,泛型是一门由来已久的思想,其核心理念是抽象,并没有什么神秘之处。与面向对象提供的二进制复用相比,泛型的代码提供了源码级的复用,一个具有更强的动态特性,一个具有更强的类型安全性和效率,两者互补才能发挥最大的力量。已经出版的很多关于C++泛型的经典书籍其实已经很好的介绍了这一点。只不过,关于C++泛型,还有一门可以独立出来的技术——模板元编程。而这恰恰是令泛型构件更具表达力和自由度的技术。甚至也可以说是boost库的基石之一(除了部分对泛型依赖不强的组件如Regex等例外)。所以,显而易见这是一门非常重要的技术,这一点从《Generative Programming》一书中也可看出。

然而,对于这门可以独立出来的技术,目前我们所看到的只是一些零星的描述,《C++ Templates》里面虽有一整章描述metaprogram,但对于渴求知识者仍如隔靴搔痒,不能尽兴。不过,这种情况就快过去了,《C++ Template Metaprogramming》将会系统的讲述C++模板元编程技术,将这门原先只是大师们手中的利器的神秘技术带到普通程序员的手中,赋予普通程序员惊人的力量。

如果说《Modern C++ Design》是C++泛型书籍上的经典之作(它的确是),那么这本即将道来的《C++ Template Metaprogramming》将是经典之后的又一次经典!



作者开放了该书的第三章和附录A。虽然只有两章,但是精彩纷呈,绝对值得一读。下面是我的翻译,一是出于自己的兴趣,二是方便读者。


第三章 深度探索元函数

http://blog.csdn.net/pongba/archive/2004/09/01/90642.aspx

附录A 预处理元编程

http://blog.csdn.net/pongba/category/39865.aspx

C++的罗浮宫:
http://blog.csdn.net/pongba

...全文
356 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangrk 2004-11-08
  • 打赏
  • 举报
回复
pongba(刘未鹏#最想写两个系列:boost源码剖析,Expressive C) :

哪里啊!这里牛人多的是,我只不过露面的次数多一点,就被抓进去了,嗬嗬。老兄能力也不错,程序员杂志有你的文章的,电子版杂志到时候贡献点文章哦!
哦,你说没有用过boost看那本书有问题吗?
fangrk 2004-11-08
  • 打赏
  • 举报
回复
呵呵,看到你投的稿件了
pongba 2004-11-08
  • 打赏
  • 举报
回复
to fangrk:
没看过boost没关系,但是MCD总得看过吧:-)

文章几乎都在我的blog上,你随便拿,跟我打个招呼就成:-)
OOLiver 2004-11-07
  • 打赏
  • 举报
回复
强烈期待!

感谢楼主的辛勤劳动!
pongba 2004-11-07
  • 打赏
  • 举报
回复
to ericZhou:

原版都是以dollar标价的,舍不得买,有这钱还不如买一套24史。
========

^_^ 24史,亏你想的出来。

to fangrk():
老兄现在敢情是C++ Magzine 的小编了嘛,gx gx。
双杯献酒 2004-11-07
  • 打赏
  • 举报
回复
期待。
双杯献酒 2004-11-07
  • 打赏
  • 举报
回复
太贵了得东西,
多好都坚决不买。

EricZhuo 2004-11-07
  • 打赏
  • 举报
回复
看着眼馋啊!
原版都是以dollar标价的,舍不得买,有这钱还不如买一套24史。
如果出影印版一定攒一套:)
fangrk 2004-11-06
  • 打赏
  • 举报
回复
《Exceptional C++ Styles》在dearbook原版书中有,不过要两百多块RMB
pongba 2004-11-06
  • 打赏
  • 举报
回复
to EricZhou():
据说这本书的版权在电力手里,应该会出影印版的^_^
到时候一定买一本,如果有时间就全部译出来!!

还有herb Sutter的两本书《Exceptional C++ Styles》和《C++ Coding Standard》,看着这些书登陆amazon,在国内却看不到(fileDonkey也搜不到:$)真是一种精神摧残!
EricZhuo 2004-11-06
  • 打赏
  • 举报
回复
great!
如果国内能有影印版就好了
内容简介 本书是关于C++模板元编程的著作。本书主要介绍Traits和类型操纵、深入探索元函数、整型外覆器和操作、序列与迭代器、算法、视图与迭代器适配器、诊断、跨越编译期和运行期边界、领域特定的嵌入式语言、DSEL设计演练,另外附录部分还介绍了预处理元编程概述、typename和template关键字。本书通过理论联系实践,深入讲解了C++高级编程技术。. 本书适合中、高阶C++程序员等参考。.. 本书清晰地揭示了现代C++最具威力的使用手法,将实际的工具和技术交付普通程序员的手中。 元编程是产生或操纵程序码的程序。自从泛型编程被引入C++中以来,程序员们已经发现用于当程序被编译时对其进行操纵的无数“tricks template”,这些tricks有效地消除了横亘在程序和元编程之间的藩篱。尽管C++专家们对这种能力的兴奋已经波及整个C++社区,然而它们的实际应用对于大多数程序员来说仍然是遥不可及。本书解释了何谓元编程以及如何最佳化地使用它,为你在自己的工作中有效地使用模板元编程提供了必备的基础。 本书瞄准于任何熟悉标准模板库(Standard Template Library,STL)惯用法的程序员。C++高级用户会获得对既有工作新的洞察以及对元编程领域新的认知。那些已经学习了一些高级模板技术的中级程序员将会明白这些tricks是从哪儿适合大画面的,并将获得有秩序地使用它们所需的概念基础。对于那些已经嗅到元编程味道但对其仍然感到神秘的程序员而言,最终将获得对元编程如何工作、何时工作以及为何工作的清晰的理解。无论如何,所有读者都将获得一个可以自由支配的、威力空前的新工具:Boost Metaprogramming Library。 附赠光盘内容包含所有Boost C++ 程序库:Boost Metaprogramming Library及其参考文件,还包含所有随书代码示例以及大量的补充材料。
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond By David Abrahams, Aleksey Gurtovoy Publisher : Addison Wesley Professional Pub Date : December 10, 2004 ISBN : 0-321-22725-5 Pages : 400 "If you're like me, you're excited by what people do with template metaprogramming (TMP) but are frustrated at the lack of clear guidance and powerful tools. Well, this is the book we've been waiting for. With help from the excellent Boost Metaprogramming Library, David and Aleksey take TMP from the laboratory to the workplace with readable prose and practical examples, showing that "compile-time STL" is as able as its runtime counterpart. Serving as a tutorial as well as a handbook for experts, this is the book on C++ template metaprogramming."Chuck Allison, Editor, The C++ Source C++ Template Metaprogramming sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer. A metaprogram is a program that generates or manipulates program code. Ever since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulating programs as they are compiled, effectively eliminating the barrier between program and metaprogram. While excitement among C++ experts about these capabilities has reached the community at large, their practical application remains out of reach for most programmers. This book explains what metaprogramming is and how it is best used. It provides the foundation you'll need to use the template metaprogramming effectively in your own work. This book is aimed at any programmer who is comfortable with idioms of the Standard Template Library (STL). C++ power-users will gain a new insight into their existing work and a new fluency in the domain of metaprogramming. Intermediate-level programmers who have learned a few advanced template techniques will see where these tricks fit in the big picture and will gain the conceptual foundation to use them with discipline. Programmers who have caught the scent of metaprogramming, but for whom it is still mysterious, will finally gain a clear understanding of how, when, and why it works. All readers will leave with a new tool of unprecedented power at their disposalthe Boost Metaprogramming Library. The companion CD-ROM contains all Boost C++ libraries, including the Boost Metaprogramming Library and its reference documentation, along with all of the book's sample code and extensive supplementary material.

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧