(4)、逻辑关系常常交织在一起
在现实生活中,逻辑关系的运用非常复杂,并非如上面所分析的那样,一个个逻辑关系清晰地摆在那里。另一方面,很多事物往往具有错综复杂的结构,如一段文字就有多个陈述、多个观点交织在一起,一台电脑内部也由复杂的软硬件组成,哪怕是肉眼不可见的蛋白质也有很复杂的结构,更不要说飞机、社会系统等这样的巨系统了。可是,这个世界就是这么奇怪,任何复杂的事物和现象,其背后总有其结构的逻辑合理性,哪怕人类目前还没有发现其背后的客观规律,或者人们并未弄清楚事情的来龙去脉、真相细节。
在分析具体事物的时候,多种逻辑关系就会交织、嵌套在一起,而且有些逻辑关系蕴含在很多现象、陈述的背后。同时,从不同的视角看问题、分析事物,又常常会得到不同的逻辑结构、逻辑顺序,抽象出不同的逻辑关系。例如,在一部情节复杂、扣人心弦的侦探小说或谍战片中,各种故事情节纠缠在一起,这时,各种情节之间存在着时空关系、因果关系、层递关系等等,而且还常常出现多种关系嵌套的情形。这样一来,针对复杂的事物或系统,逻辑顺序的梳理、逻辑关系的分析也会变得很复杂,且具有不确定性。
这里说到了逻辑关系的嵌套,可能很多人就会觉得:这种嵌套很简单嘛,不就是几种关系嵌套在一起。这种看法本身并没有错,但是,针对嵌套,这里有四个方面需要引起注意:
一、嵌套本身也是一种关系,可视为“聚合关系”或“层次关系”的特例。对结构复杂的系统而言,系统由各种大小(有些时候称之为“颗粒度”)不一的部件组成,大的部件又由小的部件组成,进而形成了多层的嵌套结构。对复杂的描述和分析而言,各种思想、观点等同样也存在类似的嵌套结构。
二、被嵌套的对象,不仅可以是逻辑关系相关联的系统组成要素,也不仅仅是各种思想观点,还可以是数学函数(如数学中的复合函数),而且逻辑关系本身也可以存在嵌套关系。理解这种多个对象之间的嵌套结构或关系应该不难,这里不再赘述。
三、逻辑关系之间的嵌套,就是把各种逻辑关系视为嵌套要素,进而形成逻辑关系的嵌套结构。这时,我们可以将逻辑关系的嵌套视为逻辑关系之间的关系,也可以视为更宽泛、更宏观的复合关系。类似的示例比比皆是,读者可以信手拈来,例如:一个故事情节可以从时空关系展开描述,这时,有故事情节的主线,也有其他情节的辅助,形成了主次关系;随着故事情节的发展,又形成了层递关系;某些场景的解释蕴含了因果关系、解释关系等等。
四、在嵌套关系的运用过程中,通常要遵循一条重要的逻辑法则,这就是被嵌套对象的完整性法则。所谓的完整性法则,就是指某个对象保持相对完整的整体,要么作为整体被嵌套在其他对象中,要么保持完整的整体独立存在,并没有被其他对象部分地肢解。这条法则很抽象,但却是保持逻辑关系具有理性的根本保障。
在计算机软件技术领域,这一法则又演化成一种通用的范式,被称为巴科斯-诺尔范式(BNF,Backus-NaurForm,又简称为“巴科斯范式”或BNF范式)。在BNF基础上,扩展提出了EBNF范式(ExtendedBNF)(以下只称BNF范式)。BNF范式能严格地表示软件编程语言(也可以用于自然语言的规范化处理)的语法规则,是一种描述、定义语言的形式化方法,也可以转换为数学表达式,所以,BNF范式又被称为描述语言的形式化数学方法。
示例分析:上面提到的完整性法则、BNF范式都非常抽象,但却广泛地蕴含于数学描述、自然语言、编程语言。例如,数学函数的嵌套关系。然而,即使针对学计算机软件技术的读者,也未必能准确、深刻地理解这些抽象的概念。更何况,熟悉软件编程的人毕竟只是很少数,那么,下面进一步通过自然语言(如英语)、软件编程语言为例进行解释。
通常来说,自然语言的陈述都具有这样的基本结构:“主语+谓语+宾语”。如果加上定语、状语等,就会形成更复杂的复合结构。其中,主语可以是独立的主语或完整的陈述句(有主谓宾的陈述句作为主语,句法上称之为主语从句),宾语也可以是独立宾语或宾语从句。同样地,定语、时间或地点状语也可以是从句(定语从句、状语从句)。而且,理论上说,从句中还可以嵌套从句,形成无穷多级的嵌套。因此,不管结构如何复杂,复合结构的语句都是在基本结构的基础上嵌套形成的。
大家不难理解,如果从句没有结束,主句就不能提前结束。这就是完整性法则:在主句中的从句保持相对的完整性。试想一下,如果从句都还没有结束,而主句就提前结束了,那么,这个主句的陈述还完整吗?这个约束法则不仅适用于自然语言,也适用于编程语言和逻辑关系,否则,就不能保证逻辑关系的理性。作者前面提出,逻辑关系的完整性法则(即满足BNF范式)是保持逻辑关系具有理性的根本保障,原因即在于此。
熟悉软件编程的人都知道,一个程序可以调用另一个程序(即子程序),那么,如果被调用的子程序(就像自然语言的从句)没有运行结束,上一级发起调用的程序(就像自然语言的主句)就不能提前结束。这时,被调用的子程序同样满足了完整性法则。这种编程语言背后的嵌套规则,就是遵循BNF定义编程语言的语法、规则和标准。
在分析了嵌套结构或嵌套关系之后,我们运用逻辑关系时,还得规避一种易错的倾向。在分析、梳理综合性很强的事物时,如果我们仅从某种单一的逻辑关系出发,往往只能看到局部的问题、得到片面的结论,出现“头痛医头,脚痛医脚”、“只见树木,不见森林”、“瞎子摸象”现象,犯以偏概全的错误。然而,绝大多数人却很难察觉这种错误的出现,因此,我们需要有意识地训练、培养一种综合性的系统思维、战略思维。
联想分析:说到系统性思维和战略性思维,笔者时常想起“点线面体”的概念。这里“点线面体”的思维借用了几何中的概念,但很难像几何图形那样,直观地进行展示,而是寓意着思维空间的拓展方法:从点出发,拓展到线、面(未必是平面)、体(未必是规整的立体形状)。这也就是说,我们的思维不要局限于一个点,还可以由一个点进行多维的拓展。但是,这种思维拓展的方法说起来简单,做起来却很难,常常与一个人的阅历、心胸、眼界、视野、格局等紧密相关,而与他拥有的智商、所掌握的知识与技能似乎关系不大。
另一方面,当多种逻辑关系交织、嵌套在一起时,还需要防范一种常见、但却难以防范的错误风险。有时,我们在思考和分析复杂问题的过程中,会不自觉地切换思路或思维。切换思路或思维进行思考,不拘泥于“一根筋”,本属于开拓思维的好现象,可有的人难以做到“不忘初心”,甚至出现逻辑跑偏,从而出现概念混乱、偷换概念,甚至导致思维的逻辑混乱。这种错误往往很难以察觉,但在潜意识里,很多人常常又会觉得“似乎那里不对头,但却总找不到问题症结所在”。