回到本质:软件到底应该怎么造?
软件的本质是什么?我们是否一直在解决错误的问题?
一,一个根本性问题
软件工程发展了50年。
瀑布模型
↓
敏捷开发
↓
DevOps
↓
AI辅助编程
**越来越复杂。
但我们是否问过:**
软件的本质是什么?
二,软件的本质
软件是什么?
软件 = 固化在代码中的知识
这个定义告诉我们:
| 问题 | 答案 |
|---|---|
| 软件为什么存在? | 知识需要复用 |
| 软件的价值? | 知识可被重复执行 |
| 软件为什么能运行? | 知识被编码在代码中 |
知识的本质
知识 = 对世界的理解 + 解决问题的能力
知识 → 编码 → 软件
软件 → 执行 → 解决问题
三,软件工程的本质
软件工程在做什么?
把知识装进代码
知识有三个特征
| 特征 | 说明 |
|---|---|
| 默会性 | 有些知识难以编码 |
| 情境性 | 知识依赖具体场景 |
| 演化性 | 知识在变化 |
四,工程化的代价
软件工程的问题
| 代价 | 说明 |
|---|---|
| 翻译损失 | 业务知识→文档→代码,信息逐层失真 |
| 维护成本 | 代码膨胀,债务累积 |
| 协调成本 | 人越多,沟通越多 |
复杂度的根源
现实问题 → 业务模型 → 软件架构 → 代码
↓ ↓ ↓
人理解 人设计 人编写
每个环节都有人的参与,人的参与就是成本。
五,更简单的可能性
如果知识可以直接执行?
业务知识 → AI理解 → 软件
不是”编码知识”,是”直接执行知识”
AI改变了什么?
| 传统 | AI时代 |
|---|---|
| 编码知识 | 理解意图 |
| 翻译知识 | 直接执行 |
| 维护代码 | 动态生成 |
六,新的生产方式
从代码到意图
意图 → → 软件
不需要”写代码”,只需要”描述意图”
从工程到知识
知识 → 直接执行
不需要”软件工程”,只需要”知识表达”
七,核心问题
问题一:知识如何表达?
文档 ≠ 知识
代码 ≠ 知识
意图 = 知识
问题二:谁来验证?
测试 ≠ 验证
使用 = 验证
问题三:谁来维护?
代码 ≠ 维护
反馈 = 维护
八,更简单的原则
原则一:意图优先
不是"怎么做"
而是"要什么"
原则二:直接执行
不是"编码-测试-部署"
而是"生成-使用-反馈"
原则三:按需抛弃
不是"长期维护"
而是"用完即抛"
九,结论
软件的本质
软件 = 固化的知识
AI时代 = 知识直接执行
更简单的方式
意图表达 → → 使用验证
不需要工程化,只需要知识化。
一句话
软件工程的代价是翻译损失。
>
AI让知识直接执行成为可能。
>
未来,软件 = 意图表达 + AI执行。
你们怎么看软件的未来?留言说说!
夜雨聆风