咨询培训 著译作品关于荣耀 Bjarne Stroustrup 网络资源 九炉堂 日志联系站内搜索首页

著译作品

《C++模板元编程》

C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, by David Abrahams, Aleksey Gurtovoy

荣耀 译

www.royaloo.com

译序

作为一种高阶C++编程技术,模板元编程突出编译期决策在整个程序构建和运行过程中的地位,努力将计算从运行期提前至编译期,不但有效地防止程序错误被传播到运行期,而且能够实现以静态代码控制动态代码的目标。计算尽可能完成于编译期也提高了最终程序的运行性能。

C++模板元编程诞生于十多年前,最初的研究方向是编译期数值计算,后来的实践发展证明,在类型计算领域此项技术可释放出更大的能量。近几年来,由于Andrei Alexandrescu的Loki程序库对元编程的前卫应用,Boost元编程库日益展示出重要的实用价值,C++模板元编程从最初被认为是对模板“过于聪明”的使用,到逐步被学界重视并研究,时至今日,这一高阶编程技术已然为业界所接受。

C++编程书籍不计其数,但涉及模板元编程的书籍屈指可数。作为Loki的传播者,《Modern C++ Design》对元编程的概念和原理的解释不够细致——这不奇怪,那本书的兴趣更在于元编程在静态设计模式上的应用。David Vandevoorde和Nicolai M. Josuttis所著的《C++ Templates》,以及Krzysztof Czarnecki和Ulrich W.Eisenecker的著作《Generative Programming 》,对模板元编程分别做了引介和总结,它们同样不是专注于元编程自身。Boost的创始人之一David Abraham与Boost MPL的作者Aleksey Gurtovoy的这部著作第一次系统地阐述了模板元编程。

本书从内容上大致分为理论和实践两部分。前八章和部分附录内容以Boost元编程库为主线介绍模板元编程的概念、技术、工具及陷阱。其余篇幅则主要讨论模板元编程的一个重要的应用:DSEL(Domain-Specific Embedded Languages,领域特定的嵌入式语言)的设计与实现。虽然只有少数C++程序员需要创建DSEL,但了解其原理和实作大有裨益,有利于用好他人创建的DSEL自不必说,更重要的是,还可从中领会模板元编程的运用手法以及分析、解决实际问题的方法。

本书阅读门槛较高,适合希望了解模板元编程的中、高阶C++程序员尤其是程序库作者阅读。如果你缺乏模板元编程必备的基础知识,例如类模板的特化和实例化、双重模板参数、typedef以及模板的继承等,建议参阅侯捷、荣耀和姜宏合译的《C++ Templates全览》(繁体版)一书,打好基础。

与常规C++编程技术相比,模板元编程技术较为复杂。不少C++程序员因此以为它高不可攀,或以为它只是库设计者的工具,结果造成,尽管这项技术一直都没有疏远我们,然而我们自己的不作为却使它显得遥不可及。实际上,面向对象编程与泛型编程、运行期与编译期以及动态与静态之间并不互相排斥,而是对立统一。站在更高处审视C++程序设计,将多种编程范型优势互补,无疑可以开发出对程序员和最终用户而言更强大、更美妙的应用。

下一代C++标准C++0x将从语言和程序库两方面进一步增强对模板编程的支持,作为模板编程的一个高阶子集,模板元编程亦将从中受益。实际上,C++0x还将对模板元编程提供更友好的支持,(部分)Boost元编程程序库将会成为C++0x标准库的一个组成部分。模板元编程向普通C++程序员渐行渐近。现在,就让这本书引领你开始奇妙之旅!

感谢刘未鹏先生为第三章和附录A付出的高品质初译协助。感谢机械华章陈冀康先生、周茂辉编辑以及其他为本书面世做出贡献的人士。感谢朱艳和荣珅,生活因你们而更加精彩。

祝各位阅读快乐!

荣耀
2006年6月
南京师范大学
www.royaloo.com

目录

  • 1 引介
  • 2 Traits和类型操纵
  • 3 深入探索元函数
  • 4 整型外覆器和操作
  • 5 序列与迭代器
  • 6 算法
  • 7 视图与迭代器适配器
  • 8 诊断
  • 9 跨越编译期和运行期边界
  • 10 领域特定的嵌入式语言
  • 11 DSEL设计演练
  • 附录A 预处理元编程引介
  • 附录B typename和template关键字
  • 附录C 编译期性能
  • 附录D MPL可移植性摘要

出版信息

  • 书 号: 978-7-111-26742-3
  • 页 数: 290
  • 开 本: 16
  • 定 价: 55元
  • 印 数: 未知
  • 出版日期: 2009年11月
  • 出 版 社: 机械工业出版社