C++学习顺序与拓展

编程入门 行业动态 更新时间:2024-10-10 06:22:36

C++学习<a href=https://www.elefans.com/category/jswz/34/1771364.html style=顺序与拓展"/>

C++学习顺序与拓展

很多人学习了一段时间后就发现不知道想哪方面拓展,想我当年就是学了大量C++教程后竟然不知道应该向哪方面拓展,因此本文主要介绍一些c++正确学习方向,一次给予大家一些方向感。希望可以给大家一些帮助。

(一)C++正确学习顺序

一张图了解所有相关事物。

(二)相关书籍推荐

书籍可以根据自己喜好,比如我平常喜欢看教程不太喜欢读书,所以就可以把书籍当作资料来查询使用,当然如果你喜欢看书更好,我肯定不反对。

初学:

《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是应该阅读的。

提高:

这个路线侧重于语言本身

《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》也是值得一看的好书。
上述几本书,一本也不应该放过。
个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

进阶:

这个路线侧重于程序库。

《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++软件开发的全部,但是他们很重要。阅读这些书,未必需要化费太多的精力,有时候是会困难,但也有时候会很快速。
最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。

PS:

  1. 《C++ Primer》Lippman写的,经典中的经典,C++入门的宝典,读完这本书,基本语法过关,部分技巧掌握。
    2.《The C++ programming language》C++的创始人Bjarne Stroustrup写的,这本书的权威性毋庸置疑,而且这里面讲到了一些比较底层的东西,如果你看过了《C++ Primer》的话,这本书可以跳着看,懂的就跳过。
    3.《Effective C++》 Scott Meyers顶级大师用活泼幽默的语言写的书,这本书中讲到了许多应该注意的问题,这是十分值得购买的书。(Lippman曾把程序员分为看过effective c++的和没看过的两类。由此可见此书的重要性)
    4.《More Effective C++》上书的姊妹篇,这本书里讲到了许多关键性的技术,对提高程序的效率是非常有帮助的。
    5.《Advanced C++》这是一本神奇的书,里面讲到了许多连C++设计者都没想到的妙法,解决了许多看似不可能解决的问题。Scott Meyers曾隆重推荐过的书。
    6.《Inside the C++ Objects Model》又是Lippman的大作!这本书讲到了他在开发第一个C++编译器时的许多想法,彻底解析了C++底层机制是如何实现对象模型的,看过这本书,你对C++的了解会有质的飞跃!从这刻起,你有权力说你是一个C++程序员了!

光学C++语言基本上看完上述的书就是高手了,其他经验要在实践中累积,这是我个人的经验。另外,你学了C++还要开发程序,开发软件,无疑要使用MFC之类的东西
《API Programming》和《MFC Windows 程序设计》两书值得一看。这两本书能迅速提高你的实践水平。

泛型编程:

《STL源码剖析》
《C++ 涉及心思为—泛型编程与设计模式之应用》
《C++ 标准库》
《Effective STL 中文版》
—虽然目前这些书不用全看,但在我以后的日子里一定会将上述所列C++图书看书。

(三)感悟启发

我想,如果是打算走进C++编程的同志们,请好好看完这篇文章,或许,对你的发展有所启发。但是,不要企图在这里找到你自己发展的规划和指定好的发展航向和行程。看了这篇文章,能够收到启发,受到鼓舞,也就是本文的一个成功的地方了。如果能够切实的给你指导发展方向,那更是荣幸备至。但是,每个人的兴趣都不一样,所处的环境和条件也因人而异,所以,必定会有与你不完全符合的发展方向指导。正如马克思一样,本身是好的,但是如果不中国化,就指导不好实际工作。所以,务必自己化,根据文中的指导建议,结合自身的情况,总结一个可行适合自己发展的道路,然后坚持走下去,只要坚持走到最后,你就会成功的。至于成功的定义,我也曾经思考过,再此就不讨论,每个人心里都有自己的成功定义,希望每一位有志者能够达成心中的成功!
对于C++语言的选择,很多人也会在疑问,C++是否流行,是否有用,是否一直能够凭借这一门语言让自己顺风顺水,诸如此类。有些人是糊里糊涂的就学了,基本上就是学校开设的课程,就这样稀里糊涂的开始了,然后迷迷糊糊的结束了,最后都不知道C++有些什么,不过学校里学得C++也确实不能深入到地步。还有一些人是徘徊在学与不学之间,没有踏出这一步就再思考未来,是否有些太超前,导致什么都要评估一下,最后什么都学不踏实,也学不好,最后总结一个结论就是,学的东西没用。还有一些人就是,知道C++确实挺强大的,既能深入底层,又能方便开发高级软件,是因为C++是面向对象和面向过程的综合体,自然两者的优点都具备。然后就学了,学了基本语法,然后学了面向对象,然后学了点高级点的模板等,然后就觉得学完了,不知道再继续学什么了。
这些情况,多数人都经历过。作为使用C++作为主要开发语言的我,自然也经历了这些。也有很多朋友问我这些问题,到底如何发展,如何学习?我当然也是给予了一定的指导,也主要是结合我的经历和思考总结,给了一些基本的指导,能够帮助他们,让他们找到前进的方向,不再和我以前一样,走太多的弯路,受过太多的煎熬。感受到他们的笑容和随之的谢谢,我是多么的欣慰,因为我切切实实的帮助了一个志同道合的人,也正是因为他们,我才不觉得孤独,也慢慢发现,像我这样的经历的人很多,也有不少的正在朝着这个方向走来。我也不可能一个个的指导,简单几句话也说不清楚,因此就在本文中详细说说,希望能够给予那些急切需要指导的正在奋斗的朋友一些指导。
鉴于被咨询的众多朋友的情况,有在校的学生,甚至还有高中生(这个让我很惊讶,也很高兴,也有点惭愧,因为高中我也萌生对计算机的兴趣,但是没条件学习,惭愧的是,他们都已经开始接触和学习了编程,比我当年可是先进了好远。),还有研究生,还有没上过大学的,还有很低学历的。正因如此,我才感受到,指导的必须性。有些朋友,我也是因为很忙,也就没有仔细的去指导,虽然鼓励了也给出了一些基本的建议,其实我更希望能够掏心掏肺的把我能够指导建议的都告诉他们。如果你要问我为什么要这样做,我只想给一个理由,那就是,我走了太多的弯路,以至于一路那么艰辛,也一路那么孤独,所以,我尽量使他们不再重蹈覆辙,能够集中更多精力和得到更多的鼓舞,一道前行。
我始终相信一点,兴趣才是源源不断的驱动力,这个由我的经历已经见证了这一事实,我还会继续保持下去。那些咨询我的朋友,基本上也是因为兴趣而学习的,所以我更是觉得有必要指导。虽然我水平不够高,但也正是以一个初学者和入门者以及自学者的角度,才能让他们切切实实的得到清晰的方向。那下面就详细说说C++发展方向和学习指导,只是建议,更多结合自身的情况。
C语言和C++语言的关系,请参考《C语言和C++语言的关系对比分析》。下面针对如何学习C++做些分析和建议。C++的学习必须沉下心,这是我反复强调的,请务必记好,当你在犹豫时,请用这句话提醒自己。其实做人和C++一样,沉不下心是做不好的。
学习编程,与学历没有关系,与专业也没有关系,与性别年龄也没有关系,只要你想学,是真的感兴趣,就能够学好。当然,为了避免少走弯路,请多借鉴他人的经验和建议,比如看到本文,也是让自己少走弯路的一个明智的做法。还有,也有人问数学不好,编程能不能学好?这个问题其实和学历是同一类问题。大家这么问,其实就是对于编程了解的不够。只要你是正常人,有着正常的思维逻辑,都是可以学编程的。当然,如果是有兴趣,则会学得更好。如果再加上有人指导,那就更好了。

但是,事实并没有这么美好。但是,可以编程的最基本的条件,想必你一定满足吧,否则你也不会在着了看这么长的文章了。同时,能够看到文章这里,说明你确实对编程感兴趣,那么我就要恭喜你了,因为这几个条件你都满足了。我相信,你再沉下心,你一定能够成为优秀的程序员,同时,你的生活也会变得更加精彩。为什么说有正常的思维逻辑就能够学编程了呢?当然,编程的基本语法,只要你找到一本合适的书,或者有一个好人指导你,这是不成问题的。当然,如果暂时都没有,网上这么多资源,这么多信息,你绝对能够找到你要的信息。很幸运的是,你再看到本文时,你已经找到了一个合适的指导你的有用的信息,或者是我这个指导你的人吧。我不敢谈什么编程的艺术,因为我自己还不够层次,但是我有我自己的思考,我有我自己的想法。所谓编程,就是编写一个按照我们思维运行的程序。所以其核心就是,我们的思维。编程的逻辑就是我们的思维逻辑。编程不仅是要从生活中的思维中加以利用,再学习别人的经验时,你还会学到更多的思维,开阔自己的思维,更好的指导自己的生活。然后进一步优化自己的编程思维,循环往复。如果对生活经验喜欢总结抽象的人,总是能够比较快的找到解决问题的方法,因为解决问题就是解决生活中的问题,而这个编程逻辑也就来自于生活,所以,通过编程,有时会让我们更好的理解生活中的一些,从而得到更多的乐趣。当然,这只是一个最基本的条件,光有这些思维,并不能让自己真的就能成为合格的程序员。否则,全世界的人都是程序员了。但是全世界的人都是有成为程序员的潜力,除非是植物人之类的,没有正常思维的人。下一步,我们就是要学好编程的工具。这样我们才能真正成为程序员。这个工具就是编程语言。至于什么语言,到了最后其实并不重要,但是为了长远的发展,我建议学习C++,特别适合在校学生。因为在校生可以利用充足的时间来学习基础。当然其他人只要花大量的时间来学,也是一样的,只不过是在工作之余,更辛苦些,但是,有兴趣,其实也不是很辛苦的。真正的辛苦其实是有一大堆疑问却无人可问的时候。如果怕辛苦,那就不要学编程了。

最后给你们的一点箴言,希望你们可以多实践,也就是多练习,也就是多敲代码,因为学习语言这件事就像学英语一样,要经常使用才可以。记着多使用多实践!!

更多推荐

C++学习顺序与拓展

本文发布于:2024-02-25 07:44:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698264.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:顺序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!