如果我们想要预见数学的将来, 适当的途径是研究这门科学的历史和现状。——庞加莱
纵观数学的发展史,可以发现,计算(数值计算和符号计算等)和证明(包括公式推演)自始至终都是数学活动的两种主要方式。但是,长期以来人们总是把二者孤立起来,看不到它们之间的本质联系。然而,随着计算工具的改进,特别是计算机在数学中功能的扩大,人们越来越发现二者之间事实上有一种很紧密的联系。
人类早期的计算对象都是非常的简单,所以人们完全可以通过屈指计数的办法加以解决。顾名思义,屈指计数是通过屈回或者伸出手指表示事物的个数和累进而达到计数的。很显然,手、手指在这里是作为相当原始的计算工具被使用的。这种计数、计算法几乎在所有的民族中都有记载。从现在大多数语言中数字的表示法也可得到说明∶五用手表示,十用双手表示,有时也用人来表示,而在许多原始的语言中,四以下的数字和四个指头的名称甚至是完全一致的。
没有文字之前,当计算超出屈指计数的范围时,人们就用像卵石、结绳和刻痕等自然物代替手指作为计算工具。但是这些计算工具也渐渐地被淘汰掉了。因为随着人类探索大自然的深入,生产实践的不断发展,计算的复杂度远远地超出了以上计算工具能执行的范围。是算筹、算盘、耐普尔骨筹、计算尺以及各种计算机等计算工具就相应地被发明。
算筹
算筹是中国早期的计算工具,曾经在世界上遥遥领先。它不仅为中国古代数学的发展立下了汗马功劳,而且为世界数学中的机械化思想也做出了巨大的贡献。
同世界上所有的民族一样,中国人的祖先最初也应用结绳、书契进行记(计)数,而后来他们开始借用天然的细木枝(称为"策")或由竹、木和象牙等制成的小棍儿或小片儿(称为"筹")以帮助记数和计算。这种借助于"策"或"筹"进行计算的方法,就是早期的筹算。算筹的形状、材料在人们的使用中,出于各种原因一直在不断地变化。
算筹是当时一种方便、先进的计算工具,进行筹算时有两种摆法,一种是纵式,一种是横式:
《夏侯阳算经》中有∶"一纵十横,百立千僵,千十相望,万百相当。满位以上,五在上方,六不算,五不单张。"就是说用纵式表示个、百、万位,横式表示十、千、十万位…….,空位表示零。如1978可记作∶
例子:
从原理上讲,运用筹算极其方便、直观,但世界上没有十全十美的事物,筹算也有它非常不便的地方。正如二十世纪的电子计算机中存在着软件、硬件的矛盾一样,在算筹这种古老的计算工具中也存在着类似的问题。原因是作为软件的算法发展相对快一些,而作为硬件的筹也一直在改进,但终究是不能赶上算法的进展,特别是由于它不能获得实质性的改变。所以硬件的彻底改革势在必行,算筹终究被方便得多的算盘取代了。
算盘
算盘取代算筹是计算工具发展史上的第一个里程碑,因为它是人类历史上最早使用的机械计算装置。在古代和中世纪的不同地域,出现过许多不同式样的算盘,而以中国的最为先进、轻便。
与算盘对应的计算称为珠算,珠算是由筹算改进而来的。珠算盘的原理与算筹的原理相类似。在珠算盘中,上档每一珠当五,下档每一珠当一,而在筹算中,是上面每一根筹当五,下面每一根筹当一。二者的不同之处在于,当筹算的乘、除中出现某位数字等于十或多于十的情形时,珠算盘采用上二珠下五珠的形式。珠算盘使用起来十分方便,尤其是在熟练掌握了珠算口诀和基本技巧之后,运算速度更是惊人,有珠动则数出之誉。因此,算盘一直是人们生活中便利的计算工具,不但对当时中国的国民经济发展起着有益的作用,就是对世界文明也做出了重大的贡献,因为它后来被传到国外。至今它还是中国和一些亚洲国家的人们日常里重要的计算工具。
到了17世纪,数学及计算工具的发展转移到了西方,且是沿着两条路线,一条是模拟计算机,用长度或大小等一类模拟量表示数字;一条是数字计算机。二者的发展几乎是同步的。
英国数学家巴贝奇(Charles Babbage,1792~1871)在通用数字计算机上的失败,使得人们对数字计算机的研制热情大减。不过不懈努力的人们又开辟了另一条改进计算工具的道路—模拟计算机的研制。模拟机与数字计算机的不同点是,它不是通过数字形式去执行基本运算,而是应用对某种物理量的运算和测定去解决问题。其原理渊源这样一种想法∶ 人们在描述物理对象时,常常要用到数学语言、数学方程;反过来,有些人就想,如果给定一个数学方程,是否会相应地有一种机械装置与其对应?答案是肯定的,因此人们就获得了通过相应的物理量模拟解决数学方程的新方法。
计算尺
计算尺是最常用的一种模拟计算工具,它的发明比机械计算器略早些。
人们根据不同的需要制作了多种计算尺,最早的计算尺是1622年英国数学家威廉·奥特瑞德(Wlliam Oughtred,1575~1660)发明的,是通过改进格雷歇姆学院的埃德蒙·冈特的"冈特尺制成的,被用于进行各种求快不求精的计算。冈特依据如下的原理制成了对数计算尺∶两个或多个数的乘积之对数等于这些数的对数之和,两个数相乘的表达式为log(A×B)=logA+logB,于是,如果沿一直线截取两相继的线段,其长度分别等于log A 和logB(依一定的尺度),那么,这两条线段之和就相当于log(AxB)(依同样的尺度)。
据此,冈特制成了对数"数线",并他在其著作《三角精义》中作了描述。"数线"是一种标尺,从一端开始与1和10间各个数的对数成比例地截取线段,每一线段的端点标上该线段相当其对数的那个数。这样,标尺两端所标的数字就是1和10。线段在尺上的加和减等于相对应的数的乘和除,这些运算借助一只分规来进行。"冈特尺"还有按同样原理标度的线,表示三角函数的对数,适用于航海。
模拟计算机的制作曾一度很活跃,可是由于在通用性、精确性和速度等方面的局限,人们对它研究的热度大减。而电子技术的发展使人们又转向了电子计算机的研制。
中国在康熙年间,也制作过计算尺。
机械计算机
现代计算工具的研制起源于17世纪前后欧洲出现的机械演算机和顺序控制机。机械演算机是借助于齿轮传动进行计算的一种机械装置。最早的机械数字计算机——-加法机,是由著名的法国数学家、物理学家、思想家帕斯卡(Blaise Pascal,1623~1662)设计成功的。他设计的计算机与现在的电子计算机比较是非常的简单,不过他的设计原理与现今计算机的原理是相通的。帕斯卡的父亲是一个会计。父亲繁重的计算工作,使幼小的他立志要设计一种工具来减轻这种繁重重复的劳动。终于在1642年,年仅19岁的他帮助父亲设计出一种能做加减法的机器。这种机器的外一个长方形盒子,上表面是一行齿轮,每个齿轮的十个齿上都刻有0至9。这些齿轮分别对应于个位、十位、百位等等。它的进位是通过将1个齿轮转动一周,让相邻的齿轮转动1/10周来完成。
帕斯卡的这种"加法器"是计算工具史上的一一个里程碑,因为它包含着后来计算机的基本原理,为后人制造机械计算机迈出了开拓性的一步。他自己在《沉思录》中这样设想∶
这种计算器所进行的工作,比动物的行为,更接近人类的思维。
法国天文学家、数学家华纳在评论帕斯卡计算器的设计思想时,曾说过:
帕斯卡的思想,特别是在当时,可以算作是非凡的勇敢。因为他提出了这样的目的,即利用纯羟机械装置、来代替我们的思考和记忆。
那时,帕斯卡设计的机器一共试制了50台,由于不能进行多位数的计算,计算的精度又低、数较大时进位阻力又很大而不能联动,所以最终没有得到推广。
1666年塞缪尔·莫兰独立于帕斯卡发明了一种计算金额的机械加减法机器;同时他还发明了一种用于进行乘法的机器,其工作原理在一定程度上是根据"耐普尔骨筹"原理,不过他以转动的圆盘代替后者的算筹,在圆盘直径的两端标上每个倍数的数字。这种仪器还可用来进行开方运算。
帕斯卡和莫兰的机器尽管在简化人们的计算上提供了极大的便利,但是其存在的缺陷使它们不能适应社会发展对计算提出的要求。可喜的是后人沿着他们指出的方向走下来,发现了未曾想到的宝藏。
第一个改进这些计算工具的是17世纪德国著名数学家、数理逻辑的始祖、哲学家,微积分的创始人之一莱布尼茨(Gottfried Wihelm Leibniz,1646~1716)。后面我们会谈到,他曾经想创造一种通用的语言,以实现推理机械化。受帕斯卡制作机器的激发,他想到制作机器可以实现他的理想。为了研制计算机,他特地从德国移居法国。
莱布尼茨发明制作的机器主要由两部分组成∶ 一部分是固定的,另一部分是可活动的。他设计的计算机的优点在于,除了可做加减法,还可做乘除法,但是非常复杂。有一台设计于1671年而完成于1694年的机器现存在汉诺威;另一台据说完成于1706年,但已经无可考据。值得一提的是,莱布尼茨在设计过程中发明了两种非常重要的装置,即"阶梯式计数器"和"针轮",即使现在还被用来作为现代计算机的两种组元。
阶梯式计数器和针轮为十力世纪科尔乌的托马斯和俄国的W.T.奥德涅尔所采用。托马斯利用阶梯式计数器制作了四则计算机;奥德涅尔的计算机后来发展成为著名的布伦斯继枷计数器。在莱布尼茨后的100年里,继续试验制作的一些计算机本质上没有大的改变。到了1820年,制作技术大大提高,托马斯在前人的基础上制成了实用计算机,这大概是人类历史上第一台实用的自动计算机,也是莱布尼茨曾经想达到的目标。
寻求一种高速机械计算工具,并且能够执行推理的构想应该归于帕斯卡和莱布尼茨,而现今意义上的电脑先驱则是十九世纪的英国数学家巴贝奇。他是一位颇有独创性的、兴趣广泛的数学家与发明家。在计算机史上,他之所以能够做出巨大的贡献是受社会技术的进步推动的。因为在他所处的时代:
工商业和科学技术在世界范围内取得了空前的发展,从而使得人们对计算的数量、速度和精度都提出了更高的要求,以前发明的计算工具远远不能满足当前的需要。
恰好法国纺织技术实行了重大的革新—实现了程序自动控制,这就自然地启发人们将自动化思想与计算机的制造相结合,于是一种全新的计算机的诞牛成为可能。
18世纪末,法国政府为了统一度量衡的工作,所以在数学中采用了十进制,于是重编三角函数表和函数对数表就成为必要。
显然这是一项庞大的工程,然而由于组织者普罗尼合理而细致的分工,就使得计算效率大大提高。
第一台差分机是在1822年完成的,由一些立柱装配若干齿轮组成的。每个齿轮都刻有0-9的阿拉伯数字,不同位置的齿轮代表不同的位数。从外表上看,机器依然是使用齿轮咬合装置,然而与以前的计算器不同的是,差分机拥有用齿轮组实现的寄存器。这样差分机就能够按照设计者的安排,自动完成整个运算过程。这里有很重要的一点是隐含着程序设计思想的萌芽,也正是这一点使得后人把巴贝奇尊为现代计算机的先驱。
巴贝奇
差分机基本上是专供计算多项式的加法机,运算精度达6位小数。
1833年,巴贝奇活跃的思想中又构思了一种新机器——一种可控制计算程序的通用数字计算机,即通常所说的分析机,它比差分机的设计更完善。程序设计的思想在其中得到了充分的发挥。
早期的计算机大多用手工控制,操作人员在计算的每一步都必须亲自参与。而分析机不论是在可能完成的计算范围、简单程度以及可靠性与精确度方面,还是在计算时完全不用人参与方面,都超过了以前的机器。
尽管用了近40年的功夫,但是,巴贝奇天才的想法最终也没有实现。这不仅仅是由于他对设计的不断修改,而更多的是因为社会客观条件的不成熟。
电子计算机
现代意义上的存储程序电子数字计算机,可以说绝不是数学家、逻辑学家或者是电子工程师所能单独完成的事业,而是大家齐心协力合作的结果。因此,才会有历史上那么多天才的梦都没有实现。而随着科学、技术的进步,现实的物质条件日益成熟,所以才有后人对他们的遗愿的最终实现,而且无论是从哪一个方面,都远远地超出了原来的想象。
电子计算机的诞生受益于数理逻辑的发展和电子技术的进步。
数理逻辑方面值得指出的是英国数学家阿兰图灵和布尔。图灵的贡献∶1900年希尔伯特在国际数学家大会上提出二十三个数学问题。其中第十个问题大意是∶给定一个系数为有理数的、有任意个未知数的丢番图方程,是否可设计一种方法,使得通过有限步运算能判别该方程是否有有理数解。有数学家猜测不存在这样一种方法,可是要说明这一点,却不是一件很容易的事。为了解决这个问题,首先要回答什么是有效方法。一直到了三十年代,才有几位数学家给出了这种"有效方法"的描述。
图灵正是通过分析"计算"的本质,从理论上证明了通用数字计算机是存在的。他假定把计算的所有细节全写在纸上,而纸又是一种要多长就会有多长的带子,上面有划好的方格,每一方格内都可以记上符号0或1。于是一切计算过程在本质上就是在每一步把方格里的0换成1,或把1换成0,或有时需要把注意力转移到另一方格上去。数学家随时都可以知道他做到了哪一步,而且可以根据纸带上看到的符号决定下一步要做什么。经过这样的分析,图灵指出∶任何计算都可以看作是由一个抽象的计算机完成的操作。这个计算机使用长条带子上成串的0或1,执行下列各种指令∶
写符号0;
写符号1;
向左移动一格;
向右移动一格;
观察正在扫描的符号并相应选择下一个步骤;
停止。
图灵明确提出了自动程序设计的思想,以及把自动设计的思想转化为机器证明的思想。
布尔的贡献∶布尔对计算机的最大贡献是他创造的逻辑代数,也称布尔代数。历史上的笛卡尔和莱布尼茨一直都想把人类的思维推理归于计算,但是苦于找不到一种合适的数学方法而始终没有成功。布尔也是基于这样的一种想法,即构造一个演绎思维的演算。因为他认为逻辑关系和某些数学运算很类似。正是这种思想推动他建立了一种完全不同于一般代数的代数布尔代数,从而可以将形式逻辑归结为代数演算,结果就为实现推理的机械化迈出了非常重要的一步。
布尔代数中逻辑的二值性恰好非常适合逻辑电路的设计。因为计算机的电子元件都是双稳元件,即它们天生具有二进性。开关可以开或关;脉冲可以隐或现;真空管可明可灭等等。所有这些器件恰好都有两个稳定的运行方式,对应着0和1。因而布尔为计算机的发展做出了不可磨灭的贡献,尽管他自己在建立这种代数时并没有想到计算机的研制。
有了理论上的准备,在进入20世纪后,又由于电技术的使用、电子技术的趋于成熟,让人意识到电是最好的信息载体。从而电气元件就成为代替齿轮的机器构件,于是计算自动化的新时代成为可能,因为制造通用数字电子计算机的时代正在来临。
历史上第一台真正的电子计算机是ENIAC(Eleclronic Numerical Integrator and Computer)。它是由三个主要因素促成的:
ENIAC
自动机所需要的理论发展基本成熟;
电子技术的飞速发展;
二战中提出的现实问题要求大量繁复的计算。
事实上,ENIAC的部件没有一个不是在十年或十五年前就可以制成的,可是由于当时没有急迫的需要,终于还是使它的诞生推迟了。可见需要是发明之母。在ENIAC中,用真空管代替了继电器和其他半机械式装置。由于真空管的电流由流动的电子组成,所以ENIAC比以前的计算机的速度要快很多。之后,人们又设计了比ENIAC 更强的EDVAC。
EDVAC由五部分组成,运算器、控制器、存储器、输入、输出。与以前的计算机相比较,它有两个重大的改进∶为了充分发挥电子元件的高速度而采用了二进制,布尔代数在其中发挥着非常重大的作用;提出了"存储程序",可以自动地从一个程序指令进到下一个程序指令,其作业顺序可以通过一种称为“条件转移”的指令而自动完成。ENIAC只能存储数据,EDVAC则改进了计算机的记忆功能,可以在一个记忆单元中存储100比特的信息。应当说,现代意义上的计算机是从EDVAC开始的。
与任何新生事物都会遭到传统思想的怀疑、责难和反对或者抵制一样,计算机给数学带来的这些新生事物也受到了传统数学家的怀疑、责难和反对。他们说,四色猜想的计算机证明不是证明,计算机的证明不可靠,应用计算机作大量试验而产生的分形几何不是数学,计算机应用于数学将导致数学的衰败…。但是,有一些数学家却认为,经过计算机证明的四色猜想是定理,也就是说,他们承认计算机的证明;分形几何不仅是数学,而且事实上还开辟了数学研究的一个新领域;计算机应用于数学不仅不会使得数学衰败,而目还将使数学家摆脱大量繁复的机械计算和推理,富裕出更多的时间和精力去从事更加具有创造性的劳动。因此,计算机还会加速数学的发展,就像工业革命时,机器代替体力劳动促进社会生产力的发展一样。