A Story of Programming Languages

编程语言的故事

一间书店,两位程序员,一卷 1986 年的纸带。
从机器码到 AI 大模型,把编程语言的概念家族树,装进一段真实的软件开发历程。

编程语言的所有概念,都是“人类偷懒 + 防错”的产物。
越往上,抽象越高,离硬件越远,但离“人的思维”越近。

CHAPTERS章节总览 · 从收银机到 AI 荐书助手

OPENING · 开场白
云间书店与两个程序员
九月的第一个周一,师傅老周把一台落灰的旧收银机搬到桌上,徒弟小陈的第一课就此开始。
家族树地图 · 总览
CH.01 · 第一章
基石:从机器码到控制流
1986 年的打孔纸带、汇编助记符、给数据起名字,以及让程序能选择、能重复的控制流。
根 + 第一层
CH.02 · 第二章
复用:函数与数据组织
三处一模一样的折扣代码,5 万本书怎么存?函数、递归、数组、结构体与指针轮番登场。
第二层 + 第三层
CH.03 · 第三章
封装:类与代码复用进阶
书店开始卖杂志和文创,商品体系乱成一锅粥——模块、类、继承、多态、泛型救场。
第四层 + 第五层
CH.04 · 第四章
稳健:内存管理与错误处理
2005 年双十一凌晨三点,服务器内存泄漏全线宕机——那堂用事故换来的课。
第六层 + 第七层
CH.05 · 第五章
并行:并发异步与函数式
秒杀上线,库存被抢成了负数。锁、通道、async/await、Actor,还有函数式的优雅。
第八层 + 第九层
CH.06 · 第六章
提效:元编程与领域专用语言
王姐要“一句话”生成报表,于是老周给她造了一门小语言——宏、反射、注解与 DSL。
第十层 + 第十一层
CH.07 · 第七章
未来:AI 与大模型时代
“给我一个 AI 荐书助手”——Prompt、RAG、Agent、MCP,编程语言家族树的树冠。
第十二层
FINAL · 终章
出师考试:问题对照表与一句话总结
王姐的 14 个“麻烦”,小陈的对答如流。一张对照表,收束整棵家族树。
全部 · 复习

FAMILY TREE编程语言概念家族树

根:机器能执行什么?
第十二层AI / 大模型时代
Prompt自然语言即代码 Agent自主规划 + 工具调用 MCP工具连接协议 RAG知识增强生成
第十一层领域专用
SQL HTML/CSS RegExp Shell DSL让非程序员也能写
第十层元编程
编译期生成代码 反射运行时自省 注解 / 装饰器贴标签
第九层函数式思想
一等函数 闭包 不可变数据 高阶函数map/filter/reduce 模式匹配
第八层并发与异步
多线程 锁 / 互斥 / 通道 异步 / async / await事件循环、协程 Actor 模型消息传递
第七层错误处理
返回值 / 错误码 异常try/catch/finally 断言 Result / Option
第六层内存管理
手动管理malloc/free 垃圾回收(GC) 所有权Rust 智能指针RAII
第五层代码复用进阶
继承IS-A 关系 多态同一接口不同实现 泛型 / 模板类型参数、约束
第四层抽象与封装
模块 / 命名空间 字段 + 方法打包 访问控制public/private 构造 / 析构方法
第三层数据组织
数组 / 列表 结构体 / 记录字段、对齐 指针 / 引用链表、树、图
第二层复用
函数 / 过程 / 子程序参数、返回值、作用域 递归自相似问题
第一层控制流
顺序执行 条件if / switch / match 循环for / while / do-while
机器能执行什么
机器码(0/1) 汇编MOV / ADD / JMP 变量给数据起名字

MAPPING问题 → 概念 对照表

你遇到的麻烦对应的概念云间书店的故事
记不住内存地址变量给书价起名 price
代码复制粘贴函数三处折扣逻辑抽成一个 apply_discount
全局变量被乱改类 / 模块Product.stock 被外部直接改成 -1
对象没初始化就用了构造方法负价格商品根本造不出来
假设错了但没发现断言发货前 assert order.status == "paid"
内存泄漏 / 悬空指针垃圾回收 / 所有权2005 年双十一凌晨三点的宕机
错误处理代码太乱异常 / Result秒杀时库存不足抛 OutOfStockError
等待 IO 时卡住异步 / await支付接口 500ms 不阻塞收银线程
写多遍类似代码泛型一套 top_n 通吃书/杂志/文创
并发数据竞争锁 / 通道 / Actor秒杀卖出 -3 本
配置太复杂DSL / 注解王姐用“一句话”自己生成报表
想让机器听懂人话Prompt / RAG / Agent / MCP云间书店的 AI 荐书助手
✌ 语言