最近读到一篇来自 CodeUtopia 的博客推荐,观点颇为深刻:编程本质上是一种"理论构建"活动,而非单纯的代码编写。这篇推荐指向了 Peter Naur 的经典论文《Programming as Theory Building》。
什么是"理论构建"
Naur 在论文中提出了一个核心概念:程序员的真正工作不是在写代码,而是在头脑中构建关于程序的"理论"。这个理论包括:对程序功能的理解、对需求的理解、以及对程序各部分如何协同运作的理解。
代码、文档、图表……这些都只是传达设计意图的工具。清洁代码、架构设计、测试、文档——所有这些软件实践,最终都是为了方便人与人之间交流程序的内在逻辑。

关键论断:没有理论支撑的修改必然是 hacky 的
Naur 有一个颇为犀利的论断:如果你在没有理解底层理论的情况下去修改程序,你的修改方式必然是"hacky"的——表面上看解决了问题,实则埋下了隐患。
这是因为代码的逻辑并非孤立的指令序列,而是嵌入在一个更大的"理论"框架中的。如果你看不到这个框架,只盯着具体的代码行,很容易做出与整体设计意图相悖的修改。
设计模式与 DDD 的新视角
换个角度思考,设计模式和领域驱动设计(DDD)为什么有用?因为它们帮助开发者在代码中表达和传达"理论"。一个设计模式不只是解决某个技术问题的套路,更是一种共享的心智模型——让团队成员能够用共同的语言理解代码。
从这个视角来看,许多软件工程中的最佳实践都可以被统一起来:它们都在服务于同一个目标——传达程序的理论。
值得一读的原论文
Naur 的这篇论文篇幅不长,但观点却相当有穿透力。如果你对软件工艺、软件哲学感兴趣,非常值得找原文读一读。它能帮助你看清许多看似零散的概念——代码质量、文档、技术沟通——之间的内在联系。
参考来源:You should read Programming as Theory Building - CodeUtopia