小白 C++ 入门并发疯学习路线(书单)

这篇文章实际上是我自己入门过程的总结,一个尽量少废话的C++入门指南。总结完忽然发现像个读书清单😄。

具体总结前,想先回答一个问题——要不要先学C,再学C++?
我作为小白时疑惑过这个问题,在此给后来的小白和当年的自己一个答案。
个人看法是,单就学习C++而言,直接学习C++就可以了,不用先学C。在微软维护STL的Stephen Thomas Lavavej都说他当年学C++之前学C语言浪费了大量的时间,早知道就直接从C++开始。

很多老的项目是C语言写的,之后的编程生涯多半还是绕不开学C语言,不过那时候你已有C++功底,构不成啥大问题。

因此,这篇文章基本不提C的学习,直接硬刚C++。不赞同的看客勿喷,右上叉叉就是了。赞同的同学可以往下看。

入门

《Accelerated C++》,《Essential C++》二选一精读。《A Tour of C++》选读。

  • 《Accelerated C++》很适合新手,因为她只有短短不到300页,在普遍砖一样的入门书籍里面是一股清流。容易通读完,减少挫败感。
  • 《Essential C++》比较适合有其他编程经验的中手迅速学习C++。内容会比《Accelerated C++》深一些。
  • 《A Tour of C++》,C++ creator扛鼎之作,适合刚学完、还有学完很长时间以后看,快速复习 C++知识。

主看书的同时,辅以这几个网站的资料,交叉印证——

比如我当初主看的是 Accelerated C++,在上下班通勤等零碎时间就在手机上看辅助部分的资料,看看跟读书的理解一不一样。甚至有时能意识到资料中某些概念的表述不太准确,此刻会发觉自己真的理解了。这种交叉印证的阅读法,能使自己入门时对基础理解的自信更足些。

完成这一步后,就可以开始上GitHub看点别人的代码,尝试写点代码。
我的话,学了在xcode下新建C++工程,然后参照这几个链接,写了两个计算器和一个学生管理系统。然后开始搬砖了。
计算器1:https://blog.csdn.net/jiejinquanil/article/details/51405381
计算器2:https://www.zhihu.com/question/28582706
学生管理系统:https://blog.csdn.net/qcyfred/article/details/53969547

入门这一步是最关键的,你初步了解了各种基本概念,并成功书写和运行起了代码,感觉真棒吧。
接着下面介绍的,就是顺利入门以后的广阔大海,慢慢慢慢慢慢慢慢、好好好好游吧。留心,不要急,千万不要抱有直接把后面的内容一口气学完,再开始干活的想法。因为那样要耗费巨量时间且效果不好,况且C++是学不完的,也没有人敢说精通。请一边投入实作,一边保持学习。

系统化

入门后有时间就要阅读些更系统的书。
具体就是《C++ Programming Language》(现在已经有第四版了)和《C++ Primer》二选一精读。之后有时间可以翻翻另一本。
(强调提示 !!!《C++ Primer》和《C++ Primer Plus》不是同一本书的不同版本,作者也不一样。【不建议】看《C++ Primer Plus》)

函数库

到这里你应该跨过了语法障碍了,要开始了解函数库。可以按顺序看看《C++标准库》、《深入理解C++对象模型》和侯捷老师的《STL源码剖析》。

追逐性能与优雅

现在应该对C++算有小小成,可能会对如何写出更好性能、更优雅的C++代码感兴趣,可以继续看《Effective C++》和《More Effective C++》,《Exceptional C++》。

哲学

能坚持到最后这步,你可能快疯了,疯子喜欢问哲学问题,比如C++是谁、从哪来、要到哪去。
尝试读读《C++沉思录》、《The Design and Evolution of C++/C++语言的设计和演化》。
另外 C++(C语言) 在一众高级语言里面却算是比较贴近计算机底层的语言。多了解计算机结构、存储、运算原理方面的知识,会对C++ 的来龙去脉理解得更透彻,可以读读《计算机科学导论》、软件工程的《代码大全》、操作系统的《现代操作系统》、程序员入门的《深入理解计算机系统》。

阅读更多

没有更多推荐了,返回首页