前几天看到这样一篇博客《那些年·我们读过的专业书本》,里面列了很多大家认为很好的书,加上自己在自学C++的工程中也看了不少书,觉得并不是所有的书都值得花韶光去看的,毕竟很多人一年下来也看不了2,3本书,不同的技能能力的人,适宜看的书都不太一样,在这么多大家都认为是经典的书中,选出几本真正适宜自己的才是王道,经典一多了,有些比起来就不是那么经典了,当然大家都说经典,自然有可看之处,如果有多余的韶光,多看些书自然是好的。
下面是我看过的技能书本(不一定看完),还有本《程序员的自我教化》在老家,其他几本不怎么样就没有列出来。
买的第一本技能书本是《数据构造与算法剖析》

当时刚毕业不久,在学校时没有买技能书本的观点,在学校时也没怎么逛过技能网站,毕业后逛得比较多,当时是做C#,那时Android很火想学,内心又一贯认为成为一名好的程序员,底层知识是要会的,当时的情形是:在做C#,想做Android,又想做C++,没准备长做C#,末了买了这本算法干系的书本,决定学C++,把稳准备开始吐槽:是谁说程序=算法+XX,这个等式对付很多刚毕业的同学们根本不成立,算法对付大部分的程序员来说都是弱项好不好,很多菜逼根本就不会算法,就会增编削查,有木有,别一开始就来最难的,随意马虎打击自傲心,是谁说算法很主要的,哥才写了90多篇博客,就有19篇跟算法有关的,私底下也学习了很多算法干系的文章,哥是要转C++好不好。吐槽告一段落,算法还是很主要的,有韶光还是要好好研究一下。
《Effective C++》买的第一本完备关于C++的书
刚开始都看不懂,反复看之后,就很懂了,到现在为止该当至少看了4遍,觉得现在给我大半天的韶光,能大致在看一遍,曾经一度想把书中的50条法则写成几篇博客的,末了由于太
Effective C++面向工具与继续
Effective C++ 类与函数设计和申明
Effective C++布局函数析构函数Assignment运算符
开始没看懂的时候,没以为这书怎么样,等一条一条的看懂之后,创造这书他妈的写得太好,我忍不住的要赞颂他,作者用很短的几句话就把事情说得很清楚,作者的表达能力的确牛逼,再次创造作者表达能力特殊牛逼的是看吴军的《数学之美》,他用几句话就把一个关于图的问题讲得很清楚,其他的一些所谓的经典作者写的内容看起来就不是那么好理解,当然这跟讲的内容、跟读者所节制的的知识以及读者的理解能力有关。
如果你要学C++,那么我推举你看这本,虽然它没有教我们入门C++,也没有教我们深度理解C++,也没讲更底层的知识,但是它是第一本,将很多关于C++编程的主要知识点收录成的第一本书,第一本自然收录的是在开拓中涌现频率较大的,值得一讲的内容,之后有很多所谓经典的跟风之作,如
《Exceptional C++》和《More Exceptional C++》,包括作者自己的《More Effective C++》,
当然这些书中讲的内容可能是你八辈子也用不上的,但可能是要节制的,这些书讲的差不多是一些技巧性的东西,或是实现了一个XX功能,有点通用性,人家把这些点讲得很清楚,这类书不用急着看,等你C++学得差不多了,再看也不迟,那时会看得很快,由于他们没讲什么新的知识,都是对现有知识的利用。
《深度探索C++工具模型》要想更深入的理解C++,当然是这本,这本真的是经典中的必看。
这本书共7章320页,但出版社却把它弄得比较厚,彷佛不厚就觉得不是好书似的。每章的内容都很不错,建议重点看第三章和第四章,第三章讲C++工具的内存布局,第四章讲C++的各种方法编译后是啥样子的,以及方法是怎么被调用的,这是C++最主要的东西,其他任何技能不都是建立在数据和方法之上吗!
当然如果你是菜鸟看完之后你还是菜鸟,你不会变成大牛,由于我看了这些书后我并没有变成大牛,你同样也不会,但你会更深入的理解C++,你会对你自己的能力更自傲。看完这本书后,我以为我可以做C++了,于是跨部门口试,十分钟旁边,我现在的经理就问我什么时候可以过来。当然刚开始做C++时各种不顺,实战太少。你不会由于看了几本书而成为大牛。看这本书之前除了《编译事理》还没有买,其他的书都看完或是看过一些,刚开始的时候有点看不懂,之后很快的看懂并看完了,由于看这本书之前我反复看了《深入理解打算机系统》的第七章(链接)和《程序员的自我教化》的大部分内容,对编译和链接还是有些理解,再看这本书自然会快些。看完这本书我写了三篇博客,但看的人很少。
布局函数产生的点及缘故原由
虚方法的调用是怎么实现的(单继续VS多继续)
C++ Data Member内存布局
《深入理解打算机系统》就不多说了,估计每个过来人都会推举,如果你想成为一名好的程序员,便是必看必看,不管你是什么程序员,我相信很多C#牛逼的程序员都看过,这本书讲了很多主要的知识,不是很深,但装逼足以,要全都看懂还是有些难的,之前就有个同事买了这本书,里面夹了一张跟他有纯洁男女关系的女性朋友的照片,作为书签,,这的确是督匆匆自己看书的好方法。关于这本书我写了两篇博客,用这本书的内容写博客可以写很多篇。
数据对齐
在开拓中你可能没有考虑到的两个性能优化
由于我一贯在自学C++,重点推举这3本,前两本推举指数更高:
1:深度探索C++工具模型
2:深入理解打算机系统
3:Effective C++
其他的一些书都是值得看的,写到这里就有点不想写了,再说一本吧,其他的就不多说了,看完了上面这三本,再看其他的。由于我是做Windows C++开拓,就说说《Windows核心编程》,做Windows开拓的同学要看看。关于这本书我写了4篇博客
多线程编程--5种方法实现线程同步
Windows几种线程同步方法先容
Windows线程根本
Windows内核对象简介
这4篇博客基本上是讲线程、进程、内核对象、线程同步。这本书讲了Windows操作系统的很多东西,如内存管理,动态链接库,这些都是做Windows开拓须要知道的,也是我比较薄弱的,在开拓中基本都是用库,现在做的项目,两个Solution,个中一个有100多个project,刚开始来的时候常常编译都通过不了,加上每次编译的韶光较长,搞了半天编译失落败,挺打击人的。
关于书的内容就说到这里,免得大家以为我是来说书,显然说书不是我的强项,现在就来说说转C++的一些感想熏染。
诚笃说如果现在用的是C#、JAVA、PHP等,且没用过C/C++不太建议转C/C++,但非常建议多看看底层的知识,C#做了几年之后创造也便是那点东西,不深入学习,很多东西实在是只会用,根本不知道到底是怎么回事。我相信很多C#程序员不知道多态到底是怎么实现;方法到底是怎么被调用的;不知道哪些是在编译器确定,哪些是在运行时确定的;常常听到字符串池的观点等,微软把C#封装得太好了,掉坑里的机会太少了,大不了不管3721,try...catch一下,也让有些人变得不那么爱思考了,像C/C++一欠妥心就掉坑里了,不思考都弗成。常常听到有人说:C#入门随意马虎,精通难。那是由于学底层的知识更难些好不好。说这些不是针对谁,以前写C#便是吃着火锅唱着歌,各种轻松舒畅,C++就两字:苦逼。要啥啥没有,如分割字符串这种最基本的功能都得自己实现,刚做C++的觉得便是:自己坐在豪华的游艇上,看到对面的海盗船很酷,于是就往海盗船一跳,一上船创造这坐船到处都在漏水,各种举动步伐都很差劲,一欠妥心就掉水里了,各种觉得不适应。
学C++好很永劫光吗?不要
从自学C++到现在差不多3年韶光,期间多次想放弃,心中常有的一个动机便是:把这些韶光用在学C#,C#可以学得更好,人为可以拿得更多,每次看到发得手中的这点人为,就没啥干劲了,但我也一贯明白若要把程序当做一个长久的职业,我是要必会C/C++的,期间偶尔有几个月没有学C++,但末了还是放不下,又想起她。末了拖到两年多才做自己一贯想做的C++,觉得是个很漫长的过程,内心的针扎还是挺多的。这两年来业余韶光拿来学习C++的韶光均匀在半个小时旁边,跟10000个小时比起来还是很少的,当然10000个小时是要成为真正的大牛的,而我是刚上贼船,看了这么多书理论还是有些,还需大量实战。
C++很难吗?NO
C++被成为天下上最难的编程措辞,实在并没有传说中的那么难,但有一点是可以肯定的C++程序员在没有成为小牛之前一贯都在针扎,对,便是针扎,过得很苦逼,我在上个部门做C#的时候没加过一天班,做C++后,以前的同事说我瘦了,以前做C#用一个月的韶光一个人重写了公司的事情流,做C++后,花了两个多月做个历史管理器,还常常加班。虽然现在自傲多了,但还要连续针扎下去。等成为小牛后,我相信就不分编程措辞了,但如果你不是做C/C++,却想做C/C++,就别据说话都是浮云这种废话。在你成为小牛之前你才是浮云,你得苦逼,而且这是转行,这也是我不太建议转C/C++的一个缘故原由,你之前学到的很多东西都是白学的,你要从0.1开始,又开始做菜鸟,大家都知道菜鸟的日子不是那么好过,等你成为小牛之后编程措辞才是浮云。为什么大家都说他难呢?我估计便是被哪些没学好的人宣扬的,没学好之前过得苦逼,那当然发自内心的认为难,其他的朋友们听他们一说估计也以为难。再加上一些大牛也说C++难,人家说难不是由于自己没学好而说难,人家是由于知道得大多,创造C++太灵巧,坑太多,新手很随意马虎掉坑里。要我说,任何编程措辞,根本语法也就那点东西,等你明白了这些根本的东西是怎么实现,为什么要这样实现,编译后是个什么样子,你也就创造C++也就那样,不管牛不牛,也都是在用C++干活,只不过是有的人在用C++做增编削查,有的人在做大家都在用的产品。
怎么学习C++?标准答案是:多思多写多看
作为新菜鸟的我,是不应该回答这个问题的,但这个问题的精确答案的确是多思多写多看。现在来说说我的失落败经历,作为智商不太低的我,学了两年多才做C++,这显然是失落败(哈哈,程序员就该当自傲,千万别疑惑自己的智商,一点都不能有)。的确我是走了弯路,以是我像很多有失落败经历的前辈一样,来分享自己的失落败经历,以免子弟们重蹈前辈们的覆辙。
我学了好久的C++,都不会写一个C++的类,实在开始的时候一贯都是在写C,一贯在用C写算法,严重受了算法主要的影响,实在开始的时候我都不是在学C++,买的第一本技能书,不是关于C++的,而是关于算法的。学C++的时候也没有买一本比较好的系统先容C++的书本。直接第一本C++书本便是Effective C++,看这本书还是要一定根本的。看这本书的时候我已经做了两年多的C#,在学校里有一点C的根本,之后也看过《高质量C++编程指南》,还是有一定的程序根本,如果你有一定的程序根本,想转C++,还是建议先看本系统先容C++的书本,如《C++ Primer》,这本书的作者也是《深度探索C++工具模型》的作者,还有C++他爹写的那本啥也值得一读,大家都是这么说,该当不会错,两本选一本,有一定根本之后再看Effective C++,觉得不错之后再看《深度探索C++工具模型》,这本差不多之后再看《深入理解打算机系统》,这本不是讲C++的,讲的是底层的东西,你学C++不便是想学底层的东西吗,C++语法就那点东西,成为牛人之前还有一堆的书等着你去看,你还要写一堆的代码。
我现在在学习Windows的一些东西,做Windows C++方向吗!
业余韶光看看《编译事理》,比较难懂,看懂之后,我相信很多东西都会明白得更透彻。明年估计是我成为小牛的主要阶段,阿汉加油。
为了不让我的博客因偏差太大,而让想做C++的朋友走弯路,在这里付上耗子叔的《如何学好C++措辞》 http://coolshell.cn/articles/4119.html