向大家介绍一本即将问世的经典C++书籍!
这是原书网站:
http://boost-consulting.com/tmpbook/
下面是我的介绍以及对开放章节的翻译,实在是出于兴趣。
当时在网上“一不小心”看到这本书时实在是开心之极——这正是C++社区期待已久的一本经典,在C++中几乎所有的东西都有系统的介绍了,惟有元编程,在所有C++经典中都涉及不深,而这本书深入而全面讲解了元编程的思想和理念。
不过听一位朋友说,国内的出版界对这本书并不热衷,因为太高端了,太技术了,而在国外则相反,这本书乃是必然会成为经典,必然会引起轰动的书。
BTW.Herb Sutter的另一本新书《Exceptional C++ Styles>听说也没有出版社“要”,不知道国内是怎么回事,这种经典居然...
经典之后的经典
——写在C++图书出版史上又一部经典著作问世之前
第三章开放,翻译见:
http://blog.csdn.net/pongba/archive/2004/09/01/90642.aspx
我的blog:
http://blog.csdn.net/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
问题点数:0、回复次数:51Top
1 楼laomai(老迈)回复于 2004-09-03 14:22:57 得分 0
楼主强啊Top
2 楼banjo(3天看问题)回复于 2004-09-03 15:42:11 得分 0
玩的太深了Top
3 楼qwertasdfg123(不想工作)回复于 2004-09-03 17:34:49 得分 0
以前看到过Top
4 楼xuranxr(smth)回复于 2004-09-03 20:15:11 得分 0
书托!!!!!!!!!!!!大家小心Top
5 楼fangrk(加把油,伙计!)回复于 2004-09-03 22:58:17 得分 0
前几天看了一下楼主的blog,感觉楼主挺厉害的,我想在刚开始看MCD呢,恐怕没能力看懂这本书。Top
6 楼zhaojun0819(我爱Java)回复于 2004-09-03 23:35:35 得分 0
书是英文的啊?Top
7 楼zhuk_nir(zhuk)回复于 2004-09-04 20:45:37 得分 0
哪里可以下载啊?有没有的卖啊!很想看啊!当年看mcd,觉得太爽了,希望这本也不错啊!Top
8 楼cyx3001(司南)回复于 2004-09-04 21:49:17 得分 0
还未问世何以就知道会成为经典Top
9 楼ArCoolGG(ArCoolGG)回复于 2004-09-04 23:23:54 得分 0
谢谢楼主. 粗粗看了一下楼主的翻译. 水平很高啊. pfpf.
我正好在看 boost 库里面带的那个 mpl_paper.pdf, 谢谢楼主的推荐.
metaprogramming, so interesting..Top
10 楼Godsoft(天使之翼)回复于 2004-09-05 10:36:37 得分 0
编程艺术这本书看得我头都大了。。。Top
11 楼IT_Fly()回复于 2004-09-06 08:50:09 得分 0
搂主好样的,MCD我是看了又看,确实十分的巧妙,而其中的LOKI库更是为我现在的作的产品
提供强大的设计实现支持Top
12 楼yanzhh(灯火阑珊)回复于 2004-09-06 09:03:16 得分 0
单看题目--尚未面世,怎知经典?
Top
13 楼sbxlj(数到三)回复于 2004-09-06 09:35:32 得分 0
就是,经典又不一个人说了算!Top
14 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2004-09-06 10:00:53 得分 0
看看Top
15 楼yjh1982(血精灵)回复于 2004-09-06 11:53:49 得分 0
markTop
16 楼diaoni(三条腿的废柴)回复于 2004-09-07 00:18:31 得分 0
中文版不知要什么时候才能出...
看英文太累了Top
17 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-08 19:29:02 得分 0
to 大家:
呵呵,几天没来看,以为帖子会找不到了,呵呵,没想到这么多C++的爱好者,开心啊...
另外,再提醒一下,要看原书的网站的请看帖子开头的连接...
to xuranxr(因为帅所以帅):
呵呵,正如您所说,我是“书托”,但是能够为这本书“托”我觉得开心的很,曾经有一位影视界的人物说“有些电影怎么抄都不为过”。这本书也是!
我真希望这本书在大陆被抄的沸沸扬扬,热火朝天...
BTW. 这本书根本就还没有出版,国内连任何信息都还没有出现,所以我“托”不到任何好处:)
to cyx3001(司南) yanzhh(灯火阑珊) sbxlj(*()*) :
经典的确不是一个人说了算,但是所谓书评只不过是一家之言,这本书是我心目中的经典,甚至比以往的任何一本都要经典。虽然我还只是看了其中的两章而已,但是某些书是必然要成为经典的,我相信。
BTW.这本书在国外还没有出版,在国内甚至么没见任何动静,所以介绍这本书给大家只是一厢情愿而已,出于一种兴奋,想与大家共享,再告诉大家一个消息,国内的出版社对这本书并不热衷,所以很可能我们短期内连影印版都看不到!
至于出版社不热衷的原因想必大家都想的出来,而对于我们,则是错过了一些东西...
再 to 大家:
当时候捷先生在MCD的序里面说到“目瞪口呆”,当然是针对MCD中展示的技术而言,而我在看MCD时当然也是“目瞪口呆+”,后来我有陆续读了BOOST库的若干泛型组件,渐渐的有了平和的心态和客观的认识,但是,再一次,boost::mpl让我“目瞪口呆++”,希望大家也能找到这种感觉:)Top
18 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-08 19:32:37 得分 0
另外,我还要“托”一下我的另外一个帖子,请关注泛型的朋友关注一下:
VC.界面:C++将成为最好的RAD(GUI)开发语言!!!
(如果下面的链接变动,请遵循上面给出的标题)
http://community.csdn.net/Expert/topic/3353/3353488.xml?temp=.4799768Top
19 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-08 19:35:00 得分 0
C++虽然现在看起来比较学院化,但是其强大能力无可置疑,逐渐这种能力会为人们认识并利用,这只是个时间问题!
就像数学总是驾驭在现实与时间之上一样!Top
20 楼cpunion( int argc, char** argv )回复于 2004-09-10 12:18:45 得分 0
感动中。向坚持在C++战线上的同学们致敬!Top
21 楼autoegg(哲学指引生活 && (动心忍性,增益其所不能))回复于 2004-09-10 18:04:46 得分 0
现在不想对C++作太多研究,毕竟它只是一个工具。Top
22 楼EricZhuo()回复于 2004-09-10 18:58:30 得分 0
还有一本,是Andri Alexandrescu 和 Sutter合著的。现在可以网上预定了。也是一本牛书Top
23 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-11 02:50:33 得分 0
to EricZhou:
那本叫《The C++ Coding Standard》吧Top
24 楼warton(创业群13734424 http://www.anywhy.cn)回复于 2004-09-11 10:24:17 得分 0
好,等着拜读Top
25 楼ccwd003(ccwd003)回复于 2004-09-15 17:04:41 得分 0
好啊好啊,朝闻道、夕死可矣Top
26 楼sduhengbin(简单)回复于 2004-09-15 17:19:17 得分 0
不错不错Top
27 楼EricZhuo()回复于 2004-09-15 20:13:36 得分 0
to pongba:
就是那本:)
老兄,你的preproseser那篇附录什么时候能翻出来啊,等着拜读呢。实在没时间看原文了Top
28 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-16 11:37:46 得分 0
to EricZhou():
最近忙着复习考研呢,不是特别有空,所以进度较慢。另外还有一些东西想写都写不成,郁闷:(Top
29 楼Serenade(号手)回复于 2004-09-19 15:32:37 得分 0
Boost?
记得有一篇什么文章比较boost和loki的SmartPtr,结果...嗯
希望没记错。Top
30 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-09-21 13:15:56 得分 0
to 大家:
这本书的附录我已经翻译了一半,并放到了blog上。讲的是“预处理元编程”。
http://blog.csdn.net/pongbaTop
31 楼EricZhuo()回复于 2004-09-21 13:45:09 得分 0
thanks :)Top
32 楼Chrisma(Chrisma)回复于 2004-09-22 10:17:20 得分 0
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// 登陆http://maguangzhi.home4u.china.com右键点击“教材更正”, //
// “讲义下载”,“习题解答”可以下载C++程序设计讲义和习题集 //
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////Top
33 楼hslinux(幻世龙)回复于 2004-09-22 13:39:38 得分 0
孤陋寡闻~~~metaprogram~~查了下字典,是"元程序",具体是什么含义?大虾介绍介绍吧。还有metaprogramming该怎么理解。。。。。。。Top
34 楼carambo(单叶草--(***实干才有好运***))回复于 2004-09-26 20:31:09 得分 0
感觉是越来越跟不上了。!!!
还得发奋努力呀!!Top
35 楼huaqingzeng(轻骑兵)回复于 2004-09-27 09:09:40 得分 0
努力Top
36 楼adherent(门徒)回复于 2004-09-27 09:46:57 得分 0
楼主强啊!
学习中~~~Top
37 楼BillGas(坏蛋)回复于 2004-09-27 10:09:46 得分 0
张口经典 闭口古训Top
38 楼mygodtoo()回复于 2004-09-27 12:00:32 得分 0
我老感觉 boost搞的人太多
hp,P.J. Plauger
都是一个人搞的,风格统一,比较好学。
我不懂,
boost是用来跨平台的
为啥要用它来研究
很奇怪
Top
39 楼mygodtoo()回复于 2004-09-27 13:58:39 得分 0
我理解的不知对不对
数值计算如valarray
进行赋值
所有的基本类型,只能
如 valarray<int>
那末里面只能是 int, char 就不行;
但泛型的类,用继承,解决了着个
问题,
如:
class MyInt{};
class Mysnt : public MyInt{};
class Mylnt : public MyInt{};
valarray<MyInt*> vm(100);
vm[0] = new Mynt;
vm[1] = new MyInt;
元,就是基本的意思
把int, char ,double, float
等东西搞成一个类结构
就可以放如容器中
融合到STL
的结构中,
这是很有前途的(数值分析)方面
不只我理解的对不对Top
40 楼somedummy(某人马甲)回复于 2004-09-28 00:16:36 得分 0
template metaprogramming是BT的……Top
41 楼LoveCreatesBeauty(lovecreatesbeauty.googlepages.com)回复于 2004-09-30 16:58:22 得分 0
upTop
42 楼freefalcon(心宇—消失中...)回复于 2004-09-30 17:22:21 得分 0
mark,期待这本书,:)Top
43 楼redchina(风清云淡)回复于 2004-10-01 14:40:46 得分 0
有必要去研究么??工具最重要的是在如何使用……深入看这种书,对绝大多数人而言都是对生命,精力的一种浪费…Top
44 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-10-03 22:07:57 得分 0
to redchina():
学习本身就是一种乐趣,怎么能说是浪费生命呢?
如果学习是纯粹功利的,那才是真的浪费生命。
Top
45 楼pongba(刘未鹏|http://blog.csdn.net/pongba)回复于 2004-10-03 22:09:02 得分 0
to redchina():
另外忘了告诉你,这本书讲的就是应用。Top
46 楼fcf128(Hacker)回复于 2004-10-03 23:34:17 得分 0
哇噻。。。
令人激动。。。。。。。。。。。Top
47 楼fcf128(Hacker)回复于 2004-10-03 23:40:00 得分 0
回复人: redchina(风清云淡) ( ) 信誉:100 2004-10-1 14:40:46 得分: 0
有必要去研究么??工具最重要的是在如何使用……深入看这种书,对绝大多数人而言都是对生命,精力的一种浪费…
我不同意redchina 的看法
如果一种技术能极大提高效率,我们没有理由不使用它
Top
48 楼badbub(无为少年)回复于 2004-10-04 04:41:41 得分 0
好,谢谢。一定要去多注意这本书。Top
49 楼myheart8541_cn(i++)回复于 2004-10-16 09:52:44 得分 0
to pongba (世界是泛型的...) :
好奇的问一下,你打算把整本书翻译出来?
我刚开始看mcd也是好激动,从没想过可以这样用c++,不过看到第五章实在看不下去了。。。。。Top
50 楼myheart8541_cn(i++)回复于 2004-10-16 09:59:25 得分 0
我相信任何人刚开始看mcd都有想昏倒的感觉。。。。。。Top
51 楼iicup(双杯献酒)回复于 2004-10-16 10:08:57 得分 0
刚开始我以为书已经开卖了,
害我在书店转悠了半天!! ;(Top




