docs: 追加学习资源、语言对照表、实战示例、训练路径
This commit is contained in:
parent
6608c99aa6
commit
8fa5a35434
|
|
@ -403,3 +403,118 @@ fn foo(x: Option<T>) -> Result<U, E>
|
|||
4. 我知道作者在防什么吗?(L12)
|
||||
|
||||
✅ **全 YES = 真·100% 看懂**
|
||||
|
||||
---
|
||||
|
||||
# 十、各层级学习资源推荐
|
||||
|
||||
| 层级 | 推荐资源 |
|
||||
|:---|:---|
|
||||
| L1 控制语法 | 任意语言官方教程 |
|
||||
| L2 内存模型 | 《深入理解计算机系统》(CSAPP) |
|
||||
| L3 类型系统 | 《Types and Programming Languages》 |
|
||||
| L4 执行模型 | 《JavaScript 异步编程》、Rust async book |
|
||||
| L5 错误模型 | Go/Rust 官方错误处理指南 |
|
||||
| L6 元语法 | Python 装饰器源码、Rust 宏小册 |
|
||||
| L7 范式 | 《函数式编程思维》、Haskell 入门 |
|
||||
| L8 领域生态 | 框架官方文档 + 源码 |
|
||||
| L9 时间模型 | 性能分析工具实战(perf、py-spy) |
|
||||
| L10 资源模型 | 《性能之巅》(Systems Performance) |
|
||||
| L11 隐含契约 | 阅读知名开源项目 CONTRIBUTING.md |
|
||||
| L12 设计意图 | 参与 Code Review、读 RFC/设计文档 |
|
||||
|
||||
---
|
||||
|
||||
# 十一、常见语言层级对照表
|
||||
|
||||
| 层级 | Python | Rust | Go | JavaScript |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| L2 内存 | 引用为主,GC | 所有权+借用 | 值/指针,GC | 引用为主,GC |
|
||||
| L3 类型 | 动态,type hints | 静态,强类型 | 静态,简洁 | 动态,TS可选 |
|
||||
| L4 执行 | asyncio/GIL | tokio/async | goroutine/channel | event loop |
|
||||
| L5 错误 | try/except | Result/Option | error返回值 | try/catch/Promise |
|
||||
| L6 元语法 | 装饰器/metaclass | 宏 | go generate | Proxy/Reflect |
|
||||
| L7 范式 | 多范式 | 多范式偏FP | 过程式+接口 | 多范式 |
|
||||
| L9 时间 | GIL限制并行 | 零成本异步 | 抢占式调度 | 单线程事件循环 |
|
||||
| L10 资源 | CPU受限于GIL | 零开销抽象 | 轻量goroutine | IO密集友好 |
|
||||
|
||||
---
|
||||
|
||||
# 十二、实战代码剥洋葱示例
|
||||
|
||||
以 FastAPI 路由为例,逐层分析:
|
||||
|
||||
```python
|
||||
@app.get("/users/{user_id}")
|
||||
async def get_user(user_id: int, db: Session = Depends(get_db)):
|
||||
user = await db.execute(select(User).where(User.id == user_id))
|
||||
if not user:
|
||||
raise HTTPException(status_code=404)
|
||||
return user
|
||||
```
|
||||
|
||||
| 层级 | 你要看到什么 |
|
||||
|:---|:---|
|
||||
| L1 | 函数定义、if、return |
|
||||
| L2 | `user` 是引用,`db` 是共享连接 |
|
||||
| L3 | `user_id: int` 类型约束,自动校验 |
|
||||
| L4 | `async/await` 非阻塞,不占线程 |
|
||||
| L5 | `HTTPException` 中断请求,框架捕获 |
|
||||
| L6 | `@app.get` 装饰器注册路由,`Depends` 依赖注入 |
|
||||
| L7 | 声明式路由,函数式处理 |
|
||||
| L8 | FastAPI 约定、SQLAlchemy ORM |
|
||||
| L9 | 每个请求独立协程,`await` 让出控制权 |
|
||||
| L10 | IO 密集(数据库查询),适合异步 |
|
||||
| L11 | `db` 必须线程安全,不能跨请求共享状态 |
|
||||
| L12 | 作者用类型+DI 强制规范,防止裸 SQL 和硬编码 |
|
||||
|
||||
---
|
||||
|
||||
# 十三、从 L1→L12 的训练路径
|
||||
|
||||
## 阶段一:基础层(L1-L3)
|
||||
- **方法**:刷题 + 类型体操
|
||||
- **目标**:语法熟练、类型直觉
|
||||
- **练习**:
|
||||
- LeetCode 100 题(任意语言)
|
||||
- TypeScript 类型体操
|
||||
- Rust 生命周期练习
|
||||
|
||||
## 阶段二:执行层(L4-L6)
|
||||
- **方法**:读异步框架源码
|
||||
- **目标**:理解运行时行为
|
||||
- **练习**:
|
||||
- 手写简易 Promise
|
||||
- 阅读 asyncio 源码
|
||||
- 写一个 Python 装饰器库
|
||||
|
||||
## 阶段三:范式层(L7-L9)
|
||||
- **方法**:跨语言重写同一项目
|
||||
- **目标**:理解设计取舍
|
||||
- **练习**:
|
||||
- 用 Python/Go/Rust 实现同一个 CLI 工具
|
||||
- 对比三种实现的性能和代码量
|
||||
- 分析各语言的时间模型差异
|
||||
|
||||
## 阶段四:架构层(L10-L12)
|
||||
- **方法**:参与开源 Code Review
|
||||
- **目标**:读懂设计意图
|
||||
- **练习**:
|
||||
- 给知名项目提 PR 并接受 review
|
||||
- 阅读 3 个项目的 RFC/设计文档
|
||||
- 写一份 API 设计文档并让他人 review
|
||||
|
||||
---
|
||||
|
||||
# 十四、终极检验:你到了哪一层?
|
||||
|
||||
| 能力表现 | 所在层级 |
|
||||
|:---|:---|
|
||||
| 能写出能跑的代码 | L1-L3 |
|
||||
| 能调试异步/并发 bug | L4-L6 |
|
||||
| 能快速上手新语言 | L7-L8 |
|
||||
| 能做性能优化 | L9-L10 |
|
||||
| 能写出生产级代码 | L11 |
|
||||
| 能设计 API/架构 | L12 |
|
||||
|
||||
> 🎯 **目标不是"学完 12 层",而是"遇到问题知道卡在哪一层"**
|
||||
|
|
|
|||
Loading…
Reference in New Issue