学习 C++
跌跌撞撞,兜来绕去,终究还是在 C++ 这个圈子里。毕业时,因为身外事去选择工作单位,而工作单位决定了工作性质,决定了自己处在做软件的边缘,甚至一度成为网管。两年之后跳出陷阱时,背负着“过去的选择”走进了 C++ 的世界,因为一无所长,在诸多技术更迭交替的 IT 圈我像个刚入门的新人似的,只了解一点点 VC++。我没有从头来过的魄力,我也并不清楚 Java 是否更有前途,互联网是否更多辛苦。
在毕业刚好三年的边上,想着“就是 C++ 了”其实很愚蠢。通过做决定安慰自己“明智”,其实只是没得选择的妥协。此时此刻应该想的是“如何学好 C++”,更现实一点“掌握 C++ 的哪些内容,能找到更好的工作”。暂时确定的目标:
- 会写代码。强调编码规范。
- 会编写类,使用类。强调抽象思维。
- 数据库操作,封装
- 并发(多线程),POSIX、boost、C++11原生支持
- 通信,socket 编程
曾经完美主义,现在坚持实用主义。站在公司的角度考虑,现实中生产使用,强调实用性。如果新特性带不来生产力上的提升,是不会有公司买账的。就是说是否掌握 C++11 甚至更新的特性,对找工作没有最直接的影响,如果带不了更高的生产力,都是空谈。不应该只为了关注新特性,学究式地死板地投入时间精力,要明白花时间做一件事的初衷、目的、意义和价值。举例来说,做并发时是否使用 C++11 的原生支持,在投产使用时没有什么影响的,重要的是能否解决问题,解决问题的能力,关键是把并发做出来,用什么技术往往并不重要。
那就好好学 C++11。工欲善其事,必先利其器。看看 C++ compiler support ,编译器有了,编辑代码呢?主要关注代码提示,开发者体验。
- 在 Windows 上考虑使用 VS2015。个人观点,除了太大并不排斥 VS。
- Linux 上呢?很难找到完善支持 C++11 代码提示的 IDE…Vim代码补全
- Vim 和 IDE 之争 - 知乎,个人观点,两者会越来越像,追求生产力。
基础
在此介绍基础知识,惯用函数,std::string
常用方法,常用容器的使用等等,原则就是“作为日常编写代码时的参考”。
线上参考手册,使用 cppreference.com 网站就可以。
网站
我把 C++ 学习过程中整理的帖子分为三类:
- code?这个名字待定,多是一些基本操作、函数的用法等等,标题可以用“如何XXXX”开篇的
- idioms 惯用法,包括 RAII 等,广义上还包括设计模式在内
- concept 概念,指对 C++ 中概念的理解,广义上包括对关键词的理解
- others 比如学习计划、学习书籍和学习笔记等,但也都和 C++ 有关。这个不再单拎出来,就在 cpp 下