为什么又要一个 Awesome C++ 列表?因为光有链接还不够
先把最大的误会拆掉:Tutorial_AwesomeModernCPP(我们简称它 TAMCPP)不是一份 Awesome C++ 列表。仓库名里的 "Awesome",只是 Awesome-Embedded-Learning-Studio 这套教程的命名习惯——你看旁边还有 Tutorial_AwesomeQt、Tutorial_AwesomeHardware,前缀都是 "Tutorial_Awesome*"。它自个儿的定位也写得明明白白:"一套面向工程实践的现代 C++ 系统教程"——是教程,不是 awesome-list。
所以这篇不是来踩列表的。恰恰相反,现有的几份列表非常好用,笔者自己现在还天天翻。我们想讲清楚的是:TAMCPP 和它们压根不在一个类目里。列表回答"有什么",教程回答"接下来读什么、按什么顺序、带什么背景、又怎么真正练手"。两件事,并列存在。
这些列表已经做得很好——尊重它们
笔者很乐意分享一下这些了不起的开源项目:
以及大名鼎鼎的,大伙论证自己观点时都会搬出来的权威网站cppreference。
大多数 C++ 开发者迟早会去翻这些参考书架。
它们广、有人维护,而且每多一个人提 PR 加个好库,它们就好一点。
列表真正强在哪:发现、广度,还有保持时新。一个社区维护的列表,能跟上一个快速变化的生态——这是任何单一教程都做不到的实打实的优势。TAMCPP 是去依赖这些列表,而不是想复制它们。真要说,学完我们的教程,你会更懂得怎么去那些列表里挑东西。
链接列表在哪里不够用
一个链接告诉你"有这么个东西"。它不告诉你先学什么、第一遍可以跳过什么,也不告诉你某个 C++17 特性其实悄悄预设了哪个 C++11 基础,更不告诉你两个特性怎么互相作用、某个模式为什么在真实代码库里反复出现。
这道缝,不是覆盖面——链接早都在那儿了。这道缝是叙事和顺序:一条穿过这些材料的路径,前置知识讲明白,"为什么"贴在"是什么"旁边。
TAMCPP 到底是什么
一句话:一条带可编译示例的学习路径。它长这样——
一套十卷的课程,而不是一份目录。 TAMCPP 按顺序组织成十卷:卷一 C++ 基础、卷二现代特性、卷三标准库、卷四进阶主题、卷五并发、卷六性能、卷七工程实践、卷八领域应用、卷九读开源项目、卷十课程笔记。重点不是"这是学 C++ 的唯一顺序",而是——有这么一个顺序,每一卷都默认你读过前面那些。这能消掉那种"我到底从哪开始"的瘫痪感。另外还有 cpp-reference 特性速查卡、compilation 编译原理、projects 实战项目三条支线。
工程语境,而不只是特性清单。 对每个特性,我们想讲清它为什么存在、在真实代码里出现在哪。移动语义不是"这是 std::move",而是"你一直在付出的那次拷贝,它为什么重要,以及用得好的那个模式长什么样"。这种语境,恰恰是链接合集给不了的——因为它不是链接的属性,而是围绕链接的那段讲解的属性。
练手胜过索引。 这是最关键的一处区别。每个示例都组织成 CMake 工程,能在 CI 里真编译——一份列表把你指向代码;一份教程把"你能 build、能弄坏、能在自己机器上修好"的代码递到你手里。CI 里分两条线:一条在 host 上用 g++-14 构建,一条用 arm-none-eabi 交叉编译 STM32。因为我们很多人就工作在嵌入式这个角落里,所以卷八里有一条完整的 STM32F1(STM32F103C8T6)实战支线,从点亮 LED 到串口日志,每个都是带 linker script 和 HAL 配置的真项目。而且这个支线仍然在持续蓬勃的发展!
整套东西还跑在一个我们自己搭的 VitePress 文档站上,带搜索、导航和暗色模式,GitHub Pages 自动部署。所以,您喜欢的话甚至可以随意fork,打造成专属于自己的C++学习网站!
它面向谁
TAMCPP 面向想系统学 C/C++、不想在零散材料里绕远路的人;面向有 C 或嵌入式经验、想把现代 C++ 用到真实工程里的开发者;也面向想补强并发、性能、构建系统、调试和源码阅读的现有 C++ 开发者。它也老实承认自己不是什么:它反映的是穿过这门语言的一条特定路径,带着这条路径所有的偏好和盲区。如果你已经深陷模板元编程、或是在追最新的标准化草案,那些列表会比这里更适合你。
接下来去哪
如果"路径而非列表"这个说法对得上你——如果你一直泡在 C++ 标签页里淹着,想要一条能一步步走的序列——仓库就是那些卷真正在的地方:
👉 GitHub 上的 Tutorial_AwesomeModernCPP
它和那些 awesome-cpp 列表一样,眼睛越多越好。如果你发现一处缺口、一个错误,或某一章让你看丢了——那正是能把一份教程,变成整个社区都能学着用的东西的反馈。