前面写这个博文:in nek:《大唐双龙传》的武功层次,的时候,我提到了某些逻辑是平面的,某些逻辑的多维的。这个概念我经常用,在架构设计的场合也很常见。但细抠一下,它是什么意思呢?我这里来推演一下。

逻辑是一组预判的逻辑,是现实Pattern的叠加:

  1. 把原料放进锅,测试温度,30度的时候,加入盐,成功得到食物
  2. 把原料放进锅,测试温度,50度的时候,加入水,成功得到食物
  3. 把原料放进锅,测试温度,100度的时候,加入冰,成功得到食物

这是三个成功的Pattern,变成一个逻辑,就是这样:

把原料放进锅,控制温度到30,50或者100,分别加入xxxxx,都可以得到食物。

逻辑都有控制要素,控制要素用于响应变化。在处理实际的问题的时候,一个事情的因果通常有无数的控制要素,但我们会选择其中最重要的作为控制要素,这就是所谓“主要矛盾”。

要注意的是,事物是发展的,主要矛盾也会变化,比如前面这个问题,我们认为控制要素是温度,但现实中,很可能盐的量也是控制要素。

当我们选定了控制要素,多个控制要素共同决定结果。如果这些控制要素之间有明确的关系,我们就认为这个逻辑是平面的,因为最后可以化简为一个控制要素。好比二元方程,如果我们有两个二元方程,其实我们就可以(一定程度上)认为这是个一元方程,因为我们可以化简为一个一元方程。或者就算我们不能给出很明显的方程,但基本上他们的关系是连续的,任何一个值发生轻微的变化,结果是接近的。这两个要素就可以在一个逻辑“因果链”中共同描述。

这种控制要素,就叫平面的,它的逻辑比较简单。

但如果几个控制要素,每个控制要素对结果的影响是不同的,不同控制要素之间没有明显的函数关系,也不具有连续性。这时,我们就无法用一个函数来预判结果,我们只能用离散的方法,选定某些控制要素的范围,这时,这种控制要素控制的空间就叫立体的。

好比你要不得病,要按时饮食睡眠,要不去疫区,要锻炼身体,要不和人打架,这些要素互相之间没有什么函数关系,但也不能说没有关系,每个都对结果造成影响。这个例子,我们基本还在一个逻辑空间上,如果考量在不同环境的,比如战争,荒野,城市下的生存能力,这就更没法同时描述了。程序中业务,可靠性,实时性等多个需求的控制要素,就更无法用一个逻辑描述了。这种逻辑是立体的。很难简单总结规律。这是我们现实的常态。

我们思考逻辑的时候,需要从立体的角度来思考问题,才不容易丢掉重要的控制要素。但如果我们思考能力不足,就可以任何时候都把控制要素限制在一个平面里面,这个结果就是把自己囚禁起来。好像三体里面那样,在四维空间里,你明明可以拿到3维封闭空间内的东西,但你非要把自己拍平在二维空间,你就怎么都解决不了问题了。或者说,你也抽象不了问题了。

同样,如果你写代码的时候,总是不用多视图来建模,总要把所有的设计都映射为代码,你的代码的漏洞就必然会很多。

而写武侠小说的时候,如果你创建的是二维的武功体系,剧情的遁去的一就很明显,一眼就能看出你有多少变化,这书就没有意思了。

09-03 04:05