跳到内容
第九卷

语言深度

比较类型、内存、并发与运行时模型,理解语言特性背后的工程代价。

安全审查中,同一类错误在不同语言里呈现出完全不同的形态。你和阿花回到语言工坊,拆开类型系统、泛型、内存管理、并发模型和虚拟机,研究一门语言允许什么、阻止什么,又把哪些责任留给程序员。

旅程位置:安全要塞 → 语言工坊(理解语言选择的边界)→ 数学瞭望塔

前置要求

需要编程基础,至少熟悉两门语言(如 Java + Python)。

完成标志:理解类型系统分类、内存模型、并发模型差异、函数式编程思想、JVM 字节码、元编程。

第1章·第1课 类型、子类型与多态 已完成

从类型判断、子类型关系到参数多态,建立讨论类型系统的共同语言。

第1章·第2课 泛型与型变 已完成

理解协变、逆变、不变,以及擦除与单态化带来的运行时差异。

第1章·第3课 代数数据类型与类型推导 已完成

用和类型、积类型与穷尽检查,让非法状态更难进入程序。

第2章·第1课 运行时存储与逃逸 已完成

区分语言语义与运行时实现,理解栈帧、对象表示、值语义和逃逸分析。

第2章·第2课 内存管理 已完成

比较 Tracing GC、引用计数与所有权,按延迟、吞吐和资源语义选机制。

第2章·第3课 语言内存模型 已完成

从原子性、可见性和有序性推导 Happens-Before,而不是凭直觉猜并发结果。

第3章·第1课 共享内存并发 已完成

用锁、原子操作和状态所有权维护跨线程不变量。

第3章·第2课 Actor、Channel 与背压 已完成

比较状态所有权与通信通道,补齐容量、关闭和故障协议。

第3章·第3课 Async、结构化并发与 STM 已完成

约束任务生命周期,并理解异步、并行和事务内存的适用边界。

第4章·第1课 纯函数与不可变数据 已完成

从隐藏输入和可变状态出发,建立可测试的函数式核心。

第4章·第2课 高阶函数与组合 已完成

把规则和控制策略分开,并掌握 Stream 的惰性与生命周期边界。

第4章·第3课 代数抽象与副作用 已完成

从组合规律理解 Monoid、Functor、Applicative 与 Monad。

第5章·第1课 Class 文件与栈帧 已完成

用 javap 追踪常量池、描述符、局部变量表和操作数栈。

第5章·第2课 加载、链接与调用 已完成

理解类生命周期、方法分派和 invokedynamic 调用点。

第5章·第3课 JIT、去优化与观测 已完成

区分规范保证与实现优化,用运行时证据诊断性能。

第6章·第1课 编译期元编程 已完成

区分宏、注解处理与独立代码生成的阶段和契约。

第6章·第2课 运行时元编程 已完成

掌握反射、代理、装饰器与类创建的能力和代价。

第6章·第3课 DSL 设计 已完成

从语法进入语义、工具链、版本演进和安全执行边界。

本卷共 6 章,按渐进课时拆分为 18 篇;专业内容初稿已完成,等待集中校验。

完整课目

本卷按“章 → 编号课次”组织。8.1、8.2 这样的文件是第 8 章下连续的短课,不是两个重复章节。

第 1 章:类型、子类型与多态:程序能做什么

第 2 章:运行时存储:栈帧、对象、值语义与逃逸

第 3 章:共享内存并发:锁、原子操作与不变量

第 4 章:纯函数与不可变数据:先控制变化

第 5 章:Class 文件与栈帧:读懂 javap 输出

第 6 章:编译期元编程:宏、注解处理与代码生成

Built with VitePress | Software Systems Atlas