在LLM时代,代码的本质是什么?Unmesh Joshi 将其分为两个层面:一是给机器的指令,正被LLM商品化;二是问题域的概念模型,作为推理和理解系统的概念体系,这才是代码的核心价值。设计良好的代码库是特定领域词汇表的具象化,精准命名、边界和层级需在迭代中发现。领域驱动设计的有界上下文和通用语言在此延伸,核心业务抽象需本地构建。编程语言本身是思维工具,影响开发者对结构的认知。因此,开发者应强化建模能力和精准词汇构建,而非语法生成。
什么是代码?
Unmesh Joshi 是 Thoughtworks 的首席工程师,也是《Patterns of Distributed Systems》的作者。他在 https://martinfowler.com/articles/what-is-code.html 发表了一篇追问性质的文章,问题只有一句话:LLM 时代,代码究竟是什么?
他的回答把代码拆成两个层面。第一个层面是给机器的指令,指挥计算、移动数据、协调执行;这个层面正在被 LLM 商品化,不再是稀缺能力。第二个层面是问题域的概念模型,是人类和工具用来推理、理解系统的那套概念体系;这个层面才是代码真正难以被替代的价值。
词汇表是这篇文章的核心意象。一个设计良好的代码库,本质上是某套词汇表的具象化。做零售领域的开发,代码里会出现客户、商品、订单、发货、支付;做 Web 开发,就要把零售词汇映射到 HTTP 方法和资源语义上。概念变成类型,关系变成接口,规则变成不变量,流程变成组合。精准的变量命名、合适的方法边界、合理的类层级,都要在持续迭代中一步步发现,而不是一开始就能想清楚。
DDD 的有界上下文和通用语言,在这里得到了自然的延伸。越靠近核心业务模型,抽象越需要本地发现,无法靠通用框架解决。这不是框架设计的局限,而是领域词汇本身就缺乏跨实例的稳定性。
编程语言本身也是思维工具。Go 的 channel 和轻量级线程、Java 的面向对象模型、Rust 的所有权模型,都会推动开发者用特定的方式看待结构和边界。语言不只是表达设计的手段,更是发现设计的工具。这也是为什么 Unmesh Joshi 认为,主动写代码和被动 review 生成代码是两种本质不同的认知活动。