寓言故事
可以被调用的一段吩咐
老厨房里有两种活。切菜、称盐、点火都有固定手法;写宴席菜单却靠大厨用话讲给学徒听。两类活分开做,勉强也能出菜。
后来宴席越来越复杂。账房想把菜单生成接到订货表,前厅想把客人口味接到菜谱,厨房却只会说:让大厨再讲一遍。
有人把大厨的话抄成一整页贴在墙上。每次要改口味、人数或预算,学徒就手工改几句。贴纸越改越乱,没人知道哪句是变量,哪句是规矩。
又有人把所有菜单都写成硬代码。这样稳定,却失去了语言的灵活性。客人说少油、避辣、适合老人,代码表很快膨胀。
新来的管事把大厨常说的那段吩咐装进一个小木盒。盒子有名字,有输入格:人数、预算、忌口、菜系。给它这些东西,它就按那段吩咐生成菜单。
旁边还有普通工具盒,能查库存、算成本、打印采购单。管事把两类盒子排在一条线上:先用语言盒出方案,再用普通工具盒校验和执行。
学徒发现,语言不再只是贴在墙上的提示,也不是藏在代码里的特例。它变成了可以被调用、组合和复用的厨房能力。
管事仍然限制盒子的用途。菜单盒不能直接下采购单,采购盒也不能擅自改客人口味。每个盒子有清楚的输入、输出和边界。大厨说:当一段自然语言吩咐能像函数一样被命名、传参和组合,它就从口头经验变成了系统部件。后来厨房又做了一个宴席改写盒。前厅给它客人偏好,它只产出菜单建议;账房给采购盒预算,它只算成本。管事不许两个盒子越界,因为一旦菜单盒能直接买菜,错一句话就会变成一车错货。厨房因此既保留了语言的弹性,又让每段吩咐有固定入口、出口和责任范围。后来学徒给每个盒子写了示例输入和错误输出。新厨师接手时,不必猜大厨口气,也能知道这段吩咐该怎样使用。能被调用,也要能被约束。