c转C++的一点感想

从C#转C++有段时间了,一直想分享点什么,但又不太好意思分享,毕竟本身作C++的时间不太长,最近感受本身已能胜任现有工做,想分享的想法又强了点,前几天看到这样一篇博客《那些年·咱们读过的专业书籍》,里面列了不少你们认为很好的书,加上本身在自学C++的工程中也看了很多书,感受并非全部的书都值得花时间去看的,毕竟不少人一年下来也看不了2,3本书,不一样的技术能力的人,适合看的书都不太同样,在这么多你们都认为是经典的书中,选出几本真正适合本身的才是王道,经典一多了,有些比起来就不是那么经典了,固然你们都说经典,天然有可看之处,若是有多余的时间,多看些书天然是好的。html

下面是我看过的技术书籍(不必定看完),还有本《程序员的自我修养》在老家,其余几本不怎么样就没有列出来。程序员

买的第一本技术书籍是《数据结构与算法分析》面试

当时刚毕业不久,在学校时没有买技术书籍的概念,在学校时也没怎么逛过技术网站,毕业后逛得比较多,当时是作C#,那时Android很火想学,心里又一直认为成为一名好的程序员,底层知识是要会的,当时的状况是:在作C#,想作Android,又想作C++,没准备长作C#,最后买了这本算法相关的书籍,决定学C++,注意准备开始吐槽:是谁说程序=算法+XX,这个等式对于不少刚毕业的同窗们根本不成立,算法对于大部分的程序员来讲都是弱项好很差,不少菜逼根本就不会算法,就会增删改查,有木有,别一开始就来最难的,容易打击自信心,是谁说算法很重要的,哥才写了90多篇博客,就有19篇跟算法有关的,私底下也学习了不少算法相关的文章,哥是要转C++好很差。吐槽告一段落,算法仍是很重要的,有时间仍是要好好研究一下。算法

 

《Effective C++》买的第一本彻底关于C++的书编程

刚开始都看不懂,反复看以后,就很懂了,到如今为止应该至少看了4遍,感受如今给我大半天的时间,能大体在看一遍,曾经一度想把书中的50条法则写成几篇博客的,最后因为太懒只写了3篇性能优化

Effective C++面向对象与继承数据结构

Effective C++ 类与函数设计和申明多线程

Effective C++构造函数析构函数Assignment运算符app

开始没看懂的时候,没以为这书怎么样,等一条一条的看懂以后,发现这书他妈的写得太好,我忍不住的要赞美他,做者用很短的几句话就把事情说得很清楚,做者的表达能力的确牛逼,再次发现做者表达能力特别牛逼的是看吴军的《数学之美》,他用几句话就把一个关于图的问题讲得很清楚,其余的一些所谓的经典做者写的内容看起来就不是那么好理解,固然这跟讲的内容、跟读者所掌握的的知识以及读者的理解能力有关。编程语言

若是你要学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++语法就那点东西,成为牛人以前还有一堆的书等着你去看,你还要写一堆的代码。

http://www.gwdang.com/app/extension如今在学习Windows的一些东西,作Windows C++方向吗!业余时间看看《编译原理》,比较难懂,看懂以后,我相信不少东西都会明白得更透彻。明年估计是我成为小牛的重要阶段,阿汉加油。http://www.gwdang.com

相关文章
相关标签/搜索