标题: [转帖]C++书单 [打印本页] 作者: god 时间: 2005-3-30 22:44 标题: [转帖]C++书单 第一篇 4 ] d, U, i# d0 O. f4 Q) ], o, o9 k8 b/ y* B
一些同学问我,如何学好C++,我没有别的办法给你们,唯一的办法就是读书,读大' }) ]; I9 t& p/ z7 Y
量的书,就可以解决。要把C++作为日常语言,而不是一种程序语言,这样就好办了。 1 @! K7 @3 {! K2 F' H( w+ p3 T! H, P6 @9 V( }) v* U8 ?
有人又要问我,那么我应该读什么书才好?没有时间怎么办? - O! @+ v) G" N/ r4 m9 d" T5 \ ) l3 Z& o" J' _: Y4 m/ r我只能对你们说,没时间的话,就别学C++了,做你们喜欢做的事。生活中没有4 e1 M) ~; j' r7 w: j; m \) A
C++,也同样美好。 $ }; s; v+ A+ w) h3 l# D, J9 M* O4 k* R5 m8 Q
如果你准备学,一定要学好,那么我开个书单,应该问题不是甚大。0 y! w* x# @+ d! t
) m) Y) y u; P1 _首先肯定要读一读Bjarne Stroustrup的The Design and Evolution of C++,了解# ]4 i0 b; [6 F0 B
一下这个语言的历史。接下来就可以看别的书了,但要不停地回头看这本书,看到- p- _7 G# a& e/ f' Q; S. V
你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。 + C8 }, z$ x O% Y0 |+ U1 a- x: S2 X9 t# W
第一本书因人而异,基础好一些的,可以看Stanley B. Lippman的C++ Primer,这/ j! W9 {5 \2 f7 X
本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看Stanley B. : D0 Y- ^5 k+ Z0 _ ]Lippman的Essential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而 s3 e7 q/ l; \) `且讲得非常清楚。 m) @/ T# W. q1 z# I" g* E8 y$ @5 Y5 T; c7 b
第二本应该停止技术层面的东西,静下心来看看Pike和Kernighan的The Practice4 ~( g) |& v4 s( T, m9 X1 n% v
of Programming,好好地整理一下,在程序设计中应该有哪些注意的事项。这本, a+ X' U7 Z3 t0 F
非常薄的booklet,可以说是程序员必读的指南。) [( R4 I$ `2 G; h
! n3 e8 ?& O' R' e. |1 T) j' m# D
第三本书,就应该是Bruce Eckel写的、候捷译的Thinking in C++,这本书每过 ) k9 z. m; l% r" g4 E半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了0 W% F Q2 Y4 H4 ]$ j9 n
技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,$ s4 T: Q$ K% F# M1 W1 s' r4 r8 N% o4 P' Z
也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。 * j3 A) y& H X7 g/ B U
) C; ^- v* M7 I9 L- i要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是Scott) N1 M0 G2 [3 s: w" S
Meyers的Effective C++和More Effective C++带给我们的无尽收益。我More+ g9 A4 O, z4 M- ?' I* n4 ]! T5 i
Effective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花1 O4 c! d, w) z9 Z* b7 u7 \4 ~5 q
宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来% x$ v! a) K. w
简直是如饴甘甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴. s- Q8 @" k4 Y$ ]7 |
趣,可以发E-mail到sjtu@263.net或在饮水思源投条儿给gaobo索要,只要您提供# V+ X! U, k- w7 ?% K' T
光盘我就给免费烧。如果你已经深刻地理解了Effective C++和More Effective 8 _9 o3 l( N$ s: k3 jC++,那你可以发现,你在众人中已经是鸡群之鹤。可以指导项目运作了,可以编 $ M( r, N, M6 c& E( |3 i写一切你想做的程序了,可以指出别人看起来不错的代码的大小问题了。如果你能 ' V0 Y& \6 C! o% x* [5 `& t( R3 u1 s一眼看出有人的代码是对应于"条款27"或"条款M6",那你可真是让本人刮目了。 , I$ s7 d, u+ g @ * \/ J( w. { E: Q我已经讲了,如果要写程序,EC++和MEC++的境界已经足以使你自如应付,可是如# c+ L0 n" ]0 y' j) Z2 d
果你还不满足,想关注一些理论层面的问题,或是想看看实现的代码,你就不应该 ) K) U2 o; Y& x9 g; T& P- i+ W0 Q8 J错过这几本好极了的书。我是说Herb Sutter的Exceptional C++和More . W2 [1 M3 T0 [' I9 N7 K' oExceptional C++,这两本书的难度是非常大的,我对每一条的阅读笔记都是十多 * A+ V i B' h' m页。特别是泛型程序设计的部分,这两本书旁征博引,极尽深入探讨之能事,每每! u% q( K2 Q& L' O& }0 b
看懂一条,都抹汗一次,大感酣畅淋漓;还有侯捷的 STL源码剖析 ,以实际的 + q) A- W( \6 R$ a例子一点点地讲解一个STL是怎么样实现的,我是刚开始读,不发表评论;而# B# d& @2 P5 i3 r& L; M6 @
Stanley B. Lippman,Cfront的实现者之一,执笔写出Inside the C++ Object * o$ s/ x9 G, _+ f' nModel,我只有一个字,就是基本帅呆了。我从中了解了无数的编译器解释源代码 ! y W! U2 e( D1 g2 o% b2 S7 S' m的细节,以及记忆体分配的细节,呵呵,这些都知道了,我还怕什么呢?最近得到 & Q" x. l R, p1 z; q( M0 V了另一Cfront实现者、C++标准委员会Koenig的 C++沉思录,看起来非常不错,这; u6 V7 J: I0 {' H w2 U. s
里也推荐给大家,但我也没看完,亦无发言权。 & M! ~+ R! d. A6 l8 ~7 x% x) D |! v* J; |2 t' D1 d% }
最后最后,你们,未来的C++理论家们,可要记住,Bjarne Stroustrup的The C++ % R# n5 D" ^$ o( Y$ G! }
Programming Language无论如何也应该读个四五遍!这是一切C++的书本的源泉。 ' O- k* m7 w1 Q( G1 k如果还觉得不够,就向C++标准委员会订购一本C++标准。 5 Q( \ }; w) B4 u
; U2 Q5 [2 ^/ a9 f5 S% r9 w1 d
一切中国大陆作者的书,一概不要看(包括我的)。一切VC++或讲特定的编译器的5 ~8 L# v2 }& T8 d5 r- ~! V
书,一概不要看。如果需要补C语言的课,买一本非常小的K&R的The C5 o' T; s& G2 f5 F: c
Programming Language足矣,其它的书一概不要看。不要先学C,再学C++,而要直3 g1 M/ ^. W8 \/ y
接学C++。你不是先学古文,再学白话的,对不对?所以相信我,直接来更容易。. j: K0 d, p9 }4 [& @$ }
- z: P+ ~9 l9 A+ }/ I7 j# g
以上文字,皆为原创,本人愿意为每个字负责。 y/ C3 l7 _8 z! O: s
$ P! ?3 J, S+ A' c* P8 X
第二篇 ; t" }1 f+ P4 a + [8 q& s7 n. s+ J m2 ~6 F3 f好久未来C板了,原因这段时间一直在研究两本书,看得自己不敢多说一句话。# ]5 ]) S. _( t