轮子哥的C++为什么学的这么好?请分享一下学习C++秘诀

最近CoolShell连续发了两篇文字,《如何学习C语言》以及《如何学习C++》。我在twitter发了一些牢骚,因为我也曾经写过一篇《漫谈C语言及如何学习C语言》 ,文字写的还算用心,可惜反响不是很热烈。
最近C++社区最大的新闻,毫无疑问就是最新标准终于Final Draft了,C++2011终于有望实现。
可是,谁会关心呢?
国内C++译作圈比较出名的就这几个人,刘未鹏PongBa,自从进入微软以后好像更加关注心智方面的研究,关于C++的文字几乎就没了。孟岩
http://blog.csdn.net/myan
也是很久没有新博客文字,也少见C++方面的内容。荣耀,好像也是非常低调。最出名的莫过台湾的侯捷老师,他现在忙于企业培训,估计没啥时间写新文字。这
些人里面关于C++最新标准的,还是刘未鹏在07年写的C++0X漫谈。
07年啊!!那时候房价还没有这么高!!物价也没有这么高!!!车也没有这么多!!!路也没有这么堵!!搞C++的程序员你伤不起啊!!!
瞎扯一下,回到正题。(一个初学者)如何学习以及使用C++。
看完coolshell的文字,以及刘未鹏曾经写过的《学习C++:实践者的方法》http://blog.csdn.net/pongba/archive//1930150.aspx
可以发现他们都倾向于这样一种个人觉得并不很好的方式:列书单。
我在《漫谈C语言及如何学习C语言》也列书单,但不仅仅列书单。一个初学者光靠看书,只能完成学习过程中30%甚至更少的进度。
想学好C++,能真正把C++用起来,必须要读、写、看、说多种手段多种方法结合使用。
另外我个人对C++的态度,就是不要学习使用它的全部,把它的基础部分掌握了就好,足够用了。比如模板元编程这种高级话题,初学者不要牵扯过多,以免一叶障目不见泰山。学编程是干嘛的?如果是为了使用,那就学最核心最基本的那些好了。
在你学习C++之前,先明确自己的目的,为什么要学C++?为什么要用C++?可能是大学老师要你学,可能是公司开发项目需要你学。如果没有目的没有需求,不要用学习C++来折磨自己了,学点英语,学点Python编程都比学C++好玩有用多了。
学习C++之间,还需要准备一下练习环境。我这里偷一下懒,在《漫谈C语言及如何学习C语言》
这里提到的开发工具全都支持C++开发,所以你在里面选择一个安装就可以了。在Windows下开发,我建议大家安装VC2010和SP1(怎么搞到?别
问我,问迅雷吧),新版本虽然有些慢,但是支持Win7操作系统,对C++标准支持更好。不是像有些人说的没啥变化,这种人估计从来不
看release note吧?!至于VC6,还是抛弃了吧。
还有一点想罗嗦一下,C++最好不要作为你的第一门编程语言,选择C语言更适合。首先是你在C语言中学到的东西,基本上在C++都可以用,包括一直
遭人唾骂的MACRO宏。另外C语言入门级好书很多。而C++入门级好书不好选。如何学习C语言,看我《漫谈C语言及如何学习C语言》吧,用心点的话,大
概需要半年到一年时间就足够了。
第一阶段,读书。
建议大家先一次买齐下面5本书,其他书籍不对初学者推荐:
stanly lippman的《C++ Primer》
《Effective C++:改善程序与设计的55个具体做法:第3版 》
《C++标准程序库&自修教程与参考手册》侯捷孟岩翻译
《More Effective C++:35个改善编程与设计的有效方法(中文版)》
《C++编程规范:101条规则、准则与最佳实践》
第一本书非常难选,我这里建议几个候选者,读者可以到书店去翻看一下,哪一本觉得合口味就用哪一本。
候选者A,钱能老师的《C++程序设计教程(修订版)&设计思想与实现 》 http://product./46574
我上学的时候,翻过钱能写的C++书,感觉还不错。至于这一本实话实话我没看过,但是按照国人教学风格应该是一板一眼的。
候选者B,stanly lippman的《essential C++》,这本书我有,但是感觉不适合作为初学者使用,如果你有一两年编程经验,看看这本书也许还行。
候选者C,stanly lippman的《C++ Primer》,基本上用这本书入门,应该是比较花费时间的,但也很正统,这本书买了肯定不白瞎。
我推荐A+C,或者你到图书馆选择随便选一本《C++设计教程》作为A的替代,先知道一下皮毛。
初学者阶段需要注意的是,每看完一段,都(必须的!)要自己做做上机实验,把章节后面的练习,文章中的代码示例,自己动手把程序敲进去,编译一下,运行起来,调试调试。这一步非常重要,如果你做不到,那就学不好。
至于IDE如何调试,如何设置断点,如何建立、配置项目,不属于这篇文字范畴,但有问题的话,欢迎留言,我会尽量解答。
C++包含几个方面范式,一个是传统的结构化编程,一个是面向对象程序设计,一个是基于模板编程,还有就是STL标准模板库的使用。
读者可以按部就班,先学习结构化编程,主要掌握基本的程序语法、关键字、数据结构,比如const的使用,4种xxx_cast概念等等。
面向对象编程,要数量掌握class、new、delete,对象(资源)管理,对象生命周期,构造、析构、拷贝构造、拷贝赋值这些与对象实例相关
的内容,了解一下多态、继承、重载、覆盖、operator重载这些内容。另外简单了解一下多重继承、异常处理机制等等概念。写写例子实现一下,其实都不
模板方面的内容,不要挖的太深,了解并且实验一下如何定义模板类模板函数偏特化这些基本知识就够了。我可能用的比较浅,但是我八年工作经历来看,模板的内容属于不常使用的。
STL方面,掌握几个基本的类型比如vector、list、map、set、string,了解一些基本算法,比如find之类,基本上工作就足够了。
在这里要推荐第二本C++必须有的书籍《C++标准程序库&自修教程与参考手册》侯捷孟岩翻译。这是一本必须放在手边的书籍,因为MSDN关于STL的内容写得真是太烂了,比其它内容差的太多太多。前面介绍的STL,有了这本书在一边辅助,有问题一查便知。
我一直在提的就是了解基本就足够了。没错!对于初学者而言,千万不要想着什么都学什么都会。C++的内容太多陷阱重重,什么都想知道,只能是胡子眉
毛一把抓。抓主干抓基本抓核心,对我提到的内容,注意不同的层次:掌握、熟悉、了解,这些内容多看看,其它的碰到了在深入学习。
C++第三方library,比如boost,如果没有必要,不建议大家学习和使用在自己的项目中。当然也有例外,比如asio和boost-python都是最近风头很劲的库,做网络编程或者配合python的话,可以选择。
如果对于C++基本语法以及common knowledge有了认识了解,下面需要增加的就是工程实践设计方面的内容,基本上大家都推荐这几本,我也不例外。
《Effective C++:改善程序与设计的55个具体做法:第3版 》
《More Effective C++:35个改善编程与设计的有效方法(中文版)》
《C++编程规范:101条规则、准则与最佳实践》
这三本书的风格都是条目式,内容很实在,不玩虚的不炫技,里面的内容都可以立刻用在工程实践当中。
另外需要说明的是,纯粹C++知识对于实际编程工作是不够的,必须结合特定领域,比如Windows下编程你要知道SDK
API,Linux编程你要知道常用的system
call,数据库编程要知道一些如何连接查询更新的步骤。这些没法在这里一一介绍,可以咨询公司内的其他同事,或者留言给我好了。
看完这几本书,可能你对C++的了解已经上了一个台阶,这时候就不要继续死读书了,该动手做点什么了。
第二阶段,写代码。
书读百遍其义自现,代码写的多,bug就会多。开场诗念完就讲讲如何写代码。这其实是非常难的一步,有不少朋友书读了很多,但是就是写不出一行代码,或者写出来的还是非常奇怪充斥着低级错误的代码。这就是熟练度不够的缘故。
平时喝茶的时间拿出来,想想代码该如何设计;平时泡妞的时间拿出来,想想这个函数有没有更好的实现;看到winzip、迅雷、QQ,想想如果自己写该如何实现功能。不仅要想,还要动手做一做。
如果你是做Windows编程,这里推荐一下,这个网站上的项目设计了Windows开发的方方面面,比如GDI如
何操作,数据库,控件菜单窗口消息循环等等,都比较短小精干,而且都包含了整个项目代码下载(而不仅仅是某个片段),下载以后编译调试一下,会对自己提高
帮助很大。
现在坊间也有一些step by step的书籍,教你如何一步步实现某个功能,这种书可以根据书评销量选一本然后照着实践编程。
第三阶段,看高人编程。
这一步针对读者已经工作而且公司中有高手存在的情况。跟高手拉好关系,然后坐在一边看他编程,一般有些人不喜欢别人看,但是如果你表现出很仰慕的表情,问题应该不大。一般比较靠谱的软件公司对于新人都会指定一个导师,如果幸运的话,你就看你的导师如何编程好了。
其实这是学徒到大师中很关键的一步,有个词叫&传帮带&,就是师傅手把手的教。其实编程也是一门手艺,如果没看过师傅真实的工作状态,想变成高手要比较困难一些。
看高人编程看什么,看他如何写代码,如何思考,用了哪些工具、快捷键,遇到问题怎么调试怎么跟踪的?这些都是书本上很少见,但是工程实践中又非常有用的东西。
第四阶段,分享知识。
自己水平够不够,一做分享就知道。
不少公司都会定期举行技术分享会这类活动,或者有些地方社区也会搞搞技术分享。如果你觉得自己学的差不多了,就试着把自己知道的讲出来,分享给其他人。
这样做有几个好处,一个是增加你对知识的了解。我做过不少ppt,当自己想说点什么的时候才知道自己有多深浅哪个地方还欠缺,这个办法万试万灵。在
问答环节,你还可以与其他人互动,其他人的问题未必你都懂,这时候就可以继续深入学习。另外可以增加你自己的技术知名度,是一个很好的广告效应。
如果没有类似的技术分享怎么办?
我建议读者注册一个的账号,到那里去回答问题,一样也是非常好的分享方式。
阅读(...) 评论()您所在的位置: &
如何更好学习C++ ――及C++学习方法总结
如何更好学习C++ ――及C++学习方法总结
对于C++学习方法进行学习,如果某一天,自己的精神饱满而且情绪高涨,那样在学习一样东西时就会感到很轻松,学的也很快,其实这正是我们的学习效率高的时候。
对于许多天天刻苦钻研的程序人员,但是业绩总是不太理想。原因之一是,学习效率太低。同样的时间内,只能掌握别人学到知识的一半,这样怎么能学好?学习要讲究效率,提高效率,对C++学习方法途径大致有以下几点:
1、不妨给自己定一些时间限制。连续长时间的学习很容易使自己产生厌烦情绪,这时可以把功课分成若干个部分,把每一部分限定时间,例如一小时内完成这份练习、八点以前做完那份测试等等,这样不仅有助于提高效率,还不会产生疲劳感。如果可能的话,逐步缩短所用的时间,不久你就会发现,以前一小时都完不成的作业,现在四十分钟就完成了。 2、不要在学习的同时干其他事或想其他事。一心不能二用的道理谁都明白,可还是有许多同学在边学习边听音乐。或许你会说听音乐是放松神经的好办法,那么你尽可以专心的学习一小时后全身放松地听一刻钟音乐,这样比带着耳机做功课的效果好多了。 3、不要整个晚上都复习同一门功课。我以前也曾经常用一个晚上来看数学或物理,实践证明,这样做非但容易疲劳,而且效果也很差。后来我在每晚安排复习两三门功课,情况要好多了。
除了十分重要的内容以外,课堂上不必记很详细的笔记。如果课堂上忙于记笔记,听课的效率一定不高,况且你也不能保证课后一定会去看笔记。课堂上所做的主要工作应当是把老师的讲课消化吸收,适当做一些简要的笔记即可。
学习效率这东西,我也曾和很多人谈起过。我们经常看到这样的情况:某同学学习极其用功,在学校学,回家也学,不时还熬熬夜,题做得数不胜数,但成绩却总上不去其实面对这样的情况,我也是十分着急的,本来,有付出就应该有回报,而且,付出的多就应该回报很多,这是天经地义的事。但实际的情况却并非如此,这里边就存在一个效率的问题。效率指什么呢?好比学一样东西,有人练十次就会了,而有人则需练一百次,这其中就存在一个效率的问题。
如何提高学习效率呢?我认为最重要的一条就是劳逸结合。学习效率的提高最需要的是清醒敏捷的头脑,所以适当的休息,娱乐不仅仅是有好处的,更是必要的,是提高各项学习效率的基础。
那么上课时的听课效率如何提高呢?以我的经历来看,课前要有一定的预习,这是必要的,不过我的预习比较粗略,无非是走马观花地看一下课本,这样课本上讲的内容、重点大致在心里有个谱了,听起课来就比较有针对性。
对C++学习方法 预习时,我们不必搞得太细,如果过细一是浪费时间,二是上课时未免会有些松懈,有时反而忽略了最有用的东西。上课时认真听课当然是必须的,但就象我以前一个老师讲的,任何人也无法集中精力一节课,就是说,连续四十多分钟集中精神不走神,是不太可能的,所以上课期间也有一个时间分配的问题,老师讲有些很熟悉的东西时,可以适当地放松一下。
另外,记笔记有时也会妨碍课堂听课效率,有时一节课就忙着抄笔记了,这样做,有时会忽略一些很重要的东西,但这并不等于说可以不抄笔记,不抄笔记是不行的,人人都会遗忘,有了笔记,复习时才有基础,有时老师讲得很多,在黑板上记得也很多,但并不需要全记,书上有的东西当然不要记,要记一些书上没有的定理定律,典型例题与典型解法,这些才是真正有价值去记的东西。
否则见啥记啥,势必影响课上听课的效率,得不偿失。 作题的效率如何提高呢?最重要的是选"好题",千万不能见题就作,不分青红皂白,那样的话往往会事倍功半。题都是围绕着知识点进行的,而且很多题是相当类似的,首先选择想要得到强化的知识点,然后围绕这个知识点来选择题目,题并不需要多,类似的题只要一个就足够,选好题后就可以认真地去做了。
作题效率的提高,很大程度上还取决于作题之后的过程,对于做错的题,应当认真思考错误的原因,是知识点掌握不清还是因为马虎大意,分析过之后再做一遍以加深印象,这样作题效率就会高得多。
评:夏宇同学对于听课和做题的建议,实际上反应了提高学习效率的一个重要方法--"把劲儿使在刀刃上",即合理分配时间,听课、记笔记应抓住重点,做习题应抓住典型,这就是学习中的"事半功倍"。&&
学习效率是决定学习成绩的重要因素。那么,我们如何提高自己学习效率呢? 第一点,要自信。很多的科学研究都证明,人的潜力是很大的,但大多数人并没有有效地开发这种潜力,这其中,人的自信力是很重要的一个方面。无论何时何地,你做任何事情,有了这种自信力,你就有了一种必胜的信念,而且能使你很快就摆脱失败的阴影。相反,一个人如果失掉了自信,那他就会一事无成,而且很容易陷入永远的自卑之中。
提高学习效率的另一个重要的手段是学会用心。学习的过程,应当是用脑思考的过程,无论是用眼睛看,用口读,或者用手抄写,都是作为辅助用脑的手段,真正的关键还在于用脑子去想。
举一个很浅显的C++学习方法 例子,比如说记单词,如果你只是随意的浏览或漫无目的地抄写,也许要很多遍才能记住,而且不容易记牢,而如果你能充分发挥自己的想象力,运用联想的方法去记忆,往往可以记得很快,而且不容易遗忘。现在很多书上介绍的英语单词快速记忆的方法,也都是强调用脑筋联想的作用。可见,如果能做7到集中精力,发挥脑的潜力,一定可以大大提高学习的效果。
另一个影响到学习效率的重要因素是人的情绪。我想,每个人都曾经有过这样的体会,如果某一天,自己的精神饱满而且情绪高涨,那样在C++学习方法 一样东西时就会感到很轻松,学的也很快,其实这正是我们的学习效率高的时候。因此,保持自我情绪的良好是十分重要的。
我们在日常生活中,应当有较为开朗的心境,不要过多地去想那些不顺心的事,而且我们要以一种热情向上的乐观生活态度去对待周围的人和事,因为这样无论对别人还是对自己都是很有好处的。这样,我们就能在自己的周围营造一个十分轻松的氛围,学习起来也就感到格外的有精神。 【责任编辑: TEL:(010)】
关于的更多文章
微软为单独工作或在小型团队中的专业开发人员提供了两种选择,VS
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
讲师: 13人学习过讲师: 9人学习过讲师: 11人学习过
TIOBE编程语言排行榜Java以4.5%的差距遥遥领先于第二
你想知道618大促都有哪些技术支撑吗?你想知道京东白
前几天和长辈闲聊之下,“大数据”,竟然也从老人家嘴
本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还
51CTO旗下网站}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信