乐于分享
好东西不私藏

回到本质:软件到底应该怎么造?

回到本质:软件到底应该怎么造?

软件的本质是什么?我们是否一直在解决错误的问题?


一,一个根本性问题

软件工程发展了50年。

瀑布模型
       ↓
敏捷开发
       ↓
DevOps
       ↓
AI辅助编程

**越来越复杂。

但我们是否问过:**

软件的本质是什么?


二,软件的本质

软件是什么?

软件 = 固化在代码中的知识

这个定义告诉我们:

问题 答案
软件为什么存在? 知识需要复用
软件的价值? 知识可被重复执行
软件为什么能运行? 知识被编码在代码中

知识的本质

知识 = 对世界的理解 + 解决问题的能力

知识 → 编码 → 软件
软件 → 执行 → 解决问题

三,软件工程的本质

软件工程在做什么?

把知识装进代码

知识有三个特征

特征 说明
默会性 有些知识难以编码
情境性 知识依赖具体场景
演化性 知识在变化

四,工程化的代价

软件工程的问题

代价 说明
翻译损失 业务知识→文档→代码,信息逐层失真
维护成本 代码膨胀,债务累积
协调成本 人越多,沟通越多

复杂度的根源

现实问题 → 业务模型 → 软件架构 → 代码
      ↓            ↓           ↓
    人理解       人设计       人编写

每个环节都有人的参与,人的参与就是成本。


五,更简单的可能性

如果知识可以直接执行?

业务知识 → AI理解 → 软件

不是”编码知识”,是”直接执行知识”


AI改变了什么?

传统 AI时代
编码知识 理解意图
翻译知识 直接执行
维护代码 动态生成

六,新的生产方式

从代码到意图

意图 →  → 软件

不需要”写代码”,只需要”描述意图”


从工程到知识

知识 → 直接执行

不需要”软件工程”,只需要”知识表达”


七,核心问题

问题一:知识如何表达?

文档 ≠ 知识
代码 ≠ 知识
意图 = 知识

问题二:谁来验证?

测试 ≠ 验证
使用 = 验证

问题三:谁来维护?

代码 ≠ 维护
反馈 = 维护

八,更简单的原则

原则一:意图优先

不是"怎么做"
而是"要什么"

原则二:直接执行

不是"编码-测试-部署"
而是"生成-使用-反馈"

原则三:按需抛弃

不是"长期维护"
而是"用完即抛"

九,结论

软件的本质

软件 = 固化的知识
AI时代 = 知识直接执行

更简单的方式

意图表达 →  → 使用验证

不需要工程化,只需要知识化。


一句话

软件工程的代价是翻译损失。

>

AI让知识直接执行成为可能。

>

未来,软件 = 意图表达 + AI执行。


你们怎么看软件的未来?留言说说!