# C/C++

虽然大家都说学好 C++学啥都轻松，但其实没有太大的必要去学 C++，除非你需要经常处理高性能任务。C++毕竟历史包袱太重了，写个代码要分出一半的精力关注语言本身的特性，这会导致实现思路变得比较复杂。不过如果你只是打算学个 C with class 的话，当我没说。

我不建议在现在这个时间节点深入学习 C++，因为当前 C++的岗位已经不多了。虽然大公司的核心部门还在用，但想必也不需要几个人去写 engine；虽然音视频开发和一部分工业领域也在用，但一来是岗位少，二来是都做程序员了还跑去和工业领域这些硬件的东西纠缠不清，拿着更低的工资干更累的活，不是很聪明。（是的，我是说学校目前打算主攻工业智能领域的想法非常不明智，希望大家不要被忽悠。）如果你真不知道学啥，学 Java 或 JavaScript 准没错，反正你毕业后这两门语言极大概率还是非常火。

C/C++的东西不容易过时，通常只要基于 C++ 11 的书就不算旧，甚至算得上"Modern"，毕竟现在仍有大量的项目还没用上 C++ 11。

个人建议先学习 C 再学习 C++，**不建议**直接学习 C++。

* **C Primer Plus 中文版（第 6 版）**：中文版正文 541 页，英文原版出版于 2014 年，黑白印刷。是 C 语言的经典入门书籍，涵盖全面。需要注意的是本书纸张较大，并且字体较小，因此内容量实际上会比按页数直接估算的多上一些。翻译不错。
* **C++ Primer 中文版（第 5 版）**：中文版正文 762 页，英文原版出版于 2012 年，黑白印刷。C++入门最推荐的书，虽然比较长但其实不难理解，不过也至少需要读者对变量、循环、判断这些概念有一些基本的了解才能阅读。使用 C++ 11 标准。翻译一般。
* **C++ Primer Plus 中文版（第六版）**：中文版正文 678 页，英文原版出版于 2011 年，黑白印刷。需要注意的是本书和上面那本《C++ Primer》无关，甚至作者也不同。本书的作者同时也是《C Primer Plus》的作者史蒂芬·普拉达。本书也是入门书，可作为《C++ Primer》的替代品，相较于《C++ Primer》本书更加注重细节，文风比较亲切。一般来说，由于本书的理解难度较上一本更大，因此更推荐上面的《C++ Primer》作为入门书。不过阅读难度毕竟因人而异，很难说哪本更好，看个人口味。使用 C++ 11 标准。翻译一般。
* **STL 源码剖析**：正文 460 页，出版于 2002 年，黑白印刷。作者侯捷是知名 C++领域布道者。本书作为 C++ STL 标准库的源码导读，是很适合作为 C++进阶的。有一定阅读门槛。缺点是真的比较老了，只能看个思路，很多地方和现在的 STL 标准库实现完全是对不上的。我估摸着这本书没出第 2 版就是因为 STL 现在已经更新得越来越不像人类能看懂的东西了。
* **Effective C++/More Effective C++/Effective Modern C++**：三本书放在一起讲了。这三本书都是深入掌握 C++所应当阅读的，如果你日常编写的 C++代码基本处于 C++ 11 之前，那么阅读前两本足矣，如果涉及 C++ 11 及之后版本，那么应当阅读 Effective Modern C++（然而即使不写 C++ 11 我也强烈推荐阅读第三本）。这三本书介绍了写出高质量可维护 C++代码应当遵守的原则，如果你经常编写 C++代码，那么应当通读好几遍，并且时不时就拿起来翻一下。当然，要是你日常就拿 C++写点小玩具或是只用来打竞赛，那当我没说，这些书你看都不用看一眼。
