核心问题:学完基础后该做什么?#

  • 现状:许多人看完了视频、读完了教科书、甚至通过了大学考试,但依然觉得不会自由地编写代码,无法“流利”地使用 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。
  • 项目组织:大型工程是如何模块化和组织的。