您的位置:首页 > 编程语言 > C语言/C++

C++进阶必读书籍

2014-01-25 10:03 573 查看
结合一些我的学习经历,希望对于想学C++的人有些帮助. 大家有什么好想法望提出

我老师最初是从C语言教起的,用的是潭浩强的<<C程序设计>>这本书,那时候命令执行都是在CMD里实现,用的编译器是turboc最经常用

到的就是 printf cin 对于效率不是很在乎,只要能执行就好了,连warning都忽略(这个很不应该).后来又学了C++,是清华大学出版

的<<C++程序设计>>,用的编译器是VC6.0.这本书也是讲了一些很基础的东西.给我的感觉就是 "类"在这里是无处不在, 封装,继承,派

生,多态,还有一个是泛型编程都在这本书被提到,相对于只学过C的人应该会觉得很新鲜.但我很多时候在做作业时都是C跟C++混合使

用,想起来会觉得很好笑.并没有把C++特性很好的发挥出来.

后来学过<<visual c++ 6从入门到精通>> 这里面基本是讲MFC了,类在此时才发挥它的魄力,这时基本都是用C++编写代码了.

但代码写的很烂,没有想过要优化它.

暑假回家看了<<C++primer>> 如获至宝,容器与泛型编程给我有一种耳目一新的感觉.此书是这样被评价的:久负盛名的C++经典教程,

结合两位C++大师的精妙见解. 写的挺细的,你会学到很多新东西 . 但我个人不建议以它做为最初的入门教材,可结合入门教材看.

还看了<<effective c++>> 如果你学过C++并且已经写过很多觉得很满意的作品,但是你说你没看过甚至没听过这本书,我得跟你说你

错过了优化编程思想的机会,呵呵有点夸张. 给你们简述下简介:当你读过这本书后,就获得迅速提升自己C++功力的一个契机,帮助跨

越C++的重重险阻,领略高处才有的壮美风光,做一个成功而快乐的C++程序员.

你也许会怦然心动,确是一本好书.效率,安全,在此淋漓尽现. 令人拍手称快. 你会突然觉得自己以前写的代码是多么的糟糕,这时你

已经往前迈了一步了.

这本书建议看完<<c++primer>>后再看,因为里面有涉及容器等一基本教材未提及或未深入的东西,如果感兴趣还可以看看<<more effective c++>> <<effective stl>>

我的个人的拙见可以这样学C++:

第一步:首先入门可以从 国内出版的 教材入门 如 

潭浩强的<<C程序设计>> 

清华大学出版的<<C++程序设计>>等 能了解一些基本语法 会编写些简单的程序 

第二步:看<<C++ primer>>我绝对对赞同这是本好书,面也广.<<The C++ programing Language>>这本书的名头也是让我如雷灌耳,上图书馆找了半天没找到,唉伤心..它们能使你更全面的了解C++ 这时你对泛型编程.模版.容器.标准库函数 等都会有一些了解,甚至会有一些自己的独到见解了.以后看到这些代码不至于会不知道是什么东西
(当然这书可以结合第一步的书看) 

<<The C++ Standard Library>>摘个内容简介:本书以最新的C++标准库为基础,不仅介绍了C++标准库及其所有组件,而且还讲述了如何在实际编程中高效地使用它们,就当stl而言,感觉对于STL入门不适合,而且应该也没有STL源码剖析 说的那么详细,但是不失为一本好书.当然<<STL源码剖析>>就不用我说了吧随便一搜就是好评一大把啊.对于标准函数的介绍与使用我知道的有一本比较小一点的书<<C/C++标准函数查询>>也可以做为参考.但是最常用到的还是MSDN吧,这个我想是必备的工具,当然如果是linux下编程,可能就要查在线版的MSDN了,不过在线查询功能貌似不好用.

第三步:这时候C++基本的东西你已经掌握了差不多了 学习windows的程序设计 

两本精典之作 <<windows程序设计>> 

<<windows核心编程>>

(这两本书至少看完一本后,如果想进一步学网络编程<<winsock网络程序设计>><<windows网络编程>>之类的书可以看看)

如果有兴趣可以看些LINUX的编程书 <<自己动手写操作系统>><<UNIX 编程艺术 >>

<<UNIX环境高级编程>>

<<深入理解LINUX内核>>

<<linux内核编程>>....... 

还有这个期间要结合 <<计算机组成原理>>

<<编译原理>>之类的书看 

然后再看VC++类的书 <<深入浅出MFC>>

《VC++技术内幕》等 

有空的话可以学点汇编 汇编的书我就不介绍了 因为不是了解很多

第四步:第三步完了,差不多能写一些自己的小软件了,这时候要进一步发展学些复杂的,效率的.

看 <<数据结构>> 学习算法.

看<<C++编程规范>> <<effective c++>><<MORE EFFECTIVE C++>>

《Exceptional C++中文版》 

<<thinking in C++>> 这本书在国外有很高的评价,第一卷还简单一点,第二卷我啃了半天没啃下(标准库不是很熟悉的结果), 所以最好要看完<<the C++ progarming language>>或<<C++primer>>(当然其他书大家自己发掘了)再看它 

《C++ Templates全览(简体版)》,人民邮电出版社  模板是不是令你觉得很新颖,那去学他吧. 

进一步提高自己,养成良好编写习惯还有很多好书下面我会列出来(不是说要你们全看,当然看的越多越好)

<<C++标准库扩展权威指南>>......

第五步:看<<软件工程>>

<<软件体系结构>>之类的书  

说实话 考 程序员 软件设计师等 软件工程类的知识是少不了的呵呵 

个人建议,也许对某些人不适合,也许某些人有更好的建议.给大家一个选择了..

在这学习期间,可以尝试去考个程序员或软件设计师,系统分析师之类的证书,对将来就业有好处的.有空多到网上与人交流.提高自己

其他书我VC的看过很多,但C++的很少了.可是比较出名的我就列出来供大家参考(查至网上)

1。The C++ Programming Language(Bjarne Stroustrup)

2。 Inside The C++ Object Model (Stanley B. Lippman)

(这本书介绍一些C++的内部实现)

3。Advanced C++ Programming Styles And Idioms (James O. Coplien)

(这本书介绍一些C++编程的习惯用法)

4。 STL Tutorial and Reference Guide (David R. Musser) (Professor Musser

STL的创始人之一。这本书介绍Generic Programming

的思想和标准)。

5。 Design Patterns (Erich Gamma) (很精典的面向对象设计的组件和实例)

当然,看任何一本书的时候都要动手(试例程或做习题)。然后尝试着在课堂项目中把书中的方法试验一下,以加深印象。"

国外C++几乎所有的教材都被翻译为中文了,如果没有翻译的也已经有影印版出版。

TCPL和D&E

TCPL和D&E分别是《The C++ Programming Language》和《The Design and Evolution of C++》的简称,均出自Bjarne Stroustrup之手。说它们是C++语言圣经,并不为过。

中文名称:

《C++程序设计语言(特别版)》,机械工业出版社

《C++语言的设计和演化》,机械工业出版社

入门教程

Stanley B. Lippman, Essential C++

《Essential C++中文版》,华中科技大学出版社

《Essential C++(影印版)》,中国电力出版社

高效、健壮编程

《Exceptional C++中文版》,中国电力出版社

《More Exceptional C++中文版》,华中科技大学出版社

模板和泛型编程

《C++ Templates全览(简体版)》,人民邮电出版社

《C++设计新思维:泛型编程与设计模式之应用》,华中科技大学出版社

标准库

《C++标准程序库:自修教程与参考手册》,华中科技大学出版社

《Effective STL(影印版)》,中国电力出版社

网络编程

《C++网络编程,卷1:运用ACE和模式消除复杂性》,华中科技大学出版社

《C++网络编程,卷2:基于 ACE 和框架的系统化复用》,电子工业出版社

杂项

《C++编程思想(第2版)第1卷:标准C++导引》,机械工业出版社

《C++编程思想(英文版 第2版)》,机械工业出版社

《C++沉思录》,人民邮电出版社

《深度探索C++对象模型》,华中科技大学出版社

《深度探索C++对象模型(影印版)》,中国电力出版社

C++工程领域的最高境界:

《设计模式:可复用面向对象软件的基础》,机械工业出版社其他的好书可以参看我BLOG 书评里的其他几篇文章

PS:20081123修正==============================================以上只是我个人的一点点自己的看法 由于自己还是菜鸟认识不是很深 所以 又找到了一篇我

认识的一个编程爱好者的文章 希望对大家有帮助

他网名叫 仙水兄

【讨论】个人认为学习C、C++、VC编程必读的几本书。

今日无事,好久没到这里来发帖了,看见还有人推荐书籍,所以我也来推荐几本自己觉得C类语言编程必读的书:



只要认真的读了以下两本书和作了相关的习题,算是入门了。

士兵:《C程序设计》(谭浩强)

士官:《C++程序设计》+《C++程序设计习题解答》(钱能)

如果要想在C++上有一定功力,这两本是必读的书。 )

排长:《effective c++》 和《数据结构 用面向对象方法与C++描述》数据结构不一定要精通但应该了解的。

这时候比较想编写有界面的应用程序了,此书作为基础也好、进阶也罢都是必读之书。

连长:《windows程序设计》(上、下)

如果觉得自己的C++水平够好了,下面这本书将使你重新认识这个自以为很熟悉并且古老的语言。

营长:《提高C++性能的编程技术》

)

要想开发应用软件而且比较方便但又不知道如何入门应该读的书:

团长:《VC++技术内幕》第四版、《深入浅出MFC》(这本书毕竟是自己人所写,强烈支持的)

有自己做点游戏的想法应该先读:

旅长:《C++游戏设计基础》 荣钦科技(由于此书讲得有些点到为止的“境界”所以把它当作可有可无的旅长吧^_^,不过对于新手而言是个不错的起步!)

真正想自己开发点好游戏的人必读之书:

师座:《windows游戏编程大师技巧》 原书第二版+《传奇的故事学VC编游戏》 (此两本书确实经典,但后一本已经绝版了。。。)

想在游戏开发中(因为C++现在主要使用来开发游戏的)大展宏图的人应该看的书

军座:《游戏开发物理学》如果真的把这本书弄懂了,熟悉了,军座非阁下莫属。

-------------------------------------------------------------------------------------------------------------------------------C++/OPP/OOD系列:

层级一:语法/语意(C++)

[Lippman2000] Essential C++ [推荐]

Essential C++,by Stanley B. Lippman Addison Wesley Longman 2000,276 pages

Essential C++ 中文版 ,侯俊杰 译,282页[Gregory95] C++:The Core Language

C++:The Core Language by Gregory Satir 1995 O'Reilly

C++语言核心,张铭泽 译 ,236页[Deitel98] The Complete C++ Training Course

The Complete C++ Training Course 2/e by Harvey M.Deitel 1998 Prentice Hall

C++大学教程(第二版),邱仲潘等 译,816页[Stevens2000] Standard C++ Bible

Standard C++ Bible 2000 Al Stevens IDG

标准C++宝典,林丽闽等 译,766页[Eckel2000] Thinking in C++ [第二版翻译不大好,建议看原版]

Thinking in C++ 2/e Bruce Eckel 2000 1470 pages Prentice Hall

C++ 编程思想,刘宗田等 译,420页[Lippman98] C++Primer [有点C++基础再看,强烈推荐!]

C++ Primer,3rd Editoin,by Stanley Lippman and Josee Lajoie

Addison Wesley Longman,1998 1237 pages

C++ Primer 中文版,侯俊杰 译,1999,1237页[Struostrup2000] [专家级,需要一定水平]

The C++ Programming Language,Special Editoin,by Bjarne Stroustrup

Addison Wesley Longman,2000,1017 pages

C++程序语言经典本,裘宗燕 译,机械工业出版社 1999[ANSI C++] C++规格书 1998.9.1 PDF格式

ANSI C++ 1996 Draft

层级二:专家经验(C++/OOP)

[Meyers96] More Effective C++ [不错]

More Effective C++,by Scott Meyers,Addison Wesley,1996,318pages

More Effective C++中文版,侯俊杰,培生 2000. 318页[Meyers98] Effective C++ [推荐]

Effective C++,Second Edition,by Scott Meyers,Addison Wesley Longman,1998.256pages

Effective C++ 2/e 中文版,侯俊杰,培生 2000.256页[Sutter99] Exceptional C++ [不错]

Exceptional C++,by Herb Sutter,Addison Wesley Longman,2000.208pages

Exceptional C++中文版,侯俊杰,培生 2000.248页[Sutter2001]More Exceptional C++

More Exceptional C++ by Herb Sutter,Addison Wesley Longman,2001.层级三:底层机制(C++ Object Model)

[Ellis90] The Annotated C++ Reference Manual

The Annotated C++ Reference Manual,by Margaret A.Ellis and Bjarne Stroustrup

Addison Wesley Longman,1990,447 pages.[Lippman96] Inside the C++ Object Model [good]

Inside the C++ Object Model,by Stanley Lippman,Addison Wesley Longman,1996,280pages

深度探索C++物件模型,侯俊杰 译

层级四:设计观念的复用(C++/Patterns)

[Gamma95] Design Patterns:Elements of Reusable Object Oriented Software, [强烈推荐]

by Erich Gamma,Richard Helm,Ralph Johnson,and John Vlissides,Addison Wesley,1995.395pages

设计模式,李英军等译,机械工业出版社,2000.254页[Alex2001]Modern C++ Design: Generic Programming and Design Patterns Applied [比较深奥]

by Andrei Alexandrescu,Addison-Wesley,2001,352Paper

Genericity/STL系列:

第一个境界是使用STL:

[Josuttis99]:The C++ Standard Library -A Tutorial and Reference,by Nicolai M.Josuttis,

Addison Wesley 1999.799pages

中文版,侯捷译 [听说还可以]第二个境界是了解泛型技术的内涵与STL的学理:

[Austern98]:Generic Programming and the STL -Using and Extending the C++ Standard

Template library,by Matthew H.Austern,Addison Wesley 1998.548page

第三个境界是扩充STL:

[Stepanov2001]:C++ Standard Template Library by P.J.Plauger,Alexander A.Stepanov,

Meng Lee,David R.Musser,Prentice Hall 2001这些就是你应该看的书,如果你想成为高手。当然,因为很多书的内容会有所重叠,所以不是每本都必看的。在每个层次里看1~2本就差不多了,当然,有时间多看几本有利无弊《C++ Primer》

最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)

适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。

《The C++ Programming Language》/《C++程序设计语言》

最新版本:第三版特别版

简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)

《Essential C++》

《Accelerated C++》

这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。

以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。

(二)进阶A:

这个路线侧重于语言本身

《Effective C++》

最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)

简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。

《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》

个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。

我的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不会过时,人们将广为传诵它制定的101条戒律。

还不知道他的简称,也许“101”会成为一个候选者?

提到《Effective C++》,那么另外三本书一一浮出水面:

《More Effective C++》

《Exceptional C++》

《More Exceptional C++》。

新书《Exceptional C++ Style》也是值得一看的好书。

上述几本书,一本也不应该放过。

个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

(三)进阶B:

这个路线侧重于程序库。

《The C++ Standard Library》/《C++标准程序库—自修教程与参考手册》

听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。

《Effective STL》

会使用STL还不够,还必须知道什么时候选择什么STL组件,这是STL使用的必读书。

《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型编程与STL》。

这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。

《C++ STL》

这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。

这个路线的书,仍然是建议按顺序阅读。

进阶A、进阶B两个路线应该是可以并行的。

其他进阶参考书

提出这些参考书,只是避免争议,也为开阔视野,笔者并不曾完全读过所有的。

《Thinking in C++》/《C++编程思想》

这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试一下该书。

以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。

《C++必知必会》

如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。

《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》

这又是一本我未曾读过,而且广受好评的书。

《STL 源码剖析》

这本书我刚到手,就被人"借"走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。

高级:

《The Design and Evolution of C++》/《C++语方的设计和演化》

简称D&E,内容并不艰深,Bjarne的书,仅此,就值得一读。

前段时间,互动网曾8块一本(人民币)贱卖此书,现在好像没了。

《Inside The C++ Object Model》/《深度探索C++对象模型》

C程序员读后一定会觉得C++原来并不神秘。

《C++ Template》

在阅读STL、Boost或者Loki的源代码之前,请仔细阅读本书,它可以减轻一些阅读的烦恼。这本书是讨论C++模版的权威。

《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++设计新思维——泛型编程与设计模式之应用》

简称MCD。在阅读MCD之前,建议先阅读一下《C++ Template》。

《对象揭秘:Java、Eiffel和C++》

你对C++不满吗?这本书可以部分地帮你完成抱怨的目标。也许它还可以让你不迷信C++。

最后,一份C++标准文档也是应该加以咀嚼的。

还有一些书籍,并不能简单的归于C++,也难以在纯粹的书本学习中加以掌握。《Design Patterns》/《设计模式》一书就归于此类。

所有上述的书籍,要么谈论C++语言本身,要么谈论STL的,要么兼而有之(当然严格讲STL也是C++语言非常重要的一部分)。偶尔,某些书中条目也会涉及实际工程。这些书并不是C++软件开发的全部,但是他们很重要。阅读这些书,未必需要化费太多的精力,有时候是会困难,但也有时候会很快速。

最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: