From 6608c99aa60a34b169d8f8dffa5b513254b9b466 Mon Sep 17 00:00:00 2001 From: tukuaiai Date: Fri, 19 Dec 2025 01:17:40 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=BF=BD=E5=8A=A0=20L9-L12=20=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E7=BA=A7=E5=B1=82=E7=BA=A7=E5=88=B0=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=B1=82=E8=A6=81=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i18n/zh/documents/00-基础指南/语言层要素.md | 188 +++++++++++++++++++- 1 file changed, 187 insertions(+), 1 deletion(-) diff --git a/i18n/zh/documents/00-基础指南/语言层要素.md b/i18n/zh/documents/00-基础指南/语言层要素.md index 2098c32..765d5ec 100644 --- a/i18n/zh/documents/00-基础指南/语言层要素.md +++ b/i18n/zh/documents/00-基础指南/语言层要素.md @@ -216,4 +216,190 @@ SELECT * FROM t WHERE id IN (...) > “我不知道这门语言,但我知道它在干什么。” -这才是**100% 的真实含义**。 \ No newline at end of file +这才是**100% 的真实含义**。 + +--- + +# 六、工程级追加:L9–L12(从"看懂"到"架构") + +> 🔥 把「能看懂」升级为「能**预测**、**重构**、**迁移**代码」 + +--- + +## 🧠 L9:时间维度模型(90% 人完全没意识到) + +你不仅要知道代码**怎么跑**,还要知道: + +```text +它在「什么时候」跑 +它会「跑多久」 +它是否「重复跑」 +它是否「延迟跑」 +``` + +### 你必须能一眼判断: + +```python +@lru_cache +def f(x): ... +``` + +* 是 **一次计算,多次复用** +* 还是 **每次都重新执行** + +```js +setTimeout(fn, 0) +``` + +* ❌ 不是立刻执行 +* ✅ 是 **当前调用栈清空之后** + +👉 这是 **性能 / Bug / 竞态 / 重复执行** 的根源 + +--- + +## 🧠 L10:资源模型(CPU / IO / 内存 / 网络) + +很多人以为: + +> "代码就是逻辑" + +❌ 错 +**代码 = 对资源的调度语言** + +你必须能区分: + +```text +CPU 密集 +IO 密集 +内存绑定 +网络阻塞 +``` + +### 示例 + +```python +for x in data: + process(x) +``` + +你要问的不是"语法对不对",而是: + +* `data` 在哪?(内存 / 磁盘 / 网络) +* `process` 是算还是等? +* 能不能并行? +* 能不能批量? + +👉 这是 **性能优化、并发模型、系统设计的起点** + +--- + +## 🧠 L11:隐含契约 & 非语法规则(工程真相) + +这是**99% 教程不会写**,但你在真实项目里天天踩雷的东西。 + +### 你必须识别这些"非代码规则": + +```text +函数是否允许返回 None +是否允许 panic +是否允许阻塞 +是否线程安全 +是否可重入 +是否可重复调用 +``` + +### 示例 + +```go +http.HandleFunc("/", handler) +``` + +隐藏契约包括: + +* handler **不能阻塞太久** +* handler **可能被并发调用** +* handler **不能 panic** + +👉 这层决定你是 **"能跑"** 还是 **"能上线"** + +--- + +## 🧠 L12:代码意图层(顶级能力) + +这是**架构师 / 语言设计者层级**。 + +你要做到的不是: + +> "这段代码在干嘛" + +而是: + +> "**作者为什么要这么写?**" + +你要能识别: + +```text +是在防 bug? +是在防误用? +是在性能换可读性? +是在为未来扩展留钩子? +``` + +### 示例 + +```rust +fn foo(x: Option) -> Result +``` + +你要读出: + +* 作者在**强制调用者思考失败路径** +* 作者在**拒绝隐式 null** +* 作者在**压缩错误空间** + +👉 这是 **代码审查 / 架构设计 / API 设计能力** + +--- + +# 七、终极完整版:12 层"语言层要素"总表 + +| 层级 | 名称 | 决定你能不能… | +|:---|:---|:---| +| L1 | 控制语法 | 写出能跑的代码 | +| L2 | 内存模型 | 不写出隐式 bug | +| L3 | 类型系统 | 不靠注释理解代码 | +| L4 | 执行模型 | 不被 async / 并发坑 | +| L5 | 错误模型 | 不漏资源 / 不崩 | +| L6 | 元语法 | 看懂"不像代码的代码" | +| L7 | 范式 | 理解不同风格 | +| L8 | 领域 & 生态 | 看懂真实项目 | +| L9 | 时间模型 | 控制性能与时序 | +| L10 | 资源模型 | 写出高性能系统 | +| L11 | 隐含契约 | 写出可上线代码 | +| L12 | 设计意图 | 成为架构者 | + +--- + +# 八、反直觉但真实的结论 + +> ❗**真正的"语言高手"** +> +> 不是某语言语法背得多 +> +> 而是: +> +> 👉 **同一段代码,他比别人多看 6 层含义** + +--- + +# 九、工程级自测题(非常准) + +当你看到一段陌生代码时,问自己: + +1. 我知道它的数据在哪吗?(L2 / L10) +2. 我知道它什么时候执行吗?(L4 / L9) +3. 我知道失败会发生什么吗?(L5 / L11) +4. 我知道作者在防什么吗?(L12) + +✅ **全 YES = 真·100% 看懂**