以前学习C++, 很多概念当时觉得理解了,但是过一段时间或者在工作中,发现有时候不小心犯了错误,归根结底应该是没有彻底了解。
C++是一门很庞大的语系,设计之初,反复考虑了当时所有的语言,最后选择C, 本身就是C的超集,同时借鉴吸收了很多语言,很多领域以及很多前辈的优秀思想,比如Simula, Smalltalk, Ada等。
学习工作这么多年,逐渐摸索出一套学习方法,那就是对于某种知识的学习,是一个螺旋式上升,迭代的过程。
以C++为例,入门先学习最简单的入门书籍(7天,21天速成系列的),这种书很多。 学习的目也不一样,比如有的就是为了快速入门,有的为了应付作业或项目;学的也很杂,很碎。这其实是最低级的一个过程,知其然不知其所以然, 在日过后的工作学习中,你会发现碰到这样的概念问题,仍然不会。 (自下而上,被动)
有时间的同时,需要系统的学习,一些比较经典的书籍低中高难度都有,英语基础好的最好看英文(有时候英文表述的似乎更清晰简洁)。 (自上而下,主动)
《C++ Primer》
《The C++ Programming Language》
《Thinking in C++》
《Inside the C Object Model》
《Effective C++》
《Essential C++》
《Exceptional C++》
当你读了上述某些书籍后,在学习工作中对某些概念总还有疑问或不解,或好奇,这时候去了解一下C++的历史成因,从源头了解,有时候会有高屋建瓴,茅塞顿开的感觉。C++之父Bjarne Stroustrup在《The Design and Evolution of C》中对C++的起源,设计等历史有详细的阐述,对自上而下了解C++有很大帮助。