01 · 第一份程序:保存、编译与顺序执行 从终端和纯文本文件开始,逐个读懂第一份C++程序,再用两个小整数例子解释初始化、赋值、独立副本与重新编译。 | 2 个图解 | 7 份文件 | 章内阶梯与练习 | 6 |
02 · 类型与表达式:先运算,再保存 从类型和字面量出发,亲手预测整数除法、初始化、转换时机、const和标量auto,最后区分无符号回绕、有符号越界与浮点舍入。 | 2 个图解 | 11 份文件 | 章内阶梯与练习 | 6 |
03 · 控制流:选择与重复 先读懂条件、分支和循环的下一步,再独立完成半开区间累计与偶数计数,追踪短路、更新和提前退出。 | 2 个图解 | 14 份文件 | 章内阶梯与练习 | 6 |
04 · 普通函数:参数、调用与返回 沿着一次调用追踪形参、返回值与调用者,练习默认实参、简单重载和有范围的计数函数。 | 2 个图解 | 14 份文件 | 章内阶梯与练习 | 6 |
05 · 引用与const:副本和同一个对象 用具名整数追踪别名、参数写回、只读路径与借用有效期;从状态变化理解auto和局部返回。 | 2 个图解 | 14 份文件 | 章内阶梯与练习 | 6 |
06 · 指针:地址、空值与有效访问 分清改目标与改指向,跟踪指针副本、可选借用、const分层和最后一次合法访问。 | 2 个图解 | 14 份文件 | 章内阶梯与练习 | 6 |
07 · 类与对象:状态、接口和销毁顺序 把状态和允许的操作放进同一个类型,追踪初始化、失败不变和正常退出时的销毁过程。 | 2 个图解 | 17 份文件 | 章内阶梯与练习 | 6 |
08 · 拥有一组数据:array、vector与string 从类型实参和合法下标开始,区分元素数量与预留容量,再用独立复制和溢出前检查建立可靠的序列操作。 | 2 个图解 | 16 份文件 | 章内阶梯与练习 | 6 |
09 · 遍历与借用:范围、视图与失效 用同一组读数比较下标、迭代器与范围for;让视图借用已有元素,再逐步判断存活、长度、重分配和记录身份。 | 3 个图解 | 16 份文件 | 章内阶梯与练习 | 6 |
10 · 算法与lambda:表达处理意图 从手动计数走到查找、排序、累计和谓词;分清调用时机、闭包持有的状态,以及算法怎样修改元素或范围。 | 2 个图解 | 16 份文件 | 章内阶梯与练习 | 6 |
11 · 关联容器与适配器:查找、唯一性与访问顺序 先识别一对值与绑定方式,再区分按键查询、插入和计数;用同一批小任务比较有序集合、哈希表、双端容器、队列与栈。 | 2 个图解 | 10 份文件 | 章内阶梯与练习 | 6 |
12 · 复制与移动:追踪对象、调用与结果 先区分表达式类别、const和对象寿命,再预测复制/移动构造与赋值;用标量日志和容器值理解std::move、返回值与Rule of Zero。 | 2 个图解 | 11 份文件 | 章内阶梯与练习 | 6 |
13 · 真实资源与RAII:独占拥有 追踪new创建的真实对象由谁释放,再用unique_ptr管理正常退出、提前返回、转交和接口接管;分清空拥有者、有效借用与释放责任。 | 2 个图解 | 8 份文件 | 章内阶梯与练习 | 6 |
14 · 共享拥有与回调寿命 用最后一个强拥有者、weak_ptr的lock以及回调自带的状态,判断对象何时仍可用;再检查C++20 std::function的空状态和可复制目标要求。 | 2 个图解 | 7 份文件 | 章内阶梯与练习 | 6 |
15 · 定义模板与concepts 从会填模板实参走到定义模板,按实参推导、编译期分支与约束选择可用接口;再用转发引用解释泛型调用如何保留表达式类别。 | 2 个图解 | 8 份文件 | 章内阶梯与练习 | 6 |
16 · 错误处理与输入解析 把合法零、没有值和失败分开传递:先从输入得到经过完整检查的候选值,再提交修改;用真实资源观察异常展开,并判断noexcept承诺怎样影响明确的移动选择。 | 2 个图解 | 12 份文件 | 章内阶梯与练习 | 6 |
17 · 多文件编译、链接与构建 把头文件、实现与main组成真正的项目,沿预处理、编译、汇编、链接追踪产物;亲自制造缺定义和重复入口的链接错误,再用明确目标与可复现命令恢复。 | 2 个图解 | 8 份文件 | 章内阶梯与练习 | 6 |
18 · 测试与调试:独立定位失败 从独立期望与实际检查次数开始,用同一处整数除法错误练习失败退出、LLDB定位、改源重编译和边界复测;分清断言被移除与检查真正执行。 | 2 个图解 | 5 份文件 | 章内阶梯与练习 | 6 |
19 · 数组、哈希与双指针:重复工作从哪里删掉 DSA / hash / two-pointers / sliding-window | 3 步 | 2 个例子 | 2 道练习 | 6 |
20 · 二分、排序与堆:保留哪些候选 DSA / binary-search / heap / sort | 4 步 | 2 个例子 | 2 道练习 | 6 |
21 · 递归、树与图:沿着依赖和边访问 DSA / recursion / tree / DFS / BFS | 4 步 | 2 个例子 | 2 道练习 | 6 |
22 · 动态规划与解题表达:状态必须回答一句话 DSA / DP / recurrence / interview | 4 步 | 2 个例子 | 2 道练习 | 6 |
23 · 进程、系统调用与文件描述符 Linux / POSIX / process / file descriptor | 3 步 | 2 个例子 | 2 道练习 | 6 |
24 · 虚拟内存、页表与 mmap Linux / virtual memory / mmap | 3 步 | 2 个例子 | 2 道练习 | 6 |
25 · 线程、互斥锁与死锁 threads / mutex / deadlock | 3 步 | 2 个例子 | 2 道练习 | 6 |
26 · 条件变量、有界队列与关闭协议 condition variable / queue / shutdown | 3 步 | 2 个例子 | 2 道练习 | 6 |
27 · 原子操作与 happens-before atomics / memory ordering / happens-before | 3 步 | 2 个例子 | 2 道练习 | 6 |
28 · TCP 字节流、分包、超时与背压 TCP / framing / timeout / backpressure | 3 步 | 2 个例子 | 2 道练习 | 6 |
29 · CPU cache、缓存一致性与 SIMD cache / coherence / SIMD / false sharing | 3 步 | 2 个例子 | 2 道练习 | 6 |
30 · 可信测量、原始样本与性能模型 benchmark / Amdahl / roofline / raw samples | 3 步 | 2 个例子 | 2 道练习 | 6 |
31 · 并行分解、分块与负载均衡 parallel decomposition / partition / load balance | 3 步 | 2 个例子 | 2 道练习 | 6 |
32 · Reduction、scan 与数值正确性 reduction / scan / numerical accuracy | 4 步 | 2 个例子 | 2 道练习 | 6 |
33 · Host/device、传输与异步生命周期 host device / transfer / async / lifetime | 3 步 | 2 个例子 | 2 道练习 | 6 |
34 · Kernel 索引、边界与 grid-stride loop kernel indexing / bounds / grid-stride | 3 步 | 2 个例子 | 2 道练习 | 6 |
35 · 合并访问、共享内存与同步范围 coalescing / shared memory / barrier | 3 步 | 2 个例子 | 2 道练习 | 6 |
36 · Tensor shape、stride 与 GEMM 分块 tensor / stride / GEMM / tiling | 3 步 | 2 个例子 | 2 道练习 | 6 |
37 · HIP:从 CPU 数据到一次 kernel 调用 amd / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
38 · Streams 与 events:用依赖组织异步工作 amd / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
39 · ROCm 各层:一次请求由谁负责 amd / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
40 · HIP Reduction:从正确性到 profiling 问题 amd / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
41 · Tensix 与 tiles:先安排数据,再安排计算 tenstorrent / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
42 · TTNN 与 Metalium:不同抽象保留同一份数学合同 tenstorrent / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
43 · Reader、compute、writer:缓冲区里的生产与消费 tenstorrent / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
44 · Tenstorrent 端到端例子:让每一层对同一结果负责 tenstorrent / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
45 · WSE 与 PE:把数据放在拥有它的计算节点旁边 cerebras / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
46 · CSL 与 host:装载、启动、回读是一份共同合同 cerebras / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
47 · 多PE scan:消息里到底应该传什么 cerebras / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
48 · 功能模型、simulator 与硬件:分别证明什么 cerebras / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
49 · AST、IR 与 SSA:同一个表达式的三种表示 compiler / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
50 · 优化首先要合法:别名、溢出与浮点重排 compiler / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
51 · Tensor lowering 与内存规划:值什么时候可以共用一块空间 compiler / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |
52 · ABI、装载与 runtime:找到函数还不等于能安全调用 compiler / C++20 / 工作原理 | 3 步 | 2 个例子 | 2 道练习 | 6 |