句有可削,足见其疏;字不得减,乃知其密。《文心雕龙》
我喜欢精简,有时候要求近乎苛刻。写论文时,最后一定会花一段时间精简文字;编程序时,我总会反复斟酌,尽量减少不必要的代码或者变量。20多年前,我就把UNIX操作系统源代码作为学习的榜样。看到Turbo C++ 自动插入的文字都会觉得不爽,一定会把它们删掉。
我过去给人讲模型。开宗明义就是:模型是依据特定目的,对客观对象的简化,而不是完整的描述。如果能用更简单的公式描述一个对象,绝不应该使用复杂的;因为任何多余的复杂,都可能隐藏着错误的认识。我讲创新时,强调最多的观点之一就是“复杂问题简单化。” 当我强调“需求驱动”的时候,也包含着这样的潜台词:凡是与需求无关的功能和设计,都应该被精简掉。
这种习惯,会带来了很多麻烦。比如,写代码、写论文、建模的时候常常要多花几倍的时间。修改时间往往比做事时间都长。但总体上看,我一直觉得是个好习惯,不愿意去改变。
然而,最近我却意识到:冗余也是有道理的。
朋友曾讲过一个故事:公司准备买一台电脑,吃不准是要64G还是128G,打算开会讨论一下。他就说:买128G——因为开会讨论是需要时间成本的,这个成本比64G的差价要大。
类似地,在推进工业互联网、智能化的时候,什么数据要采集、多少数据要传输、记录的周期和频度如何,都会遇到类似的问题。设计数字孪生的时候,应该包括多少项数据,同样会遇到这个问题。而且,事先往往不容易想清楚。
这时候,适度的冗余可能是最好的办法了。
冗余的本质用处是提高获取数据资源的灵活性:新需求产生的时候,能够方便地得到数据。我们知道,如果系统投入运行后在提出需求,工作上就可能麻烦多了。反之,如果大数据或者工业互联网平台提供的灵活性足够强,希望拿到数据的时候能容易地拿到,也就不需要过度的冗余。所以,我一直认为:灵活性是对工业互联网平台的关键要求。
冗余并不意味着不动脑筋、随便做。
冗余的目的是为了便于功能的灵活拓展。而为企业建立赛博空间的意义在于用数据能够反映企业的运行逻辑。这样,数据就要体现物理系统的因果关系,否则因果关系就是混乱的。因果关系的基础是时间的先后关系。也就是说,数据体现的、事件发生的次序不能混乱。这是个基础性的要求。