核心问题:学完基础后该做什么?#
- 现状:许多人看完了视频、读完了教科书、甚至通过了大学考试,但依然觉得不会自由地编写代码,无法“流利”地使用 C++。
- 核心建议:沉浸在开源项目(Open Source Projects)中。
真实世界的代码 vs. 教科书#
- 差异:教科书和作业里的代码(如实现一个 Vector 或 List)是教学性质的,而现实世界的代码规模更大、逻辑更复杂。
- 面试视角:雇主想看到的是你理解软件是如何构建的,以及你是否见过并能处理真实代码库中的复杂性。
“语言学习”的类比#
- 学习环境:学习编程就像学外语(德语或日语)。只看语法书和做练习是不够的,你必须开始看电视、电影,甚至搬到那个国家居住。
- 编程沉浸:对于 C++,这意味着你需要阅读、运行并尝试修改别人的代码,让自己置身于那个语言环境中。
如何开始?选择你感兴趣的项目#
- 兴趣导向:
- 喜欢游戏?去 GitHub 找简单的开源游戏(如 Mario 克隆版或 80 年代街机游戏)。
- 喜欢引擎?研究 Unreal Engine、Godot 或 Cherno 自己的 Hazel 引擎。
- Bug 赏金计划 :参与寻找 C++ 代码中的 bug,这不仅能锻炼能力,有时还能获得报酬。
什么时候可以开始“沉浸”?#
结论:随时。 即使你觉得还太早,也不必担心。就像没学多少日语就去日本一样,虽然痛苦,但那是进步最快的方式。
实战演示:分析 OpenCV 源码#
- 流程:从 GitHub 克隆项目 -> 使用 CMake 生成 VS 工程 -> 编译并运行。
- 工具辅助(PVS-Studio) :Cherno 演示了使用静态分析工具查看 OpenCV 源码中的潜在错误。
- 学习点 :例如通过分析宏定义中的 if 语句冗余问题,你可以学到更深层的编码经验,这些是只看语法书学不到的。
总结:超越代码本身的收获#
通过阅读开源项目,你不仅学会了写 C++,还学会了:
- 构建系统:理解为什么使用 CMake 而不仅仅是 Visual Studio。
- 项目组织:大型工程是如何模块化和组织的。