仓库源文

. Kenneth Lee 版权所有 2023

:Authors: Kenneth Lee :Version: 0.1 :Date: 2023-06-28 :Status: Draft

为什么架构设计必须使用自然语言


这两条和一位同事讨论一个设计问题,他尝试用类型系统的方法“精确”定义我的意图,我 用本文来说明我为什么不接受这种方法。

高层设计是不可能被精确建模的,因为所有的“精确”,都来自对细节的逐一枚举。“鸡都 是有羽毛的”,这精确吗?这要看你如何定义鸡,被去毛准备做叫化鸡的那个东西叫不叫 “鸡”?被鸡蛋孵出来的无毛变异种算不算鸡?只有一根羽毛算不算“有羽毛”?这些信息在 “鸡都是有羽毛”的表述中,都是没有的,没有明确的细节,那句话就是“模糊的”,“不精 确的”。

我们永远都不可能有绝对的精确,我们只在我们自己的脑中有精确,我们把条件输入到我 们的决策系统,这个系统给我们唯一的输出(包括模糊描述的唯一输出,比如“明天可能 会下雨”,这同样是逻辑系统中一个“精确”的输出),这时,我们认为这个东西是精确的。 这就是维特根斯坦说的“What can be said can be said clearly”,精确。精确的是你的 脑子,不是现实。现实只能“Passed over in silence”。

所以,尝试用一种形式化语言让高层设计变“精确”,是缘木求鱼。如果我们可以精确描述 一个系统,那么我们已经拥有这个逻辑设计了,理论上我们不再需要为它开发软件逻辑或 者HDL了。我们做架构设计,就是因为我们的设计不可以一次成型,一次成型我们控制不 了所有的要素,所以我们对还没有精确定义的细节进行分类,从不同的视角(View)去对 逻辑进行分解和分类,从而让细节呈现规律,让我们可以控制它。这本来就是不精确的 (但它是明确的,至少我们在判断某个细节是否在范围内的时候,我们是基本上是有结论 的,只是我们在定义边界的时候,我们不知道我们的抽象指代的个体是谁而已),不精确 才是它的目的。

这个明确的部分,确实有可能被类型系统(type system)所描述,但这个描述没有意义, 因为我们的着眼点并不是这个类型系统,类型系统不是稳固的部分,稳固的部分是在我们 搭建和发现的过程中被不断发现的。也就是说,我们在不断用Passed over in silence的 信息去填充我们的What can be said的信息集合,这种情况下,把信息放在这个集合的完 善上,我们就会忘掉我们的本来目的。

说到这个不禁想到现在很火热的AI绘图和ChatGPT等发展,我们过去对AI的理解是从非结 构化数据或者结构化数据,比如从图,声音得到对象是狗,花,猫,云等“概念”。但AI绘 图和ChatGPT等应用,给我呈现了仿佛这些数据组合以后,好像有了在概念上再找到逻辑 的能力,似乎具有了人这种基于多层逻辑视图去获得新Pattern的能力了。这种情况下, 我们能从逻辑上判断一个AI的判断是否正确吗?其实已经不可能了,因为我们根本不知道 AI的脑子中转的是什么念头,它对于我们来说也是一个只能Passed over in silence的东 西了。我们也只能用总结性的:“它有没有我们聪明”这种没有什么逻辑,只是根据结果分 类来觉得“怎么用”的方法来评判它了。从这个角度来说,我暂时对自己比它在高层抽象上 更聪明还是有点信心的。