`
bigpanda
  • 浏览: 109230 次
  • 性别: Icon_minigender_1
  • 来自: 斯德哥尔摩
文章分类
社区版块
存档分类
最新评论

C++ 优秀图书一览

阅读更多
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
分享到:
评论
16 楼 bigpanda 2006-12-15  
ajoo 写道
c++ template meta code就是一个
1。duck typing
2。没有debugger
3。只能操作c++类型和编译期整数
4。语法不同寻常的繁琐
的functional language。


这句话在肚子里嘀咕了好几年,因为FP的功夫太差,一直没敢说出来,哈哈,现在经过专家鉴定,终于可以说了。 

wzgame 写道
The C++ Programming Lanuage

才发现Language


多谢,已经改过来了。


15 楼 wzgme 2006-12-15  
The C++ Programming Lanuage

才发现Language  

这本也不错
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices ,by Herb Sutter, Andrei Alexandrescu

http://www.amazon.com/exec/obidos/ASIN/0321113586/qid%3D1124243602/sr%3D11-1/ref%3Dsr%5F11%5F1/103-4743897-6581446
14 楼 Elminster 2006-12-13  
template meta programming 的玩法确实本质上就是一个非常粗糙的 FP ,类型和编译期常量相当于一般 FP 中的值,那些接受一个类型作为模板参数导出新类型的类模板相当于 FP 中的函数。

不过模板这一块,并不是只有 template meta programmming 一种玩法。许多人把泛型和 TMP 混为一谈,但它们的内涵和所要解决的问题是有区别的。
13 楼 qiezi 2006-12-13  
当然不是写出LOKI这样的代码,如果能自创这样一套自然也说明远远地过了这个槛了 我说的这个槛就是平时写代码,会不会自然地在各种泛式中找到最适合的并且用它来实现,特别是本来适合用模板来实现的,却故意要避开它。

模板和DLL并没有产生出更复杂的东西,容易出现问题的地方其实不是模板带来的,这部分一般是内存管理问题,和模板无关。也的确是和是不是底层没什么关系,JNI也是贴近底层的。
12 楼 runes 2006-12-13  
另外,第四个问题,和底层不底层关系不大吧,你见过c出现这样的问题?
11 楼 runes 2006-12-13  
那个槛,是能 写loki那样的代码吗?
10 楼 qiezi 2006-12-13  
runes 写道

4. 这是个常见问题,做多了每个人肯定都遇见过,现在在这里说 应该如何考虑云云,其实都是事后诸葛,因为吃过苦头了。我不认为,有多少人,没有经过一番折腾 或者 经过 有经验的“提示&教育”,一转到cpp这边就自悟的。

主要是因为C++太底层了,边界问题感觉不是很突出,所以容易犯错误。你写点JNI多半也有一样的问题,但它有个明显的边界。在这里都会跨语言、跨DLL、跨平台(java/nature)都是比较麻烦的。
runes 写道

5. 前半句同意,后半句的入门似乎,太模糊了,在看 新思维 那本前,我也以为自己入门了,后来才发现
   自己根本不懂模板,所以 到底 哪里才是那个“槛”,这也是个问题。

   模板与FP,你没有看见ajoo的回复吗?
   

我觉得这个“槛”就是会看和会写之间的界限,如果你只看不用,永远还是有个槛。

ajoo的回复我看到了,不过我不认为C++的模板和FP是等同的,C++模板借了FP思想,但它用于静态类型实际上走了很远,唯一的相同点就是泛型。
9 楼 runes 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的回复吗?
   
8 楼 Elminster 2006-12-13  
ajoo 写道
c++ template meta code就是一个
1。duck typing
2。没有debugger
3。只能操作c++类型和编译期整数
4。语法不同寻常的繁琐
的functional language。


你忘了加上“在编译时由编译器运行”这个重要修饰了。
7 楼 qiezi 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语言看了才叫头大。。。
6 楼 ajoo 2006-12-13  
c++ template meta code就是一个
1。duck typing
2。没有debugger
3。只能操作c++类型和编译期整数
4。语法不同寻常的繁琐
的functional language。
5 楼 runes 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(做小心谨慎状),极少情况下使用模板
4 楼 rongsantang 2006-12-12  
正在学习c++,买了本c++ primer,看来没有买错,有空回来跟大家交流交流。
3 楼 bigpanda 2006-11-26  
jack 写道
就我所知。好多初学C++,或者已经用了很多年C++的人,都不知道这点。

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



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


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


这话经典。
2 楼 sevenbamboos 2006-11-26  
为什么c++, java最终都要把template或者说范型给加进来呢?c++不是单根的,更加迫切一点,于是很早就加进来了,还变成了很重要的一块(stl);java也终于引进了。
一开始写template的时候,老在想,对这个参数连个类型约束都没有,传进来什么是什么。后来接触了python,lisp后渐渐知道,要那个类型约束干什么
1 楼 jack 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,这么慢,太影响工作了,只好放弃。


相关推荐

    [NOI2016]优秀的拆分_C++_优秀的拆分_

    【NOI2016】优秀的拆分是一个编程竞赛题目,主要涉及的编程语言是C++,并采用了后缀自动机(Suffix Automaton)和点分治(Pointwise Divide and Conquer)这两种高级算法。这里我们将深入探讨这两个算法以及它们在...

    这是一本C++入门书籍

    这本书"这是一本C++入门书籍"显然是为了帮助初学者理解并掌握C++的基础概念和语法。C++的学习通常从以下几个方面开始: 1. **基础语法**:C++的基础包括变量声明、数据类型(如整型、浮点型、字符型等)、运算符...

    C++经典书籍合集.rar

    通过深入学习这些书籍,读者不仅可以掌握C++的基本语法,还能了解到C++社区广泛认可的最佳实践,从而成为一名更优秀的C++程序员。因此,这个压缩包对于个人技能提升和团队编程规范的建立都具有重要意义。

    基于C++的图书馆管理系统

    统计分析功能则可以帮助管理员了解图书的借阅频率、热门书籍等信息,以优化图书采购和布局。 在实现这些功能时,C++的STL(Standard Template Library)库提供了丰富的数据结构和算法,如vector、list、map等,可以...

    C++ Builder做的图书馆系统

    6. **报表与统计**:为了方便图书馆运营分析,系统可以生成各类报表,如借阅量统计、逾期书籍报告等。C++ Builder支持 Crystal Reports 或第三方报表组件,用于生成专业化的数据分析图表。 7. **安全与备份**:系统...

    简单的C++图书馆管理程序

    《简单的C++图书馆管理程序》 本项目是一个基于C++语言开发的简易图书馆管理系统,旨在帮助用户实现对图书的基本操作,如添加、查看和删除图书信息。该程序设计与实现充分体现了C++语言的面向对象特性,同时也展示...

    17本C++经典书籍

    "17本C++经典书籍"的压缩包包含了多种资源,旨在帮助学习者深入理解和掌握C++语言。 《C++标准程序库(自修教程与参考手册)》是一本深入解析C++标准库的书籍,对于开发者来说,了解和熟练使用标准库是提高效率的...

    C++头文件一览.zip

    本资料"**C++头文件一览.zip**"提供了一份关于C++常用头文件的详细清单,解压后为DOC格式,对于学习和参考C++标准库非常有帮助。 1. ****: 这是最常见的头文件,用于输入输出操作,包括`cin`(标准输入)和`cout`...

    c++编程思想大全一览

    C++编程思想大全一览 C++是一种强大的、通用的编程语言,它结合了面向对象编程、泛型编程和过程化编程的特点。对于初学者来说,理解C++的编程思想至关重要,因为这将奠定坚实的基础,有助于在未来的学习和开发中更...

    C++相关的书籍

    C++是一种广泛应用于系统软件、应用软件、游戏开发、实时金融系统、嵌入式系统以及科学计算等领域的高级编程...同时,不断实践和反思,结合实际项目经验,将理论知识转化为实际能力,是成为一名优秀C++程序员的关键。

    自学 C++ 入门 书籍

    总之,《自学C++入门书籍》是一本旨在引导初学者进入C++编程世界的优秀教材,它不仅提供了丰富的理论知识,还强调了实践操作的重要性,力求使每位读者都能从理论到实践全方位掌握C++编程技能。无论是对计算机科学感...

    图书馆管理系统C++

    《C++实现的图书馆管理系统详解》 图书馆管理系统是信息技术在图书管理领域的重要应用,它能够高效、便捷地处理图书的借阅、归还、查询等一系列操作。本系统采用C++编程语言进行开发,充分体现了C++的强大功能和...

    C++-图书管理系统设计源代码.doc

    《C++ 图书管理系统设计与实现》 图书管理系统是计算机科学中常见的应用,它通过C++编程语言实现,能够高效地管理和操作图书馆内的资源。在本系统中,主要包含以下几个核心功能: 1. **借书**:用户输入欲借阅的...

    c++必读书籍-非常经典

    "c++必读书籍-非常经典"这个主题向我们推荐了两本对于提升C++技能至关重要的书籍:《Inside The C++ Object Model》和《Effective C++》。这两本书在C++的学习路径上占据了重要地位,它们分别关注于C++的底层机制和...

    C C++头文件一览.pdf

    标题“C C++头文件一览.pdf”明确指出文档内容涉及C语言和C++语言中的头文件介绍。头文件在C/C++编程中扮演着极其重要的角色,它们通常包含了预处理器指令、宏定义、类型声明、函数原型等,用于在多个源文件之间共享...

    经典c++图书下载1

    这些书籍的标题和描述表明,这是一个关于C++学习和进阶的资源集合,涵盖了从基础到高级的多个方面。 1. **《Effective C++》与《More Effective C++》**:这两本书是C++编程的经典之作,由Scott Meyers撰写。...

    数据结构C++实现个人图书馆

    3. **文件I/O操作**:个人图书馆系统需要持久化存储书籍信息,这就涉及到C++的文件输入/输出操作。例如,可以使用fstream库来读取和写入文本文件,保存和加载图书数据。 4. **设计模式**:在实现图书馆系统时,可能...

    图书管理系统用C++编写的图书管理系统,没有使用数据库,用文件读写方式保存

    用C++编写的图书管理系统,没有使用数据库,用文件读写方式保存用C++编写的图书管理系统,没有使用数据库,用文件读写方式保存用C++编写的图书管理系统,没有使用数据库,用文件读写方式保存用C++编写的图书管理系统...

    C++个人书籍管理系统 C++编程-多文件实现(完整版)

    C++完成个人书籍管理系统的设计与开发,功能包括录入书籍信息、保存书籍信息、浏览书籍信息、查询书籍信息、增加书籍信息、删除书籍信息、修改书籍信息、按类别统计书籍的数量、按书名对书籍进行排序、退出,同时...

    c++图书馆管理系统(MFC)

    《C++图书馆管理系统(MFC)详解》 C++图书馆管理系统基于Microsoft Foundation Classes (MFC)框架构建,旨在提供一种高效、便捷的方式来管理图书馆的各类信息。MFC是微软为Windows平台开发的应用程序提供的一套类库...

Global site tag (gtag.js) - Google Analytics