科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件读易[9]·用中医看复杂系统

读易[9]·用中医看复杂系统

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一个系统的复杂性增大时,我们使它精确的能力必将减少,在达到一定的阈值以上时,复杂性和精确性将互相排斥。

作者: 陈亮亮 来源:CSDN 2008年1月18日

关键字: 系统 复杂

  • 评论
  • 分享微博
  • 分享邮件

当系统越来越复杂的时候,我们对它的掌控能力也就越来越弱了。一个复杂的系统是非常不好把握的,人体就属于这一类的系统。对于人的生理学研究,西医和中医是两种截然不同的方法。那么对应到我们的软件系统来看,是否也有类似的情形出现呢?

一、复杂与精确的矛盾

1.1 自然科学界

在自然科学领域,科学家们认识到微观与整体的矛盾,其“不相容原理(互克性原理)”认为:“一个系统的复杂性增大时,我们使它精确的能力必将减少,在达到一定的阈值以上时,复杂性和精确性将互相排斥。”不相容原理是符合矛盾对立统一规律的。许多事物过份追求精确反倒更模糊,适当模糊反而可以达到精确的目的。

上面的原理对于软件系统来说是同样成立的。

1.2 中医经典

早在春秋战国时期,我们的祖先就已经认识到精确与模糊的优劣。中医界有一本非常权威的书《黄帝内经》,其中就提出“夫阴阳者,数之可十,推之可百,数之可千,推之可万,天地阴阳者,不可以数推,以象之谓也。”

这句话提到了,万物都由阴阳组成。最小的元素找到了,很自然就会认为逐步往上推演,由十到百,由百到千,由千到万,这样是不是可以将整个宇宙推出来呢。这个想法是不现实的。因为当复杂程度逐渐增大,很快就不是我们能推演的程度了。所以“天地阴阳者,不可以数推”。

1.3 乐观的软件工程师

我们经常会注意到这样一种现象,在我们分析软件的时候,将整个软件划分成一个一个的模块,然后经理将这些模块都分配下去。如果软件系统比较小,这样做是非常容易成功的,等到做了一个几万行的小项目得到成功后,然后做几十万或者几百万的项目时同样也会信心满满。

软件工程师如此想到“几十万百万的项目和几万的差不多,结构都是类似的,不就是分层分模块吗,一样可以搞定。至于时间,按照以前的经验在乘上一个倍数就可以了。”

殊不知,规模和所需的资源并不是按照线形关系增长的。下图描述了规模与复杂程度之间的对应关系。

当规模达到一定的程度,耗费的资源就不是我们能够想象得到的了。现在最庞大的系统莫过于Vista,而它几千万行的代码正是由数量惊人的资源堆积起来的,Vista的不断延期在IT界也是人所共知。

二、划分子系统

针对上面所说的原理,其实在软件行业一直没有找到好的解决方法。若非如此,庞大的微软帝国也不至于一再失控了。

2.1 中医中的子系统

软件中没有好的方法,毕竟软件行业太年轻了。医学界却是探索了几百万年——真正的源头我觉得应该是从上古时期的巫医说起,而不仅仅是有文字记载的那么区区几千年。从医学界可以借鉴什么呢?下面来看看中医的一些入门知识。

中医将人体分为“心、肝、脾、肺、肾”五个子系统,这里要强调的是这里的名词并不等同于西医中的人体器官。比如说“肝”,实际上包括了现代医学部分神经系统、消化系统、循环系统等的功能,“肾”实际上包括了内分泌系统,运动系统等的功能。

这五个子系统都具有自己的作用,但并不能将它们孤立起来研究。

不像西医那样,研究“心”的时候,拿把手术刀哗啦一下把人的胸膛破开,然后仔细研究心脏的结构、质地、颜色。有人戏说西医的“生理学”不是“生理学”,而应该是“死理学”。

如果将各个器官分开来研究,得到的结果很可能是片面,不准确的。

中医在研究“心”的时候,会通过观察人在各种活动的时候心会出现什么样的反应,通过五脏在完成生理功能的过程中和整体之间发生的各种关系和联系来研究。我们在受到惊吓、恐慌和思虑的精神状态下,会出现心慌、心悸等反应,故而中医将神志归为心。

崇拜自然科学的人可能会起来反驳,“中国字的“想”有问题,为什么下面是一个“心”?现代医学早证明了,人思考问题是在用大脑而不是心。”原因在于中医研究人体和西医是不同的思路,中医将所有和“心”相关的部分 划为“心”这个子系统。

对于五脏的研究,内容确实太多了,这里简单介绍一下只是想说明中医在研究人体这个复杂系统的时候,用了一个非常有效的方法,就是划分子系统。看上去比较儿戏,但简单的五部分确实就能治病救人,容不得我们不信。

2.2 软件中的子系统

软件中同样存在子系统的概念,将复杂的划分成简单的分而治之方法是自然而然就可以想到的。不过软件中关于子系统的划分思路和西医一脉相承。西医将人体分成一个个的器官研究,软件将系统分成一个个的模块开发。中医最聪明,对于人体这个复杂系统也仅仅分为“五”个子系统。相比起现在软件划分子系统的方法却是要高明得多了。

按目前划分模块的方式来做软件也是可行的,不过当规模扩大到几百万几千万,甚至上亿的时候我们似乎就要考虑其他的思路。对于这点我考虑的不成熟,按下不表。等以后深入考虑后再来与大家分享。

三、以象之谓也

上面说“天地阴阳者,不可以数推,以象之谓也”。什么是以象之谓呢?

易经中的八个卦就是 象,天地之间的事物形形色色,数不胜数,如果我们想要将所有的事情分清楚那就会到达上面所说的临界值,不能精确和复杂兼得。解释临界值之外的东西,易经中提供了一个有效的方法,就是将事物抽象、归纳。最终易经用八个现象来表示世界万象,其中运用推理、联想、类比、隐喻形成一个开放系统。

中医中的“心、肝、脾、肺、肾”用“火、木、土、金、水”五行来表示,这也是“以象之谓”。上面说中医将人体系统划分成五个子系统,这只是第一步,接下来将每一个系统用一个“象”来表示,用“象”之间相生相克的关系来解释子系统之间的交互。

五行本身和人体没有什么关系,但我们能用简单的象来解释复杂的系统。

将复杂的系统简单化的最自然的想法就是细分,然后组合,但上面的分析说明系统的复杂程度和规模并不是线形的递增关系,所以简单的分而治之并不是万能的。当系统的规模达到一个临界值后,我们只能采取“以象之谓”的方法。用更加抽象的隐喻来描述和规划系统。

这篇文章没有谈到怎样处理复杂的软件系统,仅仅是提出复杂与精确之间的互斥关系,并尝试用中医的思路来探讨这个问题的解决方式。而最后提出的“以象之谓”也可以说是一种隐喻,这点正好是我今后要着重研究的方向。大家如果有什么好的思路,可以拿出来一起讨论讨论。 


查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章