. Kenneth Lee 版权所有 2023
- Authors
Kenneth Lee
- Version
0.1
- Date
2023-06-28
- Status
Draft
3.303. 为什么架构设计必须使用自然语言
这两条和一位同事讨论一个设计问题,他尝试用类型系统的方法“精确”定义我的意图,我用本文来说明我为什么不接受这种方法。
高层设计是不可能被精确建模的,因为所有的“精确”,都来自对细节的逐一枚举。“鸡都是有羽毛的”,这精确吗?这要看你如何定义鸡,被去毛准备做叫化鸡的那个东西叫不叫“鸡”?被鸡蛋孵出来的无毛变异种算不算鸡?只有一根羽毛算不算“有羽毛”?这些信息在“鸡都是有羽毛”的表述中,都是没有的,没有明确的细节,那句话就是“模糊的”,“不精确的”。
我们永远都不可能有绝对的精确,我们只在我们自己的脑中有精确,我们把条件输入到我们的决策系统,这个系统给我们唯一的输出(包括模糊描述的唯一输出,比如“明天可能会下雨”,这同样是逻辑系统中一个“精确”的输出),这时,我们认为这个东西是精确的。这就是维特根斯坦说的“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的东西了。我们也只能用总结性的:“它有没有我们聪明”这种没有什么逻辑,只是根据结果分类来觉得“怎么用”的方法来评判它了。从这个角度来说,我暂时对自己比它在高层抽象上更聪明还是有点信心的。