乐于分享
好东西不私藏

一个反直觉的事实:AI时代,代码比文档更适合承载企业知识

一个反直觉的事实:AI时代,代码比文档更适合承载企业知识

前言

很快我们就将进入人决策、AI执行的工作与生活模式,而当下由于大模型形成的提升,已经让”代码即文档,文档即代码” 成为现实,这就引出一个问题:在AI时代文档与代码,谁更适合承载知识?这个答案对人和大模型截然不同,这也是被AI所颠覆的一个领域。


一、核心结论(一图胜千言)

在展开之前,先用一张表格从不同的维度,说明文档与代码对于人与AI的差异:


二、对人:为什么文档远比代码友好?

2.1 认知负荷理论(Cognitive Load Theory)

人工作记忆极其有限(7±2 个组块)。阅读代码等于同时执行:

读代码的认知成本 = 语法解析 + 控制流追踪 + 状态推断 + 类型推导 + 副作用识别 + 意图猜测

每一步都在消耗珍贵的工作记忆。而文档直接给抽象后的心智模型

2.2 人理解一件事的典型路径

   下图是我们理解一件事情的典型路径

文档给人提供"地图",代码只是"地形"。没有地图走地形,对我们来说成本指数级上升。因此我们才会有屎山代码一词,才会让会编码成为我们额外的一项技能。
从传统的视角看:代码是在需求、设计文档之上长出来的东西,文档比代码重要上千倍,此时文档成为知识传承的不二法门。
但对于大模型呢,则完全就是另外的一个规则运行的智能世界。

三、对大模型:为什么代码是更优载体?

3.1 大模型训练本质

大模型的训练数据构成(估算比例):
├── 代码数据:~15-25%(GitHub、StackOverflow、技术文档中的代码块)
├── 自然语言:~70-80%(书籍、网页、论文、对话)
└── 结构化数据:~5-10%(JSON、XML、表格)

关键洞察: LLM 在代码上表现好不是因为代码数据多,而是因为:

  1. 代码是”高熵信息”
     — 每一行都有精确语义,几乎没有冗余
  2. 代码有严格的语法约束
     — 提供了 token 级别的强预测信号
  3. 代码可以自验证
     — 编译/运行错误提供明确的反馈信号

3.2 大模型理解代码的独特优势(人没有的)

人读代码:线性扫描 → 构建语法树 → 逐步推断语义 → 容易迷失
大模型读代码:全局注意力 → 同时关注所有 token → 并行推断 → 从不迷失

人读代码:看到 100 行代码,第 1 行到第 100 行逐行推进
大模型读代码:看到 100 行代码,第 1 行和第 100 行和第 50 行被同时"关注"
能力维度
大模型
上下文窗口
极有限(工作记忆约束)
128K ~ 1M tokens
注意力机制
线性推进,容易丢失上下文
全局自注意力,不丢上下文
跨文件追踪
困难,需要频繁跳转
轻易(只要都在 context 里)
模式识别
需要经验积累
训练中已见过数亿模式
语言/框架切换
有切换成本
近乎零成本
从代码推断意图
困难,需要领域知识
较强(训练中见过无数代码-意图对)

3.3 代码对 LLM 更友好的深层技术原因

原因1:代码是”确定性信息”

LLM 从代码中获取的信息密度远超文档。代码是 Single Source of Truth,文档只是对它的注释——而注释可能过期。

原因2:代码可以自带”验证闭环”

LLM 生成代码后可以执行验证(编译、测试、lint),形成反馈循环。而文档质量只能靠人工判断,LLM 缺乏”文档好不好”的客观信号。

代码 → 编译/运行 → 错误 → 修正 → 再编译 → 通过 ✅  (有客观终止条件)
文档 → 人类阅读 → 模糊反馈 → 不知道怎么改 🤷      (没有客观终止条件)

原因3:代码的 token 效率更高

同样传达”这是一个 HTTP GET 请求”:

载体
示例
Token 数
歧义度
自然语言文档
“这个接口用于获取用户列表,需要传入页码参数”
~15 tokens
高(什么参数名?返回值?)
OpenAPI Spec
get /users?page={int}
~5 tokens
低(结构化,可直接生成代码)
实际代码
fetch('/api/users?page=1')
~6 tokens
零(可直接执行)

原因4:代码训练数据的”对齐信号”更强

代码有严格的语法结构,其信息噪声极低。

自然语言文档可以写成任何风格,同一件事十个人能写出十种句式。但代码的语法是法律——if后面必须跟条件表达式,函数定义必须有明确签名,类型必须匹配。这意味着:

  • 同样的语义,代码的表达方式高度收敛(不是”能这么写”,是”只能这么写”)
  • 大模型训练时不需要浪费参数去学”这段文字到底什么意思”——语法已经把结构锁死了
  • 每个 token 的信息密度极高,几乎没有废话

四、最后总结

人与大模型的核心差异

人类理解系统的方式: 抽象概念 → 具体实现 (需要先建立心智模型,才能理解代码细节)

大模型理解系统的方式: 具体实现 → 抽象概念 (从代码中直接提取模式,自动归纳意图)

这意味着:

对人类:

文档是”必需品”,代码是”验证手段” 。人认知系统天然依赖抽象和故事,代码的认知负荷过高。没有文档的代码对人类如同迷宫。

对 大模型:代码是”充分条件”,文档是”锦上添花”。

大模型的全局注意力机制让代码成为极高信息密度的载体。代码的确定性、可验证性和精确性对 大模型是天然优势。

大模型能从代码中提取人类需要读文档才能获得的”意图”——这是人类做不到的。

很快企业将进入人决策、AI执行的混合工作模式,人决策需要的知识依然需要文档化,而AI执行所需要的知识,则代码化却是最佳的知识承载形式。

文档是代码诞生之源,却又是比文档更精准、信息密度更高、更适合AI的知识表达;而反过来,文档又是代码的一种表达方式:基于代码可以随时形成各种需要的文档。