论坛首页 海阔天空论坛

C++ 优秀图书一览

浏览 14578 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-26  
1.The C++ Programming Language, by Bjarne Stroustrup, Speical 3rd edition,Addison Wesley 多谢wzgame指正,改过来了。



这是C++创始人B教主之力作,描述C++语言之经典一书。这本书第三版是97年出的,B教主老人家给这本书开了个网页http://www.research.att.com/~bs/3rd.html,2000年,又出了个Special 3rd edition,和97年的第三版相比,多了两个Appendix,这两章在网页上可以下载,除此之外,还改了1000多个小错误。我说B教主你老人家小错误犯的也太多了吧,为什么不像Knuth老人家学习学习,人家多严谨那。要把这本书当参考手册,还得去买2000年那个版本的。

B教主总共写了三本书,The C++ Programming Language,The Design and Evolution of C++,The Annotated C++ Reference Manual,加上翻译本合起来卖了上百万多份那,厉害厉害。

2. The C++ Standard, Wiley,ISBN:0-470-84674-7



这本书是C++语言标准,C++的语法太繁琐,所以有些吃不准的地方,还是得翻这本书。厚厚一本书,700多页,但是用的纸非常轻,拿起来不沉。就是装订的不好,书脊有点松松散散,让人担心看多了某天书会散架。

3. C++ Templates, The Complete Guide,by Vandevoorde, Josuttis,Addison Wesley, ISBN:0-201-73484-2



之所以这么重视这本书,是因为自1987年以来,C++的开发重点就不是面向对象了,而是templates, static polymorphism, generic programming, multiparadigm programming. 掌握好了,C++的template的威力是巨大的。

这本书的文笔非常简洁易懂,书的排版也很好,读起来非常舒服。

4. The C++ Standard Library,A Tutorial and Reference,by Josuttis,Addison Wesley,ISBN: 0-201-37926-0

[img]http://bigpanda.iteye.com/upload/picture/pic/1230/4cdd8a04-915a-469c-a8fc-d28429035aa7.jpg [/img]

这本书的作者,也是上本书的作者之一,写的非常易懂。可能因为作者是个德国人,英语非母语者写的英语最好懂。

个人认为是讲STL最好的一本书,C++的标准库全是用template设计的,没多少OO的影子。任何一个学C++的,必须学习STL,学习STL,这本书最好.

5.Modern C++ Design,Generic Programming and Design Patterns Applied, by Andrei Alexandrescu,Addison Wesley, ISBN: 0-201-70431-5

[img]http://bigpanda.iteye.com/upload/picture/pic/1231/5f5b2d1e-4f1d-4b1a-a959-14a6b622c988.jpg [/img]

这本书用了很多玄之又玄的技术,读起来很吃力,有不少技术在C++ Templates The Complete Guide一书中都讲过,建议还是先读C++ Templates。作者的名气是很大的,一个极为优秀的程序员,不过书写的不流畅。

6.C++ Template Metaprogramming, by Abrahams, Gurtovoy,Addison Wesley, ISBN: 0-321-22725-5

[img]http://bigpanda.iteye.com/upload/picture/pic/1232/3b66aa3e-f891-49f7-8a6d-322d159128e7.jpg [/img]

我个人经历,读Modern C++ Design一书读来吃力,但至少还勉勉强强跟的上,读这本书根本就如同读天书,努力三天,身心受创,吐血而去,发誓苦练C++内功,将来回头算账。

这里说两句别的,以上两本书都出自Addison Wesley的Indepth系列,网址在这里:http://www.awprofessional.com/series/indepth/

这个系列出的书,都是好书,如Exceptional C++, Exceptional C++ Style, More Exceptional C++, C++ Gotchas等等,因为没有读过,无法发表评论,但是这个系列的书都值得一读,甚至反复阅读。

7.Effective C++, More Effective C++, by Scott Meyers

[img]http://bigpanda.iteye.com/upload/picture/pic/1233/6de82e3a-e705-40b4-ba39-374120226461.jpg [/img]

这两本书很有名很经典,历史也很悠久,Scott Meyers写书时,template编程还不流行,所以书里讲的大多涉及传统OO. Scott Meyers的文笔非常好,读起来很舒服。

8.Inside the C++ Object Model, by Stanley B. Lippman

[img]http://bigpanda.iteye.com/upload/picture/pic/1234/2e61357c-d905-4241-a78c-c409ad8cfeb0.jpg [/img]

也是很有名的书了,很仔细的描述了C++程序运行时,计算机里到底发生了什么事,这本书看完,读一般的C++程序如行云流水,当然,高级template应用例外。

9.The Design and Evolution of C++, by Bjarne Stroustrup

[img]http://bigpanda.iteye.com/upload/picture/pic/1235/2ffd90db-dd8a-4509-a51f-736beba1a412.jpg [/img]

B教主另一大作,描述了C++的历史,及语言特性的由来,对喜欢刨根问底想明白C++为什么是这样的人很有参考价值。

10.C++ Primer, 4th edition, by Lippman, Lajoie, Moo.



名书,第四版封面上写着,超过450 000个程序员,通过本书前版学习C++. 好多版税啊。我刚学C++时用第二版来做参考用。如果有Java, C, C#编程经验但是没用过C++的可以用这本书做入门书。

最后给C++语言圈子打打广告,欢迎加入C++语言圈,共同学习探讨C++语言。
http://cpp-circle.iteye.com
   发表时间:2006-11-26  
引用
之所以这么重视这本书,是因为自1987年以来,C++的开发重点就不是面向对象了,而是templates, static polymorphism, generic programming, multiparadigm programming. 掌握好了,C++的template的威力是巨大的。


就我所知。好多初学C++,或者已经用了很多年C++的人,都不知道这点。

不过也不影响他们做开发,C++开发这事,绝对是八仙过海,各显神通。

另外template用的多了,编译那个慢阿。简直不能忍受。
曾经用过应用大量template的框架smart++来开发windows程序,就一个窗口,什么都没有窗口程序,用API或者MFC来开发,编译时间非常短。要是Smart++来写同样的功能,天,足足要几分钟才能编译好。本来还想借此大量应用下template,这么慢,太影响工作了,只好放弃。


0 请登录后投票
   发表时间:2006-11-26  
为什么c++, java最终都要把template或者说范型给加进来呢?c++不是单根的,更加迫切一点,于是很早就加进来了,还变成了很重要的一块(stl);java也终于引进了。
一开始写template的时候,老在想,对这个参数连个类型约束都没有,传进来什么是什么。后来接触了python,lisp后渐渐知道,要那个类型约束干什么
0 请登录后投票
   发表时间:2006-11-26  
jack 写道
就我所知。好多初学C++,或者已经用了很多年C++的人,都不知道这点。

不过也不影响他们做开发,C++开发这事,绝对是八仙过海,各显神通。



是啊,C++支持的编程Paradigm太多了,可以面向对象,也可以像C那样面向过程,高级的Template编程感觉就像动态语言或functional编程语言一样。(这方面尚未掌握,凭感觉而已。)


sevenbamboos 写道
后来接触了python,lisp后渐渐知道,要那个类型约束干什么


这话经典。
0 请登录后投票
   发表时间:2006-12-12  
正在学习c++,买了本c++ primer,看来没有买错,有空回来跟大家交流交流。
0 请登录后投票
   发表时间:2006-12-12  
jack 写道
引用
之所以这么重视这本书,是因为自1987年以来,C++的开发重点就不是面向对象了,而是templates, static polymorphism, generic programming, multiparadigm programming. 掌握好了,C++的template的威力是巨大的。


就我所知。好多初学C++,或者已经用了很多年C++的人,都不知道这点。

不过也不影响他们做开发,C++开发这事,绝对是八仙过海,各显神通。

另外template用的多了,编译那个慢阿。简直不能忍受。
曾经用过应用大量template的框架smart++来开发windows程序,就一个窗口,什么都没有窗口程序,用API或者MFC来开发,编译时间非常短。要是Smart++来写同样的功能,天,足足要几分钟才能编译好。本来还想借此大量应用下template,这么慢,太影响工作了,只好放弃。





个人对模板绝大多数时候 持否定态度,

1.编译慢,

2.编译出错 巨海量的信息(当然如果是STL的话,STLfilter可以帮一下忙),
  虽说看多了可能也就习惯了,不过总的来说,错误信息绝对不如不用模板提示的好。

3.模板绝对是,“喜欢耍小聪明”人的绝佳舞台,如果此人C++有不错的水平,又“喜欢耍小聪明”,同时是一个狂热者,
  哦,my god,维护他的代码绝对是场灾难。

4.如果你感觉以上的还不够头大,那最好把模板和动态库一块玩玩,hoho.............

5.模板meta 编程,呜呼,脑筋急转弯 呼?




个人对C++越用越持否定态度,基本只用better C,STL(做小心谨慎状),极少情况下使用模板
0 请登录后投票
   发表时间:2006-12-13  
c++ template meta code就是一个
1。duck typing
2。没有debugger
3。只能操作c++类型和编译期整数
4。语法不同寻常的繁琐
的functional language。
0 请登录后投票
   发表时间:2006-12-13  
runes 写道

个人对模板绝大多数时候 持否定态度,

1.编译慢,

C++编译即便不用模板也是慢的,用了模板更加慢,这跟它的头文件包含方式有很大关系。
runes 写道

2.编译出错 巨海量的信息(当然如果是STL的话,STLfilter可以帮一下忙),
  虽说看多了可能也就习惯了,不过总的来说,错误信息绝对不如不用模板提示的好。

看习惯了也一样,模板可以提升生产力,同时也有这些副作用,取舍问题。
runes 写道

3.模板绝对是,“喜欢耍小聪明”人的绝佳舞台,如果此人C++有不错的水平,又“喜欢耍小聪明”,同时是一个狂热者,
  哦,my god,维护他的代码绝对是场灾难。

这个帽子不大不小,不褒不贬,反过来也可以说不喜欢用模板的人“喜欢写重复代码”。基本上初学C++的人都会接触STL,有多少人说用了STL的代码难以维护?
runes 写道

4.如果你感觉以上的还不够头大,那最好把模板和动态库一块玩玩,hoho.............

基本上没人把模板带入到动态库的导出接口中,适当地处理语言边界和DLL边界,也是搞C++必须要考虑的。
runes 写道

5.模板meta 编程,呜呼,脑筋急转弯 呼?

个人对C++越用越持否定态度,基本只用better C,STL(做小心谨慎状),极少情况下使用模板

模板比宏还要难以编写和使用,如果它给你带来的不是快乐,反感它放弃它也是正确的选择。模板入门比较困难,过了这个槛,再深入就没什么了,都是些技巧的组合。我感觉比FP简单多了,那些FP语言看了才叫头大。。。
0 请登录后投票
   发表时间:2006-12-13  
ajoo 写道
c++ template meta code就是一个
1。duck typing
2。没有debugger
3。只能操作c++类型和编译期整数
4。语法不同寻常的繁琐
的functional language。


你忘了加上“在编译时由编译器运行”这个重要修饰了。
0 请登录后投票
   发表时间:2006-12-13  
qiezi 写道
runes 写道

个人对模板绝大多数时候 持否定态度,

1.编译慢,

C++编译即便不用模板也是慢的,用了模板更加慢,这跟它的头文件包含方式有很大关系。
runes 写道

2.编译出错 巨海量的信息(当然如果是STL的话,STLfilter可以帮一下忙),
  虽说看多了可能也就习惯了,不过总的来说,错误信息绝对不如不用模板提示的好。

看习惯了也一样,模板可以提升生产力,同时也有这些副作用,取舍问题。
runes 写道

3.模板绝对是,“喜欢耍小聪明”人的绝佳舞台,如果此人C++有不错的水平,又“喜欢耍小聪明”,同时是一个狂热者,
  哦,my god,维护他的代码绝对是场灾难。

这个帽子不大不小,不褒不贬,反过来也可以说不喜欢用模板的人“喜欢写重复代码”。基本上初学C++的人都会接触STL,有多少人说用了STL的代码难以维护?
runes 写道

4.如果你感觉以上的还不够头大,那最好把模板和动态库一块玩玩,hoho.............

基本上没人把模板带入到动态库的导出接口中,适当地处理语言边界和DLL边界,也是搞C++必须要考虑的。
runes 写道

5.模板meta 编程,呜呼,脑筋急转弯 呼?

个人对C++越用越持否定态度,基本只用better C,STL(做小心谨慎状),极少情况下使用模板

模板比宏还要难以编写和使用,如果它给你带来的不是快乐,反感它放弃它也是正确的选择。模板入门比较困难,过了这个槛,再深入就没什么了,都是些技巧的组合。我感觉比FP简单多了,那些FP语言看了才叫头大。。。


嗯,qiezi兄 一条一条的回复,太认真了,堪做回帖的楷模,让我等随便一点就回帖者真是汗颜啊。

1. 有模板肯定比没模板的 编译时间长,回复和原文观点一致,不必讨论了。
2. 回复和原文观点一致,不必讨论了。
3. 嗯,严格来讲,我在讲这句的时候,应该加一个注解: 这里的模板指的是,自己写的,而不是用标准库。
4. 这是个常见问题,做多了每个人肯定都遇见过,现在在这里说 应该如何考虑云云,其实都是事后诸葛,因为吃过苦头了。我不认为,有多少人,没有经过一番折腾 或者 经过 有经验的“提示&教育”,一转到cpp这边就自悟的。
5. 前半句同意,后半句的入门似乎,太模糊了,在看 新思维 那本前,我也以为自己入门了,后来才发现
   自己根本不懂模板,所以 到底 哪里才是那个“槛”,这也是个问题。

   模板与FP,你没有看见ajoo的回复吗?
   
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics