所谓计算机,顾名思义,就是用于计算的机器。诚然现在的计算机应用已经远远超出了计算本身,不论是电脑、平板、还是手机,我们天天靠着它们看电影、听音乐、交流感情,看似与计算已经毫无关系,但事实上最初计算机的诞生就是为了满足人们对数学计算的需求,而如今计算机这些强大功能的底层实现,也依旧靠的是数学计算,这也是为什么我们仍然保留着“计算机”这一称呼的原因吧。
那么首先就让我们愉快地从最原始的地方说起。当今世界范围内广泛使用的是电子计算机,“电子”这一前缀标明了计算机的实现方式,指依靠那些在原子核周围飞啊飞啊飞的电子们做成了计算机。现在人们早已习惯于集成电路、微处理器这类高科技产物,你也许会认为世界上第一台计算机就是1946年美国的那台电子计算机ENIAC,但事实远非如此,在人们能如此得心应手地利用电子之前,计算机早已经历了数百年甚至可以说数千年的发展。通过对从古至今计算设备的历史研究,科学家们基本认为,在电子计算机出现以前,计算设备的发展进程大致可以划分为三个阶段:手动时期、机械时期和机电时期。对应的计算机可以分别称为手工计算机(话说这个能叫计算机么)、机械计算机和机电计算机。(听着是不是很别扭啊,果然还是电子计算机最顺口哈。)
手动时期(远古时期~17世纪初)
手指
手指是人类(还有许多动物)与生俱来的计数工具,但在那个连语言都尚未出现的远古时期,尽管人们(猿们?)有着10根手指和10根脚趾,但最先还用不上,因为这些数对他们来说还是太大了,甚至可以说他们还没有明确的数的概念——在原始森林里,他们认识这棵树,也认识那棵树,唯独没有这是道旁第几棵树的概念,更没有某一范围内总共有多少棵数的概念。人类最初用身体的其他部位表示较小的数,比如用眼睛或耳朵表示2,然后才轮到手指。直到解放前,我国还有些文化发展比较迟缓的民族最多只能数到3或10,再往后数就数不清,只将其统称为“多”。在国外,澳大利亚、新几内亚和巴西的一些部落也没有定义2或3以上数字的名称。想来也是,在没有下意识计数的情况下,当有一两个人说你长得帅,你会记得有那么一两个人说你长得帅,而当有第三、第四人说你长得帅时,你的印象里一定是:好多人都说我长得帅^w^
但人类终究是要与较大的数打交道的,除了每天的吃喝拉撒,我们的祖先们渐渐需要面对打到了多少猎物、部落有多少人这样简单的统计问题。他们用上了手指乃至脚趾,但单纯的用“一根”表示1最多只能数到20,于是诞生了五花八门的手指计数方式。比如用右手表示个位、左手表示十位,这样最多就能表示到99。
![30022-b50d2a64fdd966b5.png](https://i-blog.csdnimg.cn/blog_migrate/65a31aa5dee0e2905d9f6f1592f71ffe.png)
![30022-3b8693c4712fbb46.png](https://i-blog.csdnimg.cn/blog_migrate/c38d9ebf5c4557f820262ce0baad9be7.png)
进阶一点,可以用上手指的关节。摊开你的手,可以看到,拇指有2个关节,其他手指均有3个关节。具体如何表示,就可以发挥你的想象力了。比如用拇指和食指的关节(共5个)表示十位,用其他三个手指的关节(共9个)表示个位,单只手就可以表示到59,这种表示方法正是针对古巴比伦使用六十进制的一种假设。
再进阶一点,手指的弯曲、指关节的方向、甚至手势都可以用来表示更大的数,例如古代威尼斯的一种手指计数法,大家感受一下。(仔细一看,我第一个手势就做不出来……)
![30022-b7847037ca7e2e48.png](https://i-blog.csdnimg.cn/blog_migrate/aaa0be6cbb14f9d47d328c7692547ffa.png)
不得不感叹人类的智慧,在那个无法借助外部工具的时代,人们光靠手指就能计数到成百上千,甚至达到百万。现在我们也用手指,却基本只会从1数到10,折回来再从11数到20,以及一些表示6、8等特殊数字的简单手势。
然而仅仅能用手指表示数字并不稀奇,现在聋哑人使用的手语除了数还能表示无比丰富的含义,欲将手指称为计算工具,起码还要实现计算功能。手指确实可以进行一些简单的计算,而且不但能做加减还能做乘除,但通常只能计算特定范围内的数,往往还需要心算的配合。现在一些数学老师热衷于开发面向小朋友的手指速算法,确实比纯心算要快、要可靠,但仍然需要与口诀和简单的心算配合。而正是手指的这种局限性,促使着人类去寻求更先进的计算工具,一步步朝牛逼的电子计算机迈进。
石子什么的
用手指计数和计算的一个明显缺陷就是无法进行存储,只能显示一个当前数,而且为了记录一个数你的手指也不能一直那样摆着不是。人们最早借助的外物是一些极常见的石子、贝壳、小木棍等,比如可以在地上摆放对应数目的石子来表示圈养了多少猎物,宰杀了两头就从中取出两块石子,新狩猎到三头就往进添加三块石子,人就不需要时刻记着还剩多少头猎物。
聪明而富有信仰的古人们还会发明了一些有趣的摆法,一则美观,而则易于读数,比如美国南部印第安人将石子、木棍和箭结合使用,将21摆成万字符。
![30022-e1191e85f07eec87.png](https://i-blog.csdnimg.cn/blog_migrate/225512c59937f6eb11dda5233483eb6f.png)
在这里,中华民族伟大的先人们就开始犀利了。古老而神秘的河图、洛书便是由石子计数演变而来,使用黑白两类石子,不但可以表示数字,还推演出高深的阴阳八卦,早已上升到哲学高度。
![30022-44ab7015d8cfb324.png](https://i-blog.csdnimg.cn/blog_migrate/0c91ab905de27115ee1099c79d4c1492.png)
结绳
相信大家对“结绳记事”并不陌生,在绳上打结可以代表数字,这个方法在国内外皆有考证。传说波斯王派军远征时,命他的卫队留下来保卫耶兹德河上的桥60天,但士兵可能没那么聪明,如何计算天数呢?又不能像现在这样每天早上掏出手机看是几月几号。于是波斯王在皮条上打了60个结,嘱咐士兵每天解开一个,解完结就可以回家了。
与手指一样,结绳法并非只能用一个结表示1,结的打法、结与结之间的距离均可表示不同的数字,比如两个相邻的结表示20、双重结表示200。给绳子染上颜色,更能表示诸多其他含义,比如黄色表示玉米、红色表示武器。在秘鲁等国家甚至使用结绳法记录历史传说,这就是为什么我们常说“结绳记事”而不是“结绳记数”的原因吧。而正是由于结绳有着这样那样的丰富内涵,古时许多民族认为它神圣不可侵犯,需要有专人进行管理,没有权利的人随意打上或解开绳结会受到严厉的处罚。
![30022-d93784cd0ee957ce.png](https://i-blog.csdnimg.cn/blog_migrate/9f98bc9cf76381c84a353462e34f0610.png)
结绳法除了记数和记事外,还能用于通讯、用作契约凭证,用途如此广泛,正是由于在文字诞生之前,比起表示数字,结绳更是一种表示文字的有效途径。然而结绳用于记事虽然稳定长久,但在计算方面似乎就无能就为力了,你总不能为了算个加减法在两三根绳上不停地打结、解结吧,累不死你。以最有名的秘鲁结绳法为例,在现存的一副16世纪左右的图画中可以看到,左下角有一个计算盘,在上面用玉米仁进行计算,而后将计算结果转换为绳结,可见结绳本身并没有计算功能,仅仅被用来记录数据。
![30022-589bb1cb73f5ce5c.png](https://i-blog.csdnimg.cn/blog_migrate/c772cfb60a784cfc863bad1ab378fac3.png)
筹码/算筹
呃,首先要说明一下,这里的筹码是指古人的一种计算工具,不是现在赌场里那玩意儿!
筹码(或称算筹、筹等)在国内外的应用也十分广泛,直到上世纪前四分之一时期仍有许多民族使用。不同文化中的筹码形状各异,有方形、长条形、圆形等等,制作材料也很丰富,如竹、木、骨、铁、玉、象牙等,凡能削出特定形状的硬物皆可为之。人们通过用刀在筹码上刻痕来实现记数,刀痕的数目、组合、深浅、部位,以及筹码本身的颜色、摆放的相对位置等均有不同含义。
![30022-6bc2232e7099f7ec.png](https://i-blog.csdnimg.cn/blog_migrate/94045b3aa4f1624995891f78c38f1492.png)
由于筹码制作简单、使用方便、易于保存,其用途非常之广泛,可以用作收据,甚至钱票。其中有一种债务筹码挺有创意,在筹码上刻上欠债金额,而后劈成两半,债务人和债权人各执一半,到算账时两半拼合,刀痕必须重合,铁证如山,篡改不得,都不需要像现在这样双方签字、摁手指什么的,真是既方便又实用。
相比前三类工具,筹码在计算能力上突飞猛进,方可谓一件比较完善的计算工具。爱沙尼亚有一种计算筹码与后来出现的计算尺略像,做成了可以相对移动的插销形式,可以进行快速计算,估计算是计算尺的鼻祖了。
说到这里,当然少不了我国古代简直独孤求败的筹算,最迟在春秋战国时期就已出现,古文中“运筹帷幄”“觥筹交错”等言皆出于此。所谓筹算,就是以算筹为工具,进行加减乘除四则运算,以及乘方、开方和其他代数运算的运算方法。纳尼!乘方?开方?!是的,你没有看错,而且远不止这些,筹算甚至能解方程(组)、求最大公约数和最小公倍数、计算圆周率、解同余式组、造高阶查分表等等,甚至还使用到负数等较为抽象的数字,比西方早出一百年甚至好几百年。公元480年左右,南北朝时期的数学家祖冲之使用筹算将圆周率精确到小数点后7位,这一精度保持了近千年,直到15世纪初才被打破。
筹算能达到如此高的水准,全靠一代代劳动人民和数学家的探索总结。他们以小木棒的组合摆放表示数字,依靠熟记于心的口诀进行运算,九九乘法表就是其一,现在人依然靠它进行乘除法心算。算筹,包括之后的算盘作为工具本身并不复杂,并没有太强大的功能,真正强大的是使用它们的算法。而为了在简单的工具上完成复杂的算法,必然需要进行许多机械式的重复步骤,久而久之熟能生巧。筹算熟练者,计算速度应该是比较可观的,沈括《梦溪笔谈》中有“运筹如飞,人眼不能逐”的描述,不知是否有夸张成分,但参考现在娴熟的算盘手,基本也能想象其景。
算筹以纵式与横式两种形式表示1~9(0则以留空表示),个位数用纵式,十位数用横式,百位数又用纵式,以此类推,间隔使用,正如《孙子算经》中的口诀所言:“一纵十横,百立千僵,千十相望,万百相当。”估计与现在许多地方使用间隔色一样是为了方便人眼区分吧。《夏侯阳算经》在其后又加了四句:“满位以上,五在上方,六不积算,五不单张。”指当数超过5,用一根放在上方的算筹表示5,像极了后来出现的算盘。不过算盘本来就是由算筹发展而来的,不像才怪咧。
![30022-64b0cfe335d2a810.png](https://i-blog.csdnimg.cn/blog_migrate/e4d0420d6b9c6db609bbf7e0ad5ecf64.png)
古人在进行筹算时,先将棍状的算筹从随身携带的算袋中取出,放到桌上、炕上或地上进行排布,跟现在在纸上打草稿有的一拼,算法也有相似之处。以《孙子算经》所记乘法为例,与现在的演算过程简直如出一辙。
![30022-c0de0116187dfb34.png](https://i-blog.csdnimg.cn/blog_migrate/0de1fbad88477a7fe0b66ae98bbd1c0e.png)
算筹如此强大,但也并不就意味着已经登峰造极了,随着数学家们推出越来越多牛逼的算法——什么重因法、身外加减法、求一法,听都没听说过——靠作为一堆小棍棍的算筹应付起来已经有点有心无力了。何况筹算时所用算筹数量庞大,表示单个数就可能用到5根,数多则致繁乱,三国时期魏国人管辂的《管氏地理指蒙》一书中甚至以筹喻乱:“形如投算,忧愁紊乱。”而且起初的算筹长约14厘米,摆个6(“丄”)就要占200平方厘米,可以想象,做稍微复杂一点的运算时得放多大一块面积。古人也意识到这个问题,逐步改短算筹,到宋元间缩至1~3寸,但面对大计算量的问题依然不好使。宋代马永卿《懒真子》一书就有言:“卜者出算子约百余,布地上,几长丈余。”这要算个东西简直要铺满客厅,还得满地爬,不仅是个脑力活,更是体力活,搞不好还容易闪着腰啊……
算盘
在手动计算时代,算盘称得上是件当之无愧的计算神器了,它的功能与算筹同样强大,因框架和算珠制成一体,携带和使用则比算筹方便得多,发展至元中后叶基本取代了算筹。
起初的算盘并不是今天这副模样的,它有一个逐步发展的过程,不同地区的算盘不尽相同,虽然大抵都是一个规格化的底盘,上有可移动或摆置的算筹,具体实现却花样层出,都是铺天盖地的智慧啊!这里就以我国的算盘为例,大家都比较熟悉。
阶段一:底盘为一个10行若干列的表格,形如棋盘,行号代表0~9,有多少列就可以表示多少位的数,通过在小方格中摆放筹码来表示数,国内外曾用过石子、贝壳、木块、金属块、果核等,这里统称为算珠。数的表示方法很简单,以笔者撰写该部分内容的日期150622(2015年6月22日)为例。
![30022-e66714c66631eb26.png](https://i-blog.csdnimg.cn/blog_migrate/3b97c754b17302ddd190d9ad1b7c4aa1.png)
阶段二:使用两种颜色的算珠,算盘面积减小了一半。0~4用黄算珠,5~9用黑算珠表示,更像下棋了。
![30022-5e0e32a8422bf5a4.png](https://i-blog.csdnimg.cn/blog_migrate/d70b8454d32ad8b0fbc237df76fb459f.png)
阶段三:以横梁为界,将算盘分为上下两部分,上面的一个算珠表示5,下面的一个算珠表示1,以算珠的位置和数目结合表示数字,不再区分颜色,形成了最终的算盘规格。
![30022-50689afc81b94949.png](https://i-blog.csdnimg.cn/blog_migrate/8a8a412233df11fc8d1f1db6573992bd.png)
这种形式的算盘存在到八世纪(唐朝中期),到十世纪(唐朝后)即采用了目前木框木柱穿木珠的形式(当然任性一点金制、玉制的什么都有),此外当然还有一些非主流的算盘形式出现,从十七世纪(明末期)开始算盘就没再有何本质上的变化。
![30022-20f51aeeb6cc0518.png](https://i-blog.csdnimg.cn/blog_migrate/7a63c28d7153619026899e3c77e52732.png)
想必大家都多少接触过算盘,此处就不赘述其使用方法了。就算没有接触过,你一定听说过“三下五除二”吧,这本是句珠算口诀:在某一位上加3时,如果下方珠子将超过4个,就需要拨下一个上方表示5的珠子并去除下方两个表示1的珠子,以“+5-2”代替“+3”。欲知更多知识,请自百度之。
算盘之所以能称为神器,是因为用它能解算古代所有的数学问题,古代中国学者甚至认为,只有当一个问题能用算盘求解时,这个问题才算是可解的。在我国研制第一颗原子弹时,计算机不够用,科学家们就打算盘,打出那原子弹爆炸时中心压力的正确数据!
要知道算盘用得熟练,计算速度可是相当给力的。在1946年日本东京的一场表演中,一位算盘手PK使用电动计算机(下一篇会提到的机械式计算器的一种)的美国军官时全盘胜出。就算你使用现在的电子计算器,在基本运算方面也敌不过熟练的算盘手,因为你按键的速度赶不上他们拨珠的速度。加上算盘出错的范围较小,因此在电子计算器称霸日常计算领域的今天,依然有不少人喜欢使用算盘。2013年12月4日,珠算成功申遗,被誉为中国的第五大发明。
但算盘的计算速度毕竟已经比不上计算器了,现在更多的是用于培养孩子的心算能力,调查发现,学习珠算的孩子心算能力比不学珠算的孩子强得多。后又出现了一项神技——珠心算,通过在脑海中浮现算盘影像的方式实现快速心算。今年3月13日的《最强大脑》节目中日本9岁神童辻洼凛音震撼全场,6172938×1203490分分钟,不对,秒秒钟写出答案,计算时手指快速搓动,靠的就是珠心算。
![30022-405d1593daae088f.gif](https://i-blog.csdnimg.cn/blog_migrate/af6d45505a66446dec3fa3aa619a6ffd.gif)
纳皮尔棒/纳皮尔筹
苏格兰伟大的数学家约翰·纳皮尔(John Napier)一生最大的成就估计就是对数了,在那个计算工具简陋的那个年代,对数的出现大大简化了乘除法的计算,因为使用对数,乘除就可以简化为加减。事实上,纳皮尔棒仅仅是当时纳皮尔为计算对数表而发明的辅助工具。
1617年,纳皮尔在《Rabdologiæ》(这单词是纳皮尔自己造的,个人认为可以翻译为“筹算法”)一书中介绍了三种计算工具,纳皮尔棒是其中最著名的一种。在之后的一两百年中相继出现了诸多纳皮尔棒的改良版本,它们使用起来都更方便更快捷,然并卵,人们不会记住第二个登上月球的人,这里只介绍纳皮尔的设计。
纳皮尔棒是一根根零散、独立的小棒,棒上密密麻麻印着什么呢?其实就是乘法表,每个小格都通过一根斜线划分成两部分,左上部分填十位数,右下部分填个位数,这样设计是由于采用了来自印度的gelosia乘法(或形象地称之为百叶窗乘法)。
![30022-706b4c69f266fc41.png](https://i-blog.csdnimg.cn/blog_migrate/70231088f17734356017ddc3278ece24.png)
使用时将所需的小棒并排放在一起进行计算,以笔者撰写该部分内容的时间(6月24日晚9点)为例,计算624×9,先将代表6、2、4的小棒并排放置。读出它们与9对应的那一行数,以斜线为界,对每一位进行相加,超过9时通过心算进行进位,很快得到最终结果5616。
![30022-99f866e919cb15e9.png](https://i-blog.csdnimg.cn/blog_migrate/bd299b175a6c0d26d05e0ef9a566c484.png)
多位数与多位数的相乘则是先将被乘数与乘数的每一位相乘,最后错位相加,如此纳皮尔棒便巧妙地把乘法化简为加法。而对过程稍一分析就不难发现,其原理其实十分简单,与我们现今用的笔算方法一致,皮纳尔棒主要是省去了背诵乘法表的功夫,连进位都仍需心算,但在进行大数的乘除时可以节省时间。另外,皮纳尔棒还可以用于开平方和开立方,与前面的10根小棒不同,另有专用的小棒,具体算法就不再深究了,感兴趣的朋友可移步维基娘。
补充知识:纳皮尔棒,英文Napier's Bones或Napier's Rods,Rod很明显是Rabdology的缩写,而之所以有Napier's Bones之称是因为纳皮尔棒多由动物的骨、牙、角等制成,因为纳皮尔棒也有“纳皮尔骨筹”、“纳皮尔骨算筹”、甚至“皮纳尔的骨头”等叫法。
计算尺
借助纳皮尔的对数,人们可以将乘除法化简为加减法,具体操作时需要反复查阅对数表。举个简单的例子,计算8×16,先从对数表上查得8的对数3、16的对数4(以2为底),8×16便转换为3+4的计算,最后在对数表上找到7所对应的数128——便是最终结果。
为了简化这反复查表的过程,1620年,英国数学家埃德蒙·甘特(Edmund Gunter)将对数表刻在了尺上,使用时需要借助一个圆规。再以8×16为例,先将圆规两脚分别指向1和8的位置,而后保持圆规张角不变,平移使其左脚指向16的位置,此时右脚所指便是计算结果。
![30022-1b87e8a9723d6460.png](https://i-blog.csdnimg.cn/blog_migrate/fb93a9ff9afa39e04f9f202aa6a20b0a.png)
1622年左右,同样来自英国的数学家威廉·奥特雷德(William Oughtred)将两把甘特对数尺并排放置,通过相对滑动就实现了尺上示数的相加,不再需要圆规佐助,只要拉动一下就可以轻松得到乘除结果,如此一件方便实用的神器却过了整整两个世纪才流行起来。
![30022-9c5d172fee15abbf.jpg](https://i-blog.csdnimg.cn/blog_migrate/f94daa888178e814f99af2ee754a81ac.jpeg)
与纳皮尔棒一样,计算尺在风靡时期也产生了众多升级版,除了可以进行乘除、开方等基本运算外,比例、倒数、正弦、余弦、正切等也不在话下。(神奇的是,计算尺不能做加减法,嗯,或者说加减法对计算尺来说太low了。)1850年,一个年仅19岁的法国炮兵中尉在计算尺上加上了游标,这一设计被一直沿用了下来。
直到上世纪六七十年代计算尺才被电子计算器所渐渐取代,许多那个年代过来的前辈们一定都亲身使用过,现在也仍能买到,只是不再流行。感兴趣的朋友也先别急着打开某宝,老外做了个虚拟计算尺的网站,提供了7种不同的计算尺任君玩耍。这里以笔者撰写该部分的时间(6月25日晚9点)为例,计算6.25×9,将中间滑尺的起始位置与上侧刻度6.25处对齐,将游标与滑尺刻度9处对其,此时游标所指上侧尺的刻度即为计算结果,因为精度有限,需要估读:56.1——与正确答案56.25存在误差,这也正是计算尺的一个缺点。
![30022-347f03da7a4cd690.png](https://i-blog.csdnimg.cn/blog_migrate/afbc720b70801b80ce666209c21d1061.png)
或者你是个DIYer,只需一张A4纸、一卷胶带、一支笔就可以自己动作制作一把,成就感满满~
![30022-16220e087c151c55.png](https://i-blog.csdnimg.cn/blog_migrate/c4782dc8c8389065443eaf75176833e4.png)
参考文献
[1] N.A.阿波京, JI.E.梅斯特洛夫. 计算机发展史[M]. 上海: 上海科学技术出版社, 1984.
[2] 吴为平, 严万宗. 从算盘到电脑[M]. 长沙: 湖南教育出版社, 1986.
[3] 胡守仁. 计算机技术发展史(一)[M]. 长沙: 国防科技大学出版社, 2004.
[4] 陈含章. 结绳记事的终结[J]. 河南图书馆学刊, 2003, 23(6):71-76.
[5] T.帕帕斯. 趣味数学集锦(上)[M]. 上海: 上海教育出版社, 1998.
[6] 陈厚云, 王行刚. 计算机发展简史[M]. 北京: 科学出版社, 1985.
[7] 傅海伦. 算筹、算盘与计算机[J]. 自然杂志, 2002, 24(1):56-58.
[8] 李中恢. 我国古代算筹的应用[J]. 安徽农业科学, 2008, 36(19):8392-8393.
[9] 戎丹妍. 珠心算顶尖高手在南京——打算盘真比计算机快[N]. 现代快报, 2013-11-11(A30).
[10] 郭世荣. 纳贝尔筹在中国的传播与发展[J]. 中国科技史杂志, 1997, (1):12-20.
[11] Wikipedia. Napier's bones[EB/OL]. https://en.wikipedia.org/wiki/Napier%27s_bones, 2015-06-07.
[12] 克利夫·斯托尔. 300年辉煌:计算尺传奇[J]. 环球科学, 2006, (6).
[13] 吴师傅. 如果没有计算器,我们就用计算尺吧[EB/OL]. http://www.guokr.com/article/38752/, 2011-06-08.
[14] Cliff Stoll. When Slide Rules Ruled[J]. Scientific American, 2006, 294(5):80-87.
相关阅读