经典之后的经典 / L3 a( d0 d2 v+ P+ _——写在C++图书出版史上又一部经典著作问世之前 % @8 I, ]. c' d( Q! ?* |# U1 q, D/ b. d* f0 g
C++图书界沉寂久矣! ) R* b; A6 Y5 p# I, k7 F2 @* k f 1 B. h r9 x7 t, w4 ^至少我是这么认为的。国内引进第一批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》等,虽然也堪入经典之列,但是毕竟没有令人十分振奋的内容了。 4 c; H' v' K. h. Y( N4 G% r
" |# V+ N' I: b3 F8 H0 f* Z/ X# W然而,C++泛型技术的发展却一刻也没有停止过,boost库的不断更新将C++泛型技术逐渐推动到了一个新的高峰,原先在《Modern C++ Design》中的有些前卫有些学院派的技术到了boost库中终于和实践紧密结合到了一起,泛型的抽象本质发挥了其惊人的力量,于是boost库里出现了一个又一个具有高度可复用性和定制性的泛型构件。泛型通过boost库终于渐渐贴近了程序员的生活。 , m# h) C! g: w' i
2 \; y8 @5 p$ u ~+ }8 G如果说C++泛型是那只压在五行山下的孙猴子,那么《Modern C++ Design》就揭开了山上的封印,释放了这猴头惊人的力量,而boost库则是孙悟空头上的那道金箍,约束并引导着它向正确的方向走,做正确的事。虽然有这道金箍,但它的力量却一点也没有削弱,甚至更强,只不过在被磨掉棱角的同时日趋成熟了而已。 % p" T& y! S( W2 e1 C% f# n: c 3 E, K" F) B) }, u然而,遗憾的是,虽然boost库中随处可见精致的泛型应用,可以说是一本源码教科书,正如Linux源代码之与程序员,但是“没有三两三,别想过梁山”,并非每个人都能够读懂其源代码,甚至一个对泛型颇为了解的程序员也会在其中迷途难返。这是因为boost库为了在大部分主流编译器上都能通过编译,做了很多的workaround,并且,为了节省代码量,boost库中随处可见大片大片的宏,这些宏就像迷宫,源代码的迷宫。这两个原因都使得boost的源代码可读性较差。 1 X5 F! Z+ L3 g5 H. U4 t' _5 z* p9 c! J4 G, j/ B8 U/ D8 T
因此,boost库虽然贴近了程序员,boost库的源代码却愈发远离了程序员。 8 g# a6 @0 u' [, V1 y' Y - X+ K2 y! q% J. J% S, }# a但是,在C++泛型领域已经登堂入室,欲更进一步,一窥堂奥者却非得阅读像boost这样经典的源代码不可。“熟读唐诗三百首,不会吟诗也会吟”。 & Y. H2 Y: j+ J* n. y+ s! R2 X6 t$ B/ x( R
虽然boost库的源代码的可读性较差,但也并非极差,如果有人事先为你透彻讲解boost库中的泛型运用和设计理念,相信你一定会在阅读时游刃有余。 ( X' }: M; H3 Q
( i& I3 }, M5 i B/ c' x+ y这就是了——一本即将出版的经典之作,由boost的发起者之一,C++标准委员会的成员David Abraham以及另一位boost成员Aleksey Gurtovoy合著的——《C++ Template Metaprogramming:Concepts,Tools,and Techniques from Boost and Beyond》。 4 t! T" D. J% P: c / T: E/ p U; r# e+ v( P对于这么一本势必成为经典的书,我实在惶于评价,还是引用其主页上面的一段话吧: 2 K* z! d2 r& F9 t* X; v" E
6 J. s1 w" A2 w# }* c 7 `6 S4 v: O8 Y' N4 Y7 j E1 `2 d7 H( y
这本讲述C++模板元编程的书将赋予C++用户空前的强大能力,并使这门技术成为程序员手中真正实用的一门技术。 7 Y: ~6 K& j$ M3 }# {$ G) K% p8 \2 p# u& ~+ g" |2 b# o
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. 1 z) [( I; k! l c/ K. V" H& ]+ g, }# G