指出现代计算机算法思想的东方源头,并不是说这种算法思想就是东方数学的简单回归;它只是表明,东方数学思想促成了近代数学思想的某种程度的转变;如果近代西方数学思想不发生“算法”的转向,就不可能结出现代计算机算法思想的果实。而且,其间发生的思想交融与互补,并不只止于数学方面,它也与逻辑有关。也就是说,近代逻辑的“算法”转向,与数学一道,对现代计算机科学思想产生了积极的影响。关于数学史上的“算法”转向,将在后面的第十三章中进行比较详细的分析,这里仅就逻辑算法倾向做一简要追溯。
算法思想改变古典形式逻辑的一个突出例子,就是英国哲学家和逻辑学家托马斯·霍布斯(1588~1679)关于“推理即是计算”思想的提出。作为近代欧洲逻辑史上的一个重要逻辑学家,霍布斯认为“计算”就是指数学上的加减乘除四则运算,其中,加和减是最基本的。而人类心灵的两种基本活力也体现在加和减两个方面。因此在他看来,“所谓‘推理’是指计算”[21]。或者说,逻辑学上的“推理”只不过是计算中的一种——语词系列间的相加减。那种不用语言和断言进行的推理,可称作“不用语词进行的内心推理”。这实际上是肯定了形式逻辑以外的“推理”活动的存在。那么,这种新的逻辑形式又是什么呢?霍布斯认为,这种新的逻辑是一种类似于计算的演算逻辑。研究表明,霍布斯的上述思想对后来的莱布尼茨创立逻辑演算体系有重大启发意义。其中,从外延性的角度来处理命题和推理的观点,对后来的布尔、弗雷格等人创立数理逻辑也有根本性的意义。甚至,霍布斯本人关于人类理性活动存在着大量机械活动的想法以及推理与计算合一的观点,对当代计算机科学也有一定的意义。[22]
霍布斯之后的莱布尼茨继承了前辈的思想。他试图摆脱古典形式逻辑主要以自然语言作为表述工具的做法,代之以形式化的语言以建立他所谓的“通用语言”。他最初的通用语言符号素材更多地来自于以埃及象形文字和汉语表意文字为代表的语言符号系统。以后,他又进一步创制了一些逻辑符号,并借用了代数运算方法,提出了概念演算的思想。他设想,人们可以像进行数学演算那样来进行“思维的演算”。他清楚地看到概念、判断、推理所具有的数学演算性质,注意到逻辑学的词项、命题、三段论等与代数的字母、方程式、符号变换等具有某种形式的相似性,认为所有这些都是克服亚里士多德逻辑学的不足的方面。在此基础上,他创立了数理逻辑。鉴于数理逻辑对现代计算机的基础性作用,人们普遍认为,莱布尼茨也是现代控制论和计算机科学的先驱者。
到19世纪,英国数学家、逻辑学家布尔(GeorgeBoole,1815~1864)提出的逻辑代数与其说是从代数方面发展了数理逻辑,不如说是从逻辑方面奠定了代数的逻辑基础。在布尔的工作中,他运用逻辑的方法对代数的基本运算(AND、OR和NOT)进行了严格的定义。例如,AND的定义是,给定两个类,称它们为x和y,表达式xANDy表示由x和y的所有公共元素构成的集合。进一步,由xANDy表示为x和y的“逻辑积”,即xy。这是布尔的一个创造性贡献。这样,在严格定义的基础上形成布尔代数的三个公理:
①xy=yx;
②x(y+z)=xy+xz;
③xn=x,其中n是任意自然数。
显然,用逻辑符号表达代数运算关系,势必将代数运算关系看作符号之间的逻辑关系,这在纯粹数学方面迈出了十分重要的一步。