吴国林
人类最初用手指计算。十进制的出现,是与手指计数有关的。手指甚至能够进行简单的乘法运算。古代罗马人能够用手指计算大于五小于十的数字的乘法。(例如7×9,具体的操作方法是:第一个乘数减去五所得的数字是二,因此将一只手的两个手指弯曲,同理,根据第二个乘数减去五所得的数字四,另一只手弯曲四个手指。将两只手弯曲的手指数相加,2+4=6,这就是乘积的十位数。然后将不弯曲的手指数相乘,3×1=3,得到乘积的个位数。)用手指进行的计算具有很强的直观性,并且可靠,但手指这种“计算机”的缺点是不便于存储计算结果。在文字出现之前,当计算量超出了手指能够完成的范围,绳由于具有“存储器”功能而取代了手指作为计算工具的地位。绳还具有记事的功能:“事大,大结其绳;事小,小结其绳,结之多少,随物众寡。”事情的重要性和众寡同时在绳结的大小和多少上反映出来。
产生于我国的算筹是最早的人造计算工具。随着畜牧业生产的发展,用手指头和结绳已不能满足计算的需要,于是人们开始用“策”和“筹”来记数和计算。古代的算筹一般是一根根同样长短和粗细圆形小竹棍,也有用木头、象牙、金属等材料制成的。用算筹进行的计算称为筹算。算筹是古代一种方便的先进工具。筹算计数分为纵横两种形式,用纵横相间的方法(即个位用纵式,百位用横式,千位用纵式,……)可表示任何自然数。筹算所采用的这样一种记数法和现代通行的十进位制记数法是完全一致的。纵横两种摆法都可以表示1、2、3、……9这九个数码(零用空位表示):
利用算筹可以进行加、减、乘、除、开方等计算。计算机在基本机制上与算筹是一致的。“算筹算盘,即是当时施用的没有存储设备的简易计算机”[1]。筹算按照一定规则进行。人们在进行筹算所进行的操作,就是按照这套既定的规则,把筹灵活地布于地上和盘中,一边计算一边不断地重新布棍。布棍时所根据的这套规则,用现在的观点来看就是算法语言。每个数学问题用筹进行计算前,都要编出相应的机械化的程序或算法,这种算法常常因为中国文字的特点而常常表示为歌诀的形式。如果用计算机来做类比的话,,而筹则相当于现代计算机的硬件。这套歌诀就相当于现代计算机的软件
筹算不仅是中国古代数学计算的重要手段,还是中国古代数学中的机械化思想的重要成果。筹算的整个演算过程与今天的计算机执行程序的过程是极为类似的。应用筹算解决问题之前,要先将实际问题进行归类,将其用一种数学模型表示出来,并设计出一定的解决这一类问题的程式。而与类似现在计算机程序设计之前作框图相似的是,筹算进行中要考虑程式的运行的每一步如何变换筹式。
筹算是一个由一系列算法所构成的数学体系[2]。计算机的逻辑系统是“是-否”二值系统。逻辑运算和基本的加、减、乘、除的四则运算是计算机的基本运算。并且,在计算机的运算过程中,乘除运算也是被化为加减进行的。类似地,计算机进行其它各种复杂的计算的过程,实质上也是最基本的四则运算和逻辑运算过程,其方法是通过某种“计算方法”,将复杂的计算问题变换为基本的四则运算和逻辑运算。在基本原理上,筹算与计算机不同的,是逻辑运算和逻辑判断不在计算工具中完成,而是依靠人,由计算者根据具体计算中出现的情况来作出“是”或“非”的判断。之后下一步按照哪一个程式继续,也由人根据以上的判断来决定。在数值运算上,计算机相对于算筹的优点是可操作的计算量大、解决同一问题所花的时间要少。
我国古代数学家借助算筹,通过把数学问题化为“算法”解出了许多我们今天用纸和笔都很难完成的计算问题,如我国南宋数学家秦九韶提出的求多项式的值的方法就是筹算与计算机程序的运算模型类似的实例。“秦九韶法”对这个多项式求解的办法在于把该多项式转化为递推式,即每次计算都是前次计算的结果乘上x,再加上某个常数。通过这种转化,把用逐项计算的方法所需的次乘法运算和n次加法运算,减少为至多n次乘法运算和n次加法运算。
算筹这种古老的计算工具,也像现代的电子计算机一样存在软件硬件相互矛盾。作为硬件的筹棍也在不断改进。由于计算的复杂程度的加大,摆放筹棍所需的空间越来越大。为了方便实用,筹棍由长变短,由圆变方,而计算机的芯片体积也在向着越来越小方向发展。
计算机诞生之前的计算工具的设计目的,是利用纯粹机械的装置,来代替人类的思考和记忆。计算工具改革的重要一步是著名数学家巴斯卡(Blaise Pascal)迈出的,他研制了一台能做加法和减法的计算器,这个计算器的设计思想,包含了后来广泛使用的手摇计算机的基本原理。第一台电子计算机诞生于20世纪40年代,它是由于二次大战中美军弹道研究实验室在编制个总武器的弹道表格过程中大量的计算工作的需要而产生的。它被命名为“电子数值积分和计算机”(Electronic Numerical Integrator and Computer,简称ENIAC)。计算机在早期仅仅是作为一种计算工具用于数值计算。
现代的电子计算机具有速度快、精度高、存储能力强和具有逻辑判断和自动运行能力等特点,具备了非数值性的数据处理、自动控制、人工智能等功能。
现代计算机主要依据计算机所采用的电子器件的不同来划代的,大致可分为电子管、晶体管、集成电路、超大规模集成电路等四代。从这些计算机的划代来看,每个电子器件更加复杂,结构与功能更多,性能更优越,能够完成更多性质的任务。每一代计算机,就是一种稳定性,这些稳定性之间有一个共通的东西,那就是计算,由此我们看到了计算机有多种稳定性。当然计算机的稳定性也可以有其他角度,如经典计算机与量子计算机等,一旦量子计算机制造出来,原来经典计算机所不能克服的某些复杂性,量子计算机则能够解决。比如,量子肖尔算法等。
从算筹、计算器到计算机的变更中,计算机所呈现出的本质就是其器件在不断变化,而其本质——计算没有变化,尽管计算的内容与方式发生了很大的变化,但从整体上讲,它们都属于计算的范围。
[1]吴文俊主编.秦九韶与《数书九章》.北京:北京师范大学出版社,1987,75
[2]刘钝.大哉言数.沈阳:辽宁教育出版社,1995,4