08月29, 2023

混沌系统-系统设计的基础原则

混沌系统

引言

一个系统或流程功能的设计,应该尽量收敛到可靠状态。

当多个不可靠状态不断叠加,便会逐渐变成混沌系统 --- 事态变的不可控。

导致人们难以理解、分不清是 Feature 还是 Bug。

也自然对系统未来的迭代,悄悄地预埋上了随时崩溃的风险。

二义性发散问题带来的不可靠

经典“二义性”需求示例

老婆:“老公你去买一斤包子回来,如果看到卖西瓜的,就买一个”。

然后,看到老公买了一个包子回来。

二义性程序逻辑叠加示例

// 似乎粗看没什么问题
if (num === 1 || num !== 2) { ...any... }

// 也许未来有一天会变成
num2 = 2;
if (num === 1 || num !== num2) { ...any... }

// 再继续来一次无脑迭代
num2 = 1 || 2;
if (num === 1 || num !== num2) { ...any... }

// 经典问题
num = top.undefined;
num2 = self.undefined;
if (num === num2) { ...any... }

复杂度的经典例子

单摆

一个具备「可靠&可预知」轨迹状态的系统功能。

其运行过程中有1个动态的状态节点控制,可以推演解释任意时刻轨迹状态。

alt

双摆

一个具备「不可靠&难以预知」轨迹状态的系统功能。

其运行过程中有2个动态的状态节点,想要推演解释任意时刻的状态值结论,已经非常艰难。

alt

三摆(多摆)

一个具备「不可靠&不可预知」轨迹状态的系统功能。

其运行过程中有多个动态的状态节点,任意时刻的状态值恐怕不是有生之年能解释的清楚推演明白的。

alt

最后

所以,一个好的系统或程序设计,应该具备可归纳可收敛、数据信息可沉淀可二次迭代创作的一些基本特征。

本文链接:http://blog.pyzy.net/post/chaotic.html

-- EOF --

Comments

可以发邮件 huzunjie@pyzy.net 或移步到 https://github.com/huzunjie/blog.pyzy.net/issues 评论交流。