查看原文
其他

为什么中国人用算盘,西方人用计算机 | 大象公会

2015-08-27 大象公会 大象公会

欧亚大陆的东西两端是人类文明史上最好的对比材料,仅就计算工具而言,中国人善用算盘,手熟者常常自诩赛过计算器;西方世界却厚积薄发,在20世纪中叶发明了通用电子计算机。让人难免好奇,是什么样的力量,主导了这大相径庭的技术史?


文 | 刘大可


古装剧中,手持算盘的账房先生是常见角色之一,手熟者拨弄飞快,很快就能理清一天的账目。今天,还有不少中小学讲授算盘用法,然而只是作为传统文化的修行,很少有人真的再用它计算。


人们更熟悉电子显示的计算器,更复杂的计算,则由电子计算机完成。


中国人很早就发展出了完备的计数系统、算数方法,为什么没有进一步发展,到最后却是西方人先发明了计算机?


算盘,西亚人的发明


和一般人想象的不同,算盘并非中国人的发明。最早的算盘出现在公元前2700年到2300年左右的苏美尔文明,最初只是一个有横隔的泥板,摆上泥丸或者石子,按位累加,放满清空,并在下一列加1——这就是进位制的最初起源。


▍苏美尔算盘模型


到了巴比伦时代,它演变为一种60进制的记数系统。这是用手指计数的产物——用左手大拇指依次触击其余四指的三个关节,可以数到12,数完一遍,右手屈起一根指头,屈起5根手指就是60。这种手指记数尤其适合清点货物,这也是为什么12进制是世界各地常见的计量单位之一。


▍巴比伦数字在古典时代西传到了古希腊,进而被古罗马继承,演变成了一种青铜算盘


但巴比伦数字严重混淆,61和2看上去没有区别,而且一个完整的乘法表需要59×60÷2= 1770项,致使古两河流域的数学并没有过高的发展。


好在算盘的发明西传进入地中海地区,古希腊和古罗马将它改良成便携的青铜工具,拉丁语称为“abacus”(复数abaci)。


罗马式算盘采用一种双5进制,横档上,上1珠每珠当5,下4珠每珠当1,例外的是最右两列:θ列上1珠每珠当6,下5珠每珠当1,可以表示0到11的数字,专门用来处理罗马单位制中的12进制。


比如1磅(libra)=12盎司(uncia),1尺(pes)=12寸(uncia)。最右边一列是一档4珠,或者分成3档,分别嵌有1、1、2颗珠子,用来计算罗马的青铜货币阿斯(As,源自重量盎司),这种货币带有很多种分数币值, 1/2、1/3、1/4、1/12等等,是一种混乱的混合进制。


▍两副罗马式算盘,现藏伦敦科学博物馆,上者最右档遗失2株


罗马算盘小巧灵活,为建筑师、工程师、商人提供了很大的方便,但是欧洲人长期使用的罗马数字却异常地蹩脚——他们为某些特殊值设立了符号,然后用左减右加的方式凑出需要的数值,结果让算术在形式上缺乏规律,25+5=30写作XXV+V=XXX,35+5=40写作XXXV+V=XL,要用这种数字系统思考就不得不记住大量的结果。


不客气地说,从古罗马到中世纪,欧洲在数学发展上乏善可称,13世纪以前只要会算除法就敢称数学家,这让欧亚大陆另一端的中国人显得“更胜一筹”。


领先的中国人


此时的中国人使用什么计算工具?


筹算。它与巴比伦数字一样只有横竖两个符号,但机智地采用了横竖混排,有效避免了罗马人那样的混淆状况,是第一种有进位的10进制记数法。


这种计数系统经过南北朝、宋朝的改进,能够标明小数和正负数,是当时最为先进的计数系统之一。


它的领先到了什么程度?印度-阿拉伯数字传入古代中国时,根本不受重视,因为它的功能在中国人看来,没什么新鲜的。



▍筹数的竖式和横式表示法。1069的两种表示法中虚线框表示空位,代表0



▍苏州花码。其1、2、3有两种写法,现在常见于港澳地区的茶餐厅和公共汽车


中国人很快发展出一套快速准确的筹算加减法,早在公元前305年的战国竹简中就给出了完整的乘法表,到南北朝的《孙子算经》则根据“九九表”给出筹算乘法和除法的规则。



▍公元前305年的《清华算表》,是一个扩充的九九表,本身也是一件查询式计算工具


整数四则运算只是筹算的低级内容,仅《孙子算经》就还有分数四则筹算法和筹算开平方法,更早的《九章算术》给出了最大公约数筹算法、筹算联立一次方程法、筹算开立方法。南朝的祖冲之用筹算“调日法”得到了圆周率的率355/113,精确到小数点后7位,保持世界记录1千年之久。北宋贾宪发明了筹算增乘开立方法,能给百万数量级的大数精确开立方,并被南宋秦九韶推广,发展出了特定一元四次方程的解法。


▍秦九韶四次方程筹算法第一步


筹算的巅峰应用则出现在元代,朱世杰(1249-1314)在《四元玉鉴》中给出了特定四元高次方程组解法,可用算筹逐次消元化为一元高次方程。


▍朱世杰《四元玉鉴•四象会元》中的四元术,可见随处标注的筹数


在上述两种计算工具的基础上,中式算盘诞生了。很难说中国的算盘是否是独立发明的,它与西方算盘非常类似,很可能是丝绸之路东西交流的产物。


中国算盘最早见载于东汉末年的《数术记遗》,是像罗马算盘一样的游珠算盘,到唐代改良为现在的串珠算盘;而现存最早的算盘图像见于北宋张择端的《清明上河图》,卷左赵太丞家药铺柜台上有一个十五档一四算盘,和现代会计算盘几乎一样。


▍《清明上河图》局部,白色虚线框内为算盘,与下面的菱形珠十五档一四算盘同款


操作上,中式算盘比算筹更加实用。它节省空间,操作迅速,记熟一套“三下五去二”就足以胜任绝大多数账面工作;但又牺牲了布局的自由,只从筹算上继承了四则运算、开平方、开立方等简单操作,两幅算盘并联操作才能计算分数。


因此,筹算被数学家青睐,珠算在民间迅速推广,这也使得算盘的形制不像算筹那样固定。


中式算盘发明之初采用菱形珠子,上1珠每珠当5,下4珠每珠当1,每档能表示0到9的数字,完全复制了算筹的10进制。这种一四算盘在宋代时传入日本,在那里一直沿用至今,并在清代末年传回中国,成为现代会计算盘的主要形制。


但中国本土的算盘到明代时改革成了圆形珠子,上2珠每珠当5,下5珠每珠当1,每档能表示0到15的数字,成为一种16进制和10进制通用的计算工具。这是因为中国的长度和容积单位采用10进制,主要的重量单位却是1斤=16两,所以布店打算盘只需1颗上珠和4颗下珠,粮店打算盘就要7颗珠子全用到了。为了便携,明代以后的算盘还往往减少成13档,这些古老而便捷的计算工具有着惊人的计算速度,直到20世纪后半叶才被手持电子计算器勉强击败,但仍然以珠算和珠心算的形式出现在东亚各国的基础教育里。


▍清代十三档二五算盘


西方人的逆袭


中国人在计算上的优势一直都很明显,算盘和筹算的不断改进,让这种优势越拉越大。


然而,阿拉伯数字的传入,却让天平出现了变化。


13世纪初,中世纪最伟大的数学家,意大利的斐波那契(Leonardo Fibonacci,约1170-约1250)出现了。他在北非经商时学会了“阿拉伯数字”,写成一本《计算之书》(liber abaci,直译“算盘书”),让欧洲人有了进位的概念。


阿拉伯数字不但取代了罗马数字,还取代了罗马算盘,因为阿拉伯数字从0到9都设立了单独的符号,借此开发出了一套纸上列竖式的算法,千变万化一目了然,又便于核对,到16世纪就占据了压倒性的优势。


▍《玛格丽塔哲学书》(Margarita philosophica)中的插图,绘于1503年,左边使用阿拉伯数字的Algorist正用胜利的表情看着右边使用算盘的Abacist


阿拉伯数字将罗马数字和罗马算盘逐出舞台之后,让算术关系变得更加清晰,在近代以来的巨大变革中,欧洲的计算工具走上了完全不同的发展道路。


一个重要的信号,是查询式计算工具的出现。最典型的是苏格兰数学家约翰•纳皮尔(John Napier,1550-1617)发明的“纳皮尔的骨头”(Napier's bones)。这套工具主要用来计算乘除法,计算时先用算码凑成一个因数,再根据行号读出与另一个因数每一位的乘积,最后在纸上相加,本质上就是一副活字九九表,如果加入其它扩充的算码还可以用来开方。


之后的三个多世纪里,它不断改良,是近代早期欧洲最流行的计算工具,并曾东传中国,被清代数学家当作筹算的分支。


▍纳皮尔的骨头


但约翰•纳皮尔的数学贡献不只是一副“骨头”,他还是对数概念的提出人,这直接引出了另一种沿用至今的计算工具——计算尺。


17世纪的大不列颠开始对外殖民扩张,航海、测绘、天文定位都出现了难以完成的计算需求,而对数可以化幂运算为乘除法、化乘除法为加减法,法国数学家和天文学家拉普拉斯(Pierre Simon Laplace,1749-1827)曾赞叹:“对数,可以缩短计算时间,在实效上等于把天文学家的寿命延长了许多倍。”


▍如同乘法表,对数表也是一种查询式计算工具,但在电子计算机发明以前只有少数研究机构才有实力算出这二郎神都会看花眼的东西


1620年到1630年间,牛津大学和剑桥大学根据纳皮尔的对数原理,发明了更方便的滑尺,分直形和圆形两种,可通过对齐尺子上的刻度查询计算结果——这就是中文“对数”一词的由来。


随后的两个世纪里,工程师和数学家不断为计算尺引入新的刻度,并添加了滑动的游标,发展成现代的多相算尺,可以进行加减法之外所有的算术运算,以及三角函数等超越计算,不同工程领域还常常研发出自己的专业型号。


20世纪70年代出现电子科学计算器以前,计算尺都是工程师的身份象征。





▍几种计算尺


查询式计算工具蓬勃发展的同时,精密仪器制造业也从15世纪起崛起发展,最初只是一些商业城市用自鸣钟楼统一作息,以适应日趋工厂化的制造业,到17世纪发展成更加精密的座钟和怀表。


钟表指针的齿轮转动天然地具有进位功能。1642年,法国数学家、物理学家和化学家帕斯卡(Blaise Pascal,1623-1662)借此设计了一台“帕斯卡计算器”(Pascal's calculator)。长方形的黄铜盒子上开有一列读数窗,下面对应着一行带辐条和指针的齿轮。操作时先像拨盘电话一样逐位输入一个加数,这将显示在上方的读数窗里;再用同样的方式输入另一个加数,读数窗里就会显示出和了。


▍现存帕斯卡计算器之一,制作于1942年,现存法国工艺美术馆


帕斯卡计算器虽然在功能上远远不及算筹和算盘,却是一次彻底的革命——算筹和算盘本身不包含任何算法,只能存储计算的中间结果,操作依赖熟记指令的人,本质上只是寄存器。帕斯卡计算器却用内部的齿轮机构预存了算法,操作者完全不需要知道计算方法就能操作。


这才是真正的计算器,而不止是计算用的工具。


尽管占有许多历史第一,但帕斯卡的计算器并没有充分推广,他的设计初衷只是帮助父亲计算税收,造价非常高昂,最后沦为有钱人的机械玩具,前后只卖出约20件。


与帕斯卡类似,德国大数学家、哲学家莱布尼兹(Gottfried Wilhelm Leibniz,1646-1716)也对机械化的计算工具颇有兴趣,他在1672年到1694年之间发明了一种“步进计算器”(Stepped Reckoner),采用了他独创的“莱布尼兹轮”(Leibniz wheel),可以控制齿轮只转动需要的角度。这产生了相当复杂的运算能力,除了普通的加减法意外,还能将两个8位数字相乘为一个16位数字,或者用一个16位的数字除以一个8位数字。


▍莱布尼兹两件步进计算器中的一件


作为人类历史上第一件能实现四则运算的计算器,造价高昂的步进计算器也没有获得普遍的推广,当时只制作了两件,现存一件。但这已经奠定了欧洲机械计算器的研发基础。


18世纪,功能日渐强大的机械计算器在欧洲雨后春笋般的涌现出来,比如下面这台从莱布尼兹的设计中衍生出来的计算器就可以切换多种进位制。


▍德国数学家Johann Helfrich Müller设计的盘形计算器


从18世纪开始,另一种强劲的力量加入到计算器的发明之中——商业。


1820年,第一个结实可靠,能胜任日常使用的法国“四则计算器”(Arithmometer)发明了,它在1851年投产。在它的带动下,一大批台式机算器进入了会计师的办公室,许多品牌一直沿用到20世纪。



▍一些计算器


▍19世纪主要台式计算器的研发和生产型号,黄色部分表示专利申请时间,蓝色部分表示投入生产时间


不过,仅就实用价值来看,这些新奇的机械计算器还不能压倒算盘,但就在四则计算器获得专利的同时,英国数学家和工程师查尔斯•巴贝奇(Charles Babbage,1791-1871)的脑海中已经有了现代计算机的雏形。


他首先在1822年设计了差分机(Difference engine),旨在将计算到印刷的过程全部自动化,全面排除人为误差。它由英国政府出资建造,大约有2万5千个零件,重4吨,用蒸汽机驱动,最高可以读写16位数,是人类踏进计算机科学的重大起步,但因为大量精密零件制造困难,从1822到1832年的十年间只完成了1/7,最终1万2千多个还没用到的精密零件都被熔解报废。


▍差分机1号完成的1/7


失去政府支持后,巴贝奇继续设计了更加精密的分析机(Analytical Engine),能用多项式展开的方法计算对数和三角函数,大约有30米长、10米宽,内存已有20.7kB,用打孔纸带输入,完成类似汇编语言的程序指令,是一种图灵完备的通用计算机。


▍分析机部分组件的实验模型,巴贝奇自制,现藏伦敦科学博物馆


可惜,同样出于资金和技术的原因,这部超越时代的机器并没能制作出来,但给后世开辟了全新的研发思路。19世纪晚期,打孔卡和真空管等关键技术相继问世,大大降低了完成同样功能所需的资金和体积,终于在1941年,踏过几个世纪的漫长征途,第一台数字电子计算机问世了。


▍阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer),世界上第一台电子数字计算机,制造于美国爱荷华州立大学


原理上,一切电子设备的功能都可以由机械设备同样完成,算盘与计算机的差距就只是一套代替人手的“拨珠器”。


然而,中国很早就发展出了完备的记数系统和算术方法,足以抵御外来数学体系的渗透,但又没有产生更进一步的应用需求,让数学工具向着更复杂的方向发展。


今日,电子计算机颠覆了每个现代人的生活,算盘却只能被当做传统文化的一部分,在中小学传承。




真正的中国汽车长什么样 | 大象公会


人们对狗做了什么 | 大象公会


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存