锁定老帖子 主题:C++ 优秀图书一览
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-26
多谢wzgame指正,改过来了。
1.The C++ Programming Language, by Bjarne Stroustrup, Speical 3rd edition,Addison Wesley 这是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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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,这么慢,太影响工作了,只好放弃。 |
|
返回顶楼 | |
发表时间:2006-11-26
为什么c++, java最终都要把template或者说范型给加进来呢?c++不是单根的,更加迫切一点,于是很早就加进来了,还变成了很重要的一块(stl);java也终于引进了。
一开始写template的时候,老在想,对这个参数连个类型约束都没有,传进来什么是什么。后来接触了python,lisp后渐渐知道,要那个类型约束干什么 |
|
返回顶楼 | |
发表时间:2006-11-26
jack 写道 就我所知。好多初学C++,或者已经用了很多年C++的人,都不知道这点。
不过也不影响他们做开发,C++开发这事,绝对是八仙过海,各显神通。 是啊,C++支持的编程Paradigm太多了,可以面向对象,也可以像C那样面向过程,高级的Template编程感觉就像动态语言或functional编程语言一样。(这方面尚未掌握,凭感觉而已。) sevenbamboos 写道 后来接触了python,lisp后渐渐知道,要那个类型约束干什么
这话经典。 |
|
返回顶楼 | |
发表时间:2006-12-12
正在学习c++,买了本c++ primer,看来没有买错,有空回来跟大家交流交流。
|
|
返回顶楼 | |
发表时间: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(做小心谨慎状),极少情况下使用模板 |
|
返回顶楼 | |
发表时间:2006-12-13
c++ template meta code就是一个
1。duck typing 2。没有debugger 3。只能操作c++类型和编译期整数 4。语法不同寻常的繁琐 的functional language。 |
|
返回顶楼 | |
发表时间: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语言看了才叫头大。。。 |
|
返回顶楼 | |
发表时间:2006-12-13
ajoo 写道 c++ template meta code就是一个
1。duck typing 2。没有debugger 3。只能操作c++类型和编译期整数 4。语法不同寻常的繁琐 的functional language。 你忘了加上“在编译时由编译器运行”这个重要修饰了。 |
|
返回顶楼 | |
发表时间: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的回复吗? |
|
返回顶楼 | |