(一)计算机学习系统 (来自作者 :逸之)

一、计算机的发展史

01改变世界:没有计算器的日子怎么过——手动时期的计算工具

  所谓计算机,顾名思义,就是用于计算的机器。诚然现在的计算机应用已经远远超出了计算本身,不论是电脑、平板、还是手机,我们天天靠着它们看电影、听音乐、交流感情,看似与计算已经毫无关系,但事实上最初计算机的诞生就是为了满足人们对数学计算的需求,而如今计算机这些强大功能的底层实现,也依旧靠的是数学计算,这也是为什么我们仍然保留着“计算机”这一称呼的原因吧。

那么首先就让我们愉快地从最原始的地方说起。当今世界范围内广泛使用的是电子计算机,“电子”这一前缀标明了计算机的实现方式,指依靠那些在原子核周围飞啊飞啊飞的电子们做成了计算机。现在人们早已习惯于集成电路、微处理器这类高科技产物,你也许会认为世界上第一台计算机就是1946年美国的那台电子计算机ENIAC,但事实远非如此,在人们能如此得心应手地利用电子之前,计算机早已经历了数百年甚至可以说数千年的发展。通过对从古至今计算设备的历史研究,科学家们基本认为,在电子计算机出现以前,计算设备的发展进程大致可以划分为三个阶段:手动时期、机械时期和机电时期。对应的计算机可以分别称为手工计算机(话说这个能叫计算机么)、机械计算机和机电计算机。(听着是不是很别扭啊,果然还是电子计算机最顺口哈。)

手动时期(远古时期~17世纪初)

手指

手指是人类(还有许多动物)与生俱来的计数工具,但在那个连语言都尚未出现的远古时期,尽管人们(猿们?)有着10根手指和10根脚趾,但最先还用不上,因为这些数对他们来说还是太大了,甚至可以说他们还没有明确的数的概念——在原始森林里,他们认识这棵树,也认识那棵树,唯独没有这是道旁第几棵树的概念,更没有某一范围内总共有多少棵数的概念。人类最初用身体的其他部位表示较小的数,比如用眼睛或耳朵表示2,然后才轮到手指。直到解放前,我国还有些文化发展比较迟缓的民族最多只能数到3或10,再往后数就数不清,只将其统称为“多”。在国外,澳大利亚、新几内亚和巴西的一些部落也没有定义2或3以上数字的名称。想来也是,在没有下意识计数的情况下,当有一两个人说你长得帅,你会记得有那么一两个人说你长得帅,而当有第三、第四人说你长得帅时,你的印象里一定是:好多人都说我长得帅^w^

但人类终究是要与较大的数打交道的,除了每天的吃喝拉撒,我们的祖先们渐渐需要面对打到了多少猎物、部落有多少人这样简单的统计问题。他们用上了手指乃至脚趾,但单纯的用“一根”表示1最多只能数到20,于是诞生了五花八门的手指计数方式。比如用右手表示个位、左手表示十位,这样最多就能表示到99。

右手表示个位数,左手表示十位数(图片来自《计算机技术发展史(一)》P17)

左右手并用可以表示到99(图片来自《计算机技术发展史(一)》P17)

进阶一点,可以用上手指的关节。摊开你的手,可以看到,拇指有2个关节,其他手指均有3个关节。具体如何表示,就可以发挥你的想象力了。比如用拇指和食指的关节(共5个)表示十位,用其他三个手指的关节(共9个)表示个位,单只手就可以表示到59,这种表示方法正是针对古巴比伦使用六十进制的一种假设。

再进阶一点,手指的弯曲、指关节的方向、甚至手势都可以用来表示更大的数,例如古代威尼斯的一种手指计数法,大家感受一下。(仔细一看,我第一个手势就做不出来……)

古威尼斯的一种手指计数法(图片来自《计算机技术发展史(一)》P20)

不得不感叹人类的智慧,在那个无法借助外部工具的时代,人们光靠手指就能计数到成百上千,甚至达到百万。现在我们也用手指,却基本只会从1数到10,折回来再从11数到20,以及一些表示6、8等特殊数字的简单手势。

然而仅仅能用手指表示数字并不稀奇,现在聋哑人使用的手语除了数还能表示无比丰富的含义,欲将手指称为计算工具,起码还要实现计算功能。手指确实可以进行一些简单的计算,而且不但能做加减还能做乘除,但通常只能计算特定范围内的数,往往还需要心算的配合。现在一些数学老师热衷于开发面向小朋友的手指速算法,确实比纯心算要快、要可靠,但仍然需要与口诀和简单的心算配合。而正是手指的这种局限性,促使着人类去寻求更先进的计算工具,一步步朝牛逼的电子计算机迈进。

石子什么的

用手指计数和计算的一个明显缺陷就是无法进行存储,只能显示一个当前数,而且为了记录一个数你的手指也不能一直那样摆着不是。人们最早借助的外物是一些极常见的石子、贝壳、小木棍等,比如可以在地上摆放对应数目的石子来表示圈养了多少猎物,宰杀了两头就从中取出两块石子,新狩猎到三头就往进添加三块石子,人就不需要时刻记着还剩多少头猎物。

聪明而富有信仰的古人们还会发明了一些有趣的摆法,一则美观,而则易于读数,比如美国南部印第安人将石子、木棍和箭结合使用,将21摆成万字符。

美国南部的印第安人将21摆成万字符(图片来自《从算盘到电脑》P27)

在这里,中华民族伟大的先人们就开始犀利了。古老而神秘的河图、洛书便是由石子计数演变而来,使用黑白两类石子,不但可以表示数字,还推演出高深的阴阳八卦,早已上升到哲学高度。

结绳

相信大家对“结绳记事”并不陌生,在绳上打结可以代表数字,这个方法在国内外皆有考证。传说波斯王派军远征时,命他的卫队留下来保卫耶兹德河上的桥60天,但士兵可能没那么聪明,如何计算天数呢?又不能像现在这样每天早上掏出手机看是几月几号。于是波斯王在皮条上打了60个结,嘱咐士兵每天解开一个,解完结就可以回家了。

与手指一样,结绳法并非只能用一个结表示1,结的打法、结与结之间的距离均可表示不同的数字,比如两个相邻的结表示20、双重结表示200。给绳子染上颜色,更能表示诸多其他含义,比如黄色表示玉米、红色表示武器。在秘鲁等国家甚至使用结绳法记录历史传说,这就是为什么我们常说“结绳记事”而不是“结绳记数”的原因吧。而正是由于结绳有着这样那样的丰富内涵,古时许多民族认为它神圣不可侵犯,需要有专人进行管理,没有权利的人随意打上或解开绳结会受到严厉的处罚。

错综复杂的绳结内涵丰富

结绳法除了记数和记事外,还能用于通讯、用作契约凭证,用途如此广泛,正是由于在文字诞生之前,比起表示数字,结绳更是一种表示文字的有效途径。然而结绳用于记事虽然稳定长久,但在计算方面似乎就无能就为力了,你总不能为了算个加减法在两三根绳上不停地打结、解结吧,累不死你。以最有名的秘鲁结绳法为例,在现存的一副16世纪左右的图画中可以看到,左下角有一个计算盘,在上面用玉米仁进行计算,而后将计算结果转换为绳结,可见结绳本身并没有计算功能,仅仅被用来记录数据。

秘鲁结绳法(图片来自《数学趣闻集锦(上)》P14)

筹码/算筹

呃,首先要说明一下,这里的筹码是指古人的一种计算工具,不是现在赌场里那玩意儿!

筹码(或称算筹、筹等)在国内外的应用也十分广泛,直到上世纪前四分之一时期仍有许多民族使用。不同文化中的筹码形状各异,有方形、长条形、圆形等等,制作材料也很丰富,如竹、木、骨、铁、玉、象牙等,凡能削出特定形状的硬物皆可为之。人们通过用刀在筹码上刻痕来实现记数,刀痕的数目、组合、深浅、部位,以及筹码本身的颜色、摆放的相对位置等均有不同含义。

两种不同类型的筹码(图片来自《计算机发展史》P27、28)

由于筹码制作简单、使用方便、易于保存,其用途非常之广泛,可以用作收据,甚至钱票。其中有一种债务筹码挺有创意,在筹码上刻上欠债金额,而后劈成两半,债务人和债权人各执一半,到算账时两半拼合,刀痕必须重合,铁证如山,篡改不得,都不需要像现在这样双方签字、摁手指什么的,真是既方便又实用。

相比前三类工具,筹码在计算能力上突飞猛进,方可谓一件比较完善的计算工具。爱沙尼亚有一种计算筹码与后来出现的计算尺略像,做成了可以相对移动的插销形式,可以进行快速计算,估计算是计算尺的鼻祖了。

说到这里,当然少不了我国古代简直独孤求败的筹算,最迟在春秋战国时期就已出现,古文中“运筹帷幄”“觥筹交错”等言皆出于此。所谓筹算,就是以算筹为工具,进行加减乘除四则运算,以及乘方、开方和其他代数运算的运算方法。纳尼!乘方?开方?!是的,你没有看错,而且远不止这些,筹算甚至能解方程(组)、求最大公约数和最小公倍数、计算圆周率、解同余式组、造高阶查分表等等,甚至还使用到负数等较为抽象的数字,比西方早出一百年甚至好几百年。公元480年左右,南北朝时期的数学家祖冲之使用筹算将圆周率精确到小数点后7位,这一精度保持了近千年,直到15世纪初才被打破。

筹算能达到如此高的水准,全靠一代代劳动人民和数学家的探索总结。他们以小木棒的组合摆放表示数字,依靠熟记于心的口诀进行运算,九九乘法表就是其一,现在人依然靠它进行乘除法心算。算筹,包括之后的算盘作为工具本身并不复杂,并没有太强大的功能,真正强大的是使用它们的算法。而为了在简单的工具上完成复杂的算法,必然需要进行许多机械式的重复步骤,久而久之熟能生巧。筹算熟练者,计算速度应该是比较可观的,沈括《梦溪笔谈》中有“运筹如飞,人眼不能逐”的描述,不知是否有夸张成分,但参考现在娴熟的算盘手,基本也能想象其景。

算筹以纵式与横式两种形式表示1~9(0则以留空表示),个位数用纵式,十位数用横式,百位数又用纵式,以此类推,间隔使用,正如《孙子算经》中的口诀所言:“一纵十横,百立千僵,千十相望,万百相当。”估计与现在许多地方使用间隔色一样是为了方便人眼区分吧。《夏侯阳算经》在其后又加了四句:“满位以上,五在上方,六不积算,五不单张。”指当数超过5,用一根放在上方的算筹表示5,像极了后来出现的算盘。不过算盘本来就是由算筹发展而来的,不像才怪咧。

算筹表示数字的形式

古人在进行筹算时,先将棍状的算筹从随身携带的算袋中取出,放到桌上、炕上或地上进行排布,跟现在在纸上打草稿有的一拼,算法也有相似之处。以《孙子算经》所记乘法为例,与现在的演算过程简直如出一辙。

筹算乘法示例(图片来自《我国古代算筹的应用》)

算筹如此强大,但也并不就意味着已经登峰造极了,随着数学家们推出越来越多牛逼的算法——什么重因法、身外加减法、求一法,听都没听说过——靠作为一堆小棍棍的算筹应付起来已经有点有心无力了。何况筹算时所用算筹数量庞大,表示单个数就可能用到5根,数多则致繁乱,三国时期魏国人管辂的《管氏地理指蒙》一书中甚至以筹喻乱:“形如投算,忧愁紊乱。”而且起初的算筹长约14厘米,摆个6(“丄”)就要占200平方厘米,可以想象,做稍微复杂一点的运算时得放多大一块面积。古人也意识到这个问题,逐步改短算筹,到宋元间缩至1~3寸,但面对大计算量的问题依然不好使。宋代马永卿《懒真子》一书就有言:“卜者出算子约百余,布地上,几长丈余。”这要算个东西简直要铺满客厅,还得满地爬,不仅是个脑力活,更是体力活,搞不好还容易闪着腰啊……

算盘

在手动计算时代,算盘称得上是件当之无愧的计算神器了,它的功能与算筹同样强大,因框架和算珠制成一体,携带和使用则比算筹方便得多,发展至元中后叶基本取代了算筹。

起初的算盘并不是今天这副模样的,它有一个逐步发展的过程,不同地区的算盘不尽相同,虽然大抵都是一个规格化的底盘,上有可移动或摆置的算筹,具体实现却花样层出,都是铺天盖地的智慧啊!这里就以我国的算盘为例,大家都比较熟悉。

阶段一:底盘为一个10行若干列的表格,形如棋盘,行号代表0~9,有多少列就可以表示多少位的数,通过在小方格中摆放筹码来表示数,国内外曾用过石子、贝壳、木块、金属块、果核等,这里统称为算珠。数的表示方法很简单,以笔者撰写该部分内容的日期150622(2015年6月22日)为例。

阶段二:使用两种颜色的算珠,算盘面积减小了一半。0~4用黄算珠,5~9用黑算珠表示,更像下棋了。

阶段三:以横梁为界,将算盘分为上下两部分,上面的一个算珠表示5,下面的一个算珠表示1,以算珠的位置和数目结合表示数字,不再区分颜色,形成了最终的算盘规格。

这种形式的算盘存在到八世纪(唐朝中期),到十世纪(唐朝后)即采用了目前木框木柱穿木珠的形式(当然任性一点金制、玉制的什么都有),此外当然还有一些非主流的算盘形式出现,从十七世纪(明末期)开始算盘就没再有何本质上的变化。

闪亮闪亮最闪亮的金算盘和玉算盘

想必大家都多少接触过算盘,此处就不赘述其使用方法了。就算没有接触过,你一定听说过“三下五除二”吧,这本是句珠算口诀:在某一位上加3时,如果下方珠子将超过4个,就需要拨下一个上方表示5的珠子并去除下方两个表示1的珠子,以“+5-2”代替“+3”。欲知更多知识,请自百度之。

算盘之所以能称为神器,是因为用它能解算古代所有的数学问题,古代中国学者甚至认为,只有当一个问题能用算盘求解时,这个问题才算是可解的。在我国研制第一颗原子弹时,计算机不够用,科学家们就打算盘,打出那原子弹爆炸时中心压力的正确数据!

要知道算盘用得熟练,计算速度可是相当给力的。在1946年日本东京的一场表演中,一位算盘手PK使用电动计算机(下一篇会提到的机械式计算器的一种)的美国军官时全盘胜出。就算你使用现在的电子计算器,在基本运算方面也敌不过熟练的算盘手,因为你按键的速度赶不上他们拨珠的速度。加上算盘出错的范围较小,因此在电子计算器称霸日常计算领域的今天,依然有不少人喜欢使用算盘。2013年12月4日,珠算成功申遗,被誉为中国的第五大发明。

但算盘的计算速度毕竟已经比不上计算器了,现在更多的是用于培养孩子的心算能力,调查发现,学习珠算的孩子心算能力比不学珠算的孩子强得多。后又出现了一项神技——珠心算,通过在脑海中浮现算盘影像的方式实现快速心算。今年3月13日的《最强大脑》节目中日本9岁神童辻洼凛音震撼全场,6172938×1203490分分钟,不对,秒秒钟写出答案,计算时手指快速搓动,靠的就是珠心算。

答案有多长你造吗?7429069153620!(万亿级)

纳皮尔棒/纳皮尔筹

苏格兰伟大的数学家约翰·纳皮尔(John Napier)一生最大的成就估计就是对数了,在那个计算工具简陋的那个年代,对数的出现大大简化了乘除法的计算,因为使用对数,乘除就可以简化为加减。事实上,纳皮尔棒仅仅是当时纳皮尔为计算对数表而发明的辅助工具。

1617年,纳皮尔在《Rabdologiæ》(这单词是纳皮尔自己造的,个人认为可以翻译为“筹算法”)一书中介绍了三种计算工具,纳皮尔棒是其中最著名的一种。在之后的一两百年中相继出现了诸多纳皮尔棒的改良版本,它们使用起来都更方便更快捷,然并卵,人们不会记住第二个登上月球的人,这里只介绍纳皮尔的设计。

纳皮尔棒是一根根零散、独立的小棒,棒上密密麻麻印着什么呢?其实就是乘法表,每个小格都通过一根斜线划分成两部分,左上部分填十位数,右下部分填个位数,这样设计是由于采用了来自印度的gelosia乘法(或形象地称之为百叶窗乘法)。

使用时将所需的小棒并排放在一起进行计算,以笔者撰写该部分内容的时间(6月24日晚9点)为例,计算624×9,先将代表6、2、4的小棒并排放置。读出它们与9对应的那一行数,以斜线为界,对每一位进行相加,超过9时通过心算进行进位,很快得到最终结果5616。

多位数与多位数的相乘则是先将被乘数与乘数的每一位相乘,最后错位相加,如此纳皮尔棒便巧妙地把乘法化简为加法。而对过程稍一分析就不难发现,其原理其实十分简单,与我们现今用的笔算方法一致,皮纳尔棒主要是省去了背诵乘法表的功夫,连进位都仍需心算,但在进行大数的乘除时可以节省时间。另外,皮纳尔棒还可以用于开平方和开立方,与前面的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为例,先将圆规两脚分别指向0和8的位置,而后保持圆规张角不变,平移使其左脚指向16的位置,此时右脚所指便是计算结果。

实际尺上1~2、2~4等之间都是有连续刻度的,这里偷懒只画出了关键刻度。

1622年左右,同样来自英国的数学家威廉·奥特雷德(William Oughtred)将两把甘特对数尺并排放置,通过相对滑动就实现了尺上示数的相加,不再需要圆规佐助,只要拉动一下就可以轻松得到乘除结果,如此一件方便实用的神器却过了整整两个世纪才流行起来。

奥特雷德计算尺的原理十分简单

与纳皮尔棒一样,计算尺在风靡时期也产生了众多升级版,除了可以进行乘除、开方等基本运算外,比例、倒数、正弦、余弦、正切等也不在话下。(神奇的是,计算尺不能做加减法,嗯,或者说加减法对计算尺来说太low了。)1850年,一个年仅19岁的法国炮兵中尉在计算尺上加上了游标,这一设计被一直沿用了下来。

直到上世纪六七十年代计算尺才被电子计算器所渐渐取代,许多那个年代过来的前辈们一定都亲身使用过,现在也仍能买到,只是不再流行。感兴趣的朋友也先别急着打开某宝,老外做了个虚拟计算尺的网站,提供了7种不同的计算尺任君玩耍。这里以笔者撰写该部分的时间(6月25日晚9点)为例,计算6.25×9,将中间滑尺的起始位置与上侧刻度6.25处对齐,将游标与滑尺刻度9处对其,此时游标所指上侧尺的刻度即为计算结果,因为精度有限,需要估读:56.1——与正确答案56.25存在误差,这也正是计算尺的一个缺点。

或者你是个DIYer,只需一张A4纸、一卷胶带、一支笔就可以自己动作制作一把,成就感满满~

打印该设计图分分钟DIY一把计算尺(图片来自《When Slide Rules Ruled》)

参考文献

[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.

01改变世界:机械之美——机械时期的计算设备

机械时期(17世纪初~19世纪末)

手动时期的计算工具通常没有多少复杂的制作原理,许多经典的计算工具之所以强大,譬如算盘,是由于依托了强大的使用方法,工具本身并不复杂,甚至用现在的话来讲,是遵从着极简主义的。正因如此,在手动时期,人们除了动手,还需要动脑,甚至动口(念口诀),必要时还得动笔(记录中间结果),人工计算成本很高。到了17世纪,人们终于开始尝试使用机械装置完成一些简单的数学运算(加减乘除)——可不要小看了只能做四则运算的机器,计算量大时,如果数值达到上万、上百万,手工计算十分吃力,而且容易出错,这些机器可以大大减轻人工负担、降低出错概率。

机械装置的历史其实相当久远,在我国,黄帝和蚩尤打仗时就发明了指南车,东汉张衡的地动仪、浑天仪、记里鼓车(能自动计算行车里程),北宋时期苏颂、韩公廉发明的水运仪象台(天文钟),数不胜数,其中好多发明事实上已经实现了某些特定的计算功能。然而所谓工具都是应需求而生的,我国古代机械水平再高,对计算(尤其是大批量计算)没有需求也难为无米之炊,真正的通用机械计算设备还得在西方进入资本主义后逐渐出现。

那个时候,西方资产阶级为了夺取资源、占据市场,不断扩大海外贸易,航海事业蓬勃兴起,航海就需要天文历表。在那个没有电子计算机的时代,一些常用的数据通常要通过查表获得,比如cos27°,不像现在这样掏出手机打开计算器APP就能直接得到答案,从事特定行业、需要这些常用数值的人们就会购买相应的数学用表(从简单的加法表到对数表和三角函数表等等),以供查询。而这些表中的数值,是由数学家们借助简单的计算工具(如纳皮尔棒)一个个算出来的,算完还要核对。现在想想真是蛋疼,脑力活硬生生沦为苦力活。而但凡是人为计算,总难免会有出错,而且还不少见,常常酿成航海事故。机械计算设备就在这样的迫切的需求背景下应运而生的。

契克卡德计算钟(Rechenuhr)

研制时间:1623年~1624年

威廉·契克卡德(Wilhelm Schickard 1592-1635),德国数学、天文学教授。

契克卡德是现今公认的机械式计算第一人,你也许没听说过他,但肯定知道开普勒吧,对,就是那个天文学家开普勒。契克卡德和开普勒出生在同一城市,两人既是生活上的好基友,又是工作上的好伙伴。正是开普勒在天文学上对数学计算的巨大需求促使着契克卡德去研发一台可以进行四则运算的机械计算器。

让我们来近距离观察一下

Rechenuhr支持六位整数计算,主要分为加法器、乘法器和中间结果记录装置三部分。其中位于机器底座的中间结果记录装置是一组简单的置数旋钮,纯粹用于记录中间结果,仅仅是为了省去计算过程中笔和纸的参与,没什么可说的,我们详细了解一下加法器和乘法器的实现原理和使用方法。

乘法器部分其实就是对纳皮尔棒(详见上一篇《手动时期的计算工具》)的改进,简单地将乘法表印在圆筒的十个面上,机器顶部的旋钮分有10个刻度,可以将圆筒上代表0~9的任意一面转向使用者,依次旋转6个旋钮即可完成对被乘数的置数。横向有2~9八根挡板,可以左右平移,露出需要显示的乘积。以一张纪念邮票上的图案为例,被乘数为100722,乘以4,就移开标数4的那根挡板,露出100722各位数与4相乘的积:04、00、00、28、08、08,心算将其错位相加得到最终结果402888。

为纪念Rechenuhr 350周年,1971年西德发行的邮票

加法器部分通过齿轮实现累加功能,6个旋钮同样分有10个刻度,旋转旋钮就可以置六位整数。需要往上加数时,从最右边的旋钮(表示个位)开始顺时针旋转对应格数。以笔者撰写该部分内容的时间(7月21日晚9:01)为例,计算721+901,先将6个旋钮读数置为000721:

随后最右边的(从左数第六个)旋钮顺时针旋转1格,示数变为000722:

第五个旋钮不动,第四个旋钮旋转9格,此时该旋钮超过一圈,指向数字6,而代表百位的第三个旋钮自动旋转一格,指向数字1,最终结果即001622:

这一过程最关键的就是通过齿轮传动实现的自动进位。Rechenuhr使用单齿进位机构,通过在齿轮轴上增加一个小齿实现齿轮之间的传动。加法器内部的6个齿轮各有10个齿,分别表示0~9,当齿轮从指向数字9的角度转动到0时,轴上突出的小齿将与旁边代表更高位数的齿轮啮合,带动其旋转一格(36°)。

单齿进位机构(S7技术支持)

相信聪明的读者已经可以想到减法怎么做了,没错,就是逆时针旋转加法器的旋钮,单齿进位机构同样可以完成减法中的借位操作。而用这台机器进行除法就有点“死脑筋”了,你需要在被除数上一遍又一遍不断地减去除数,自己记录减了多少次、剩余多少,分别就是商和余数。

由于乘法器单独只能做多位数与一位数的乘法,加法器通常还需要配合乘法器完成多位数相乘。被乘数先与乘数的个位相乘,乘积置入加法器;再与乘数十位数相乘,乘积后补1个0加入加法器;再与百位数相乘,乘积后补2个0加入加法器;以此类推,最终在加法器上得到结果。

总的来说,Rechenuhr结构比较简单,但也照样称得上是计算机史上的一次伟大突破。而之所以被称为“计算钟”,是因为当计算结果溢出时,机器还会发出响铃警告,在当时算得上十分智能了。可惜的是,契克卡德制造的机器在一场火灾中烧毁,一度鲜为人知,后人从他在1623年和1624年写给开普勒的信中才有所了解,并复制了模型机。

帕斯卡加法器(Pascaline)

研制时间:1642年~1652年

布莱斯·帕斯卡(Blaise Pascal 1623-1662),法国数学家、物理学家、发明家、作家、哲学家。

1639年,帕斯卡的父亲开始从事税收方面的工作,需要进行繁重的数字相加,明明现在Excel里一个公式就能搞定的事在当时却是件大耗精力的苦力活。为了减轻父亲的负担,1642年起,年方19的帕斯卡就开始着手制作机械式计算器。刚开始的制作过程并不顺利,请来的工人只做过家用的一些粗糙机械,做不来精密的计算器,帕斯卡只好自己上手,亲自学习机械制作。

现在想想那个生产力落后的时代,这些天才真心牛逼,他们不仅可以是数学家、物理学家、天文学家、哲学家,甚至还可能是一顶一的机械师。

作为一台加法器,Pascaline只实现了加减法运算,按理说原理应该非常简单,用契克卡德的那种单齿进位机构就可以实现。而帕斯卡起初的设计确实与单齿进位机构的原理相似(尽管他不知道有Rechenuhr的存在)——长齿进位机构——齿轮的10个齿中有一个齿稍长,正好可以与旁边代表更高数位的齿轮啮合,实现进位,使用起来与契克卡德机的加法器一样,正转累加,反转累减。

长齿进位机构(S7技术支持)

但这一类进位机构有着一个很大的缺陷——齿轮传动的动力来自人手。同时进行一两个进位还好,若遇上连续进位的情况,你可以想象,如果999999+1,从最低位一直进到最高位,进位齿全部与高位齿轮啮合,齿轮旋转起来相当吃力。你说你力气大,照样能转得动旋钮没问题,可齿轮本身却不一定能承受住这么大的力,搞不好容易断裂。

为了解决这一缺陷,帕斯卡想到借助重力实现进位,设计了一种叫做sautoir的装置,sautoir这词来自法语sauter(意为“跳”)。这种装置在执行进位时,先由低位齿轮将sautoir抬起,而后掉落,sautoir上的爪子推动高位齿轮转动36°,整个过程sautoir就像荡秋千一样从一个齿轮“跳”到另一个齿轮。

sautoir进位机构(S7技术支持)

这种只有天才才能设计出来的装置被以后一百多年的许多机械师所称赞,而帕斯卡本人对自己的发明就相当满意,他号称使用sautoir进位机构,哪怕机器有一千位、一万位,都可以正常工作。连续进位时用到了多米诺骨效应,理论上确实可行,但正是由于sautoir装置的存在,齿轮不能反转,每次使用前必须将每一位(注意是每一位)的齿轮转到9,而后末位加1用连续进位完成置零——一千位的机器做出来恐怕也没人敢用吧!

既然sautoir装置导致齿轮无法反转,那么减法该怎么办呢?帕斯卡开创性地引入了沿用至今的补码思想。十进制下使用补九码,对于一位数,1的补九码就是8,2的补九码是7,以此类推,原数和补码之和为9即可。在n位数中,a的补九码就是n个9减去a,以笔者撰写该部分内容的日期(2015年7月22日)为例,20150722的8位补九码是99999999 - 20150722 = 79849277。观察以下两个公式:

a的补九码:CV(a) = 9...9 - a

a-b的补九码:CV(a-b) = 9...9 - (a-b) = 9...9 - a + b = CV(a) + b

a-b的补码就是a的补码与b的和,如此,减法便可以转化为加法。

Pascaline在显示数字的同时也显示着其所对应的补九码,每个轮子身上一周分别印着9~0和0~9两行数字,下面一行该位上的表示原数,上面一行表示补码。当轮子转到位置7时,补码2自然显示在上面。

Pascaline的示数轮印有分别表示原数和补码的两行数字(图片来自《How the Pascaline Works》)

盖上盖子就是这样的(图片来自《How the Pascaline Works》)

帕斯卡加了一块可以上下移动的挡板,在进行加法运算时,挡住表示补码的上面一排数,进行减法时就挡住下面一排原数。

(原图来自《How the Pascaline Works》,S7技术支持)

加法运算的操作方法与Rechenuhr类似,唯一不同的是,Pascaline需要用小尖笔去转动旋钮。这里主要说一说减法怎么做,以笔者撰写该部分内容的时间(2015年7月23日20:53)为例,计算150723 - 2053。

置零后将挡板移到下面,露出上面表示补码的那排数字:

输入被减数150723的补码849276,上排窗口显示的就是被减数150723:

加上被减数2053,实际加到了在下排的补码849276上,此时上排窗口最终显示的就是减法结果148670:

整个过程用户看不到下面一排数字,其实玄机就在里头,原理挺简单,09一轮回,却很有意思。

莱布尼茨计算器(Stepped Reckoner)

研制时间:1672年~1694年

戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz 1646-1716),德国数学家、哲学家,历史上少见的通才,被誉为17世纪的亚里士多德。

由于Pascaline只能加减,不能乘除,对此莱布尼茨提出过一系列改进的建议,终究却发现并没有什么卵用。就好比自己写一篇文章很简单,要修改别人的文章就麻烦了。那么既然改进不成,就重新设计一台吧!

为了实现乘法,莱布尼茨以其非凡的创新思维想出了一种具有划时代意义的装置——梯形轴(stepped drum),后人称之为莱布尼茨梯形轴。莱布尼茨梯形轴是一个圆筒,圆筒表面有九个长度递增的齿,第一个齿长度为1,第二个齿长度为2,以此类推,第九个齿长度为9。这样,当梯形轴旋转一周时,与梯形轴啮合的小齿轮旋转的角度就可以因其所处位置(分别有0~9十个位置)不同而不同。代表数字的小齿轮穿在一个长轴上,长轴一端有一个示数轮,显示该数位上的累加结果。置零后,滑动小齿轮使之与梯形轴上一定数目的齿相啮合:比如将小齿轮移到位置1,则只能与梯形轴上长度为9的齿啮合,当梯形轴旋转一圈,小齿轮转动1格,示数轮显示1;再将小齿轮移动到位置3,则与梯形轴上长度为7、8、9的三个齿啮合,小齿轮就能转动3格,示数轮显示4;以此类推。

莱布尼茨梯形轴(S7技术支持)

除了梯形轴,莱布尼茨还提出了把计算器分为可动部分和不动部分的思想,这一设计也同样被后来的机械计算器所沿用。Stepped Reckoner由不动的计数部分和可动的输入部分组成,机器版本众多,以德意志博物馆馆藏的复制品为例:计数部分有16个示数轮,支持16位结果的显示;输入部分有8个旋钮,支持8位数的输入,里头一一对应地安装着8个梯形轴,这些梯形轴是联动的,随着机器正前方的手柄一同旋转。机器左侧的手柄借助蜗轮结构实现可动部分的左右平移,手柄每转一圈,输入部分移动一个数位的距离。

保存在德意志博物馆的Stepped Reckoner复制品

进行加法运算时,先在输入部分通过旋钮置入被加数,计算手柄旋转一周,被加数即显示到上方的计数部分,再将加数置入,计算手柄旋转一周,就得到计算结果。减法操作类似,计算手柄反转即可。

进行乘法运算时,在输入部分置入被乘数,计算手柄旋转一周,被乘数就会显示到计数部分,计算手柄旋转两周,就会显示被乘数与2的乘积,因此在乘数是一位数的情况下,乘数是多少,计算手柄旋转多少圈即可。那么如果乘数是多位数呢?这就轮到移位手柄登场了,以笔者撰写该部分内容的日期(7月28日)为例,假设乘数为728:计算手柄先旋转8周,得到被乘数与8的乘积;而后移位手柄旋转一周,可动部分左移一个数位,输入部分的个位数与计数部分的十位数对齐,计算手柄旋转2周,相当于往计数部分加上了被乘数与20的乘积;依法炮制,可动部分再左移,计算手柄旋转7周,即可得到最终结果。

可动部分右侧有个大圆盘,外圈标有0~9,里圈有10个小孔与数字一一对应,在对应的小孔中插入销钉,可以控制计算手柄的转动圈数,以防操作人员转过头。在进行除法时,这个大圆盘又能显示计算手柄所转圈数。

进行除法运算时,一切操作都与乘法相反。先将输入部分的最高位与计数部分的最高位(或次高位)对齐,逆时针旋转计算手柄,旋转若干圈后会卡住,可在右侧大圆盘上读出圈数,即为商的最高位;逆时针旋转位移手柄,可动部分右移一位,同样操作得到商的次高位数;以此类推,最终得到整个商,计数部分剩下的数即为余数。

最后提一下进位机构,Stepped Reckoner的进位机构比较复杂,但基本就是单齿进位的原理。然而莱布尼茨没有实现连续进位,当产生连续进位时,机器顶部对应的五角星盘会旋转至角朝上的位置(无进位情况下是边朝上),需要操作人员手动将其拨动,完成向下一位的进位。

托马斯四则计算器(Arithmometer)

研制时间:1818年~1820年

(没找着像样的照片……)查尔斯·泽维尔·托马斯(Charles Xavier Thomas 1785-1870),法国发明家、企业家。

以往的机械式计算器通常只是发明者自己制作了一台或几台原型,帕斯卡倒是有赚钱的念头,生产了20台Pascaline,但是根本卖不出去,这些机器往往并不实惠,也不好用。托马斯是将机械式计算器商业化并取得成功的第一人,他不仅是个牛逼的企业家(创办了当时法国最大的保险公司),更是Arithmometer本身的发明者。从商之前,托马斯在法国军队从事过几年部队补给方面的工作,需要进行大量的运算,正是在这期间萌生了制作计算器的念头。他从1818年开始设计,于1820年制成第一台,次年生产了15台,往后持续生产了约100年。

Arithmometer生产情况(其中40%在法国内销,60%出口到其他国家)

Arithmometer基本采用莱布尼茨的设计,同样使用梯形轴,同样分为可动和不动两部分。

Arithmometer界面(原图来自《How the Arithmometer Works》)

所不同的是,Arithmometer的手柄在加减乘除情况下都是顺时针旋转,示数轮的旋转方向通过与不同方向的齿轮啮合而改变。

(原图来自《How the Arithmometer Works》)

此外,托马斯还做了许多细节上的改进(包括实现了连续进位),量产出来的Arithmometer实用、可靠,因而能获得巨大成功。

鲍德温-奥德纳机(Pinwheel calculator)

研制时间:1874年

弗兰克·史蒂芬·鲍德温(Frank Stephen Baldwin 1838-1925),美国发明家。W.T.奥德纳(Willgodt Theophil Odhner 1845-1905),瑞典人,俄国发明家、工程师、企业家。

莱布尼茨梯形轴虽然好用,但由于其长筒状的形态,机器的体积通常很大,某些型号的Arithmometer摆到桌子上甚至要占掉整个桌面,而且需要两个人才能安全搬动,亟需一种更轻薄的装置代替梯形轴。

这一装置就是后来的可变齿数齿轮(variable-toothed gear),在17世纪末到18世纪初,有很多人尝试研制,限于当时的技术条件,没能成功。直到19世纪70年代,真正能用的可变齿数齿轮才由鲍德温和奥德纳分别独立制成。该装置圆形底盘的边缘有着9个长条形的凹槽,每个凹槽中卡着可伸缩的销钉,销钉挂接在一个圆环上,转动圆环上的把手即可控制销钉的伸缩,这样就可以得到一个具有0~9之间任意齿数的齿轮。

可变齿数齿轮(S7技术支持)

可变齿数齿轮传动示意(以7为例)(S7技术支持)

齿轮转一圈,旁边的被动轮就转动相应的格数,相当于把梯形轴压成了一个扁平的形状。梯形轴必须并排放置,而可变齿数齿轮却可以穿在一起,大大缩减了机器的体积和重量。此类计算机器在1885年投产之后风靡世界,往后几十年内总产量估计有好几万台,电影《横空出世》里陆光达计算原子弹数据时所用的机器就是其中之一。

电影中Pinwheel calculator的特写镜头

左手拨动可变齿数齿轮上的把手进行置数,右手旋转计算右侧手柄进行计算。

菲尔特自动计算器(Comptometer)

研发时间:1884年~1886年

菲尔特(Dorr Eugene Felt 1862-1930),美国发明家、实业家。

欣赏了这么多机器,好像总感觉哪里不对,似乎与我们今天使用计算器的习惯总有那么一道屏障……细细一琢磨,好像全是旋钮没有按键啊摔!

好在那个年代的人们发现旋钮置数确实不太方便,最早提出按键设计的应该是美国的一个牧师托马斯·希尔(Thomas Hill),计算机史上有关他的记载貌似不多,好在还能找到他1857年的专利,其中详细描述了按键式计算器的工作原理。起初菲尔特只是根据希尔的设计简单地将按键装置装到Pascaline上,第一台Comptometer就这么诞生了。

托马斯·希尔(Thomas Hill 1818-1891),美国数学家、科学家、哲学家、教育家、牧师。

Comptometer采用的是“全键盘”设计(也就是希尔提出的设计),每个数位都有0~9十个按键,某个数位要置什么数,就按下该数位所对应的一列按键中的一个。每列按键都装在一根杠杆上,杠杆前端有一个叫做Column Actuator的齿条,按下按键带动杠杆摆动,与Column Actuator啮合的齿轮随之旋转一定角度。0~9十个按键按下时杠杆摆动的幅度递增,示数轮随之转动的幅度也递增,如此就实现了按键操作到齿轮旋转的转化。

Comptometer按键结构(原图来自《How the Comptometer Works》)

不同按键带动示数轮旋转不同格数(图片来自《How the Comptometer Works》)

1889年,菲尔特又发明了世界上第一台能在纸带上打印计算结果的机械式计算器——Comptograph,相当于给计算器引入了存储功能。

1914年的Comptograph(有点像现在超市里出小票的收银机╮(╯╰)╭)

1901年,人们开始给一些按键式计算器装上电动马达,计算时不再需要手动摇杆,冠之名曰“电动计算机”,而此前的则称为“手摇计算机”。

Ellis电动计算机(图片来自《The calculating machines (Die Rechenmaschinen) : their history and development》)(无奈找不到像样的图片,这台机器比较近代了,我猜右下角那一坨就是电动马达。)

1902年,出现了将键盘简化为“十键式”的道尔顿加法器,不再是每一位数需要一列按键,大大精简了用户界面。

1930年左右的道尔顿加法器

1961年,Comptometer被改进为电子计算器,却依然保留着“全键盘”设计。

由Comptometer发展而来的电子计算器ANITA Mk VIII,依然保持着“全键盘”界面。

机械式计算器摄影作品

最后,让我们一起来欣赏一下美国摄影师Kevin Twomey的摄影作品吧!这些图片均由不同焦距的多张照片经景深处理工具Helicon Focus拼合而成,十分精美。

Brunsviga 11s

Brunsviga 11s

Friden 1217

Cellatron R44SM

Cellatron R44SM(这个“全键盘”太屌了,能支持20位数呐!)

Monroe Mach 1.07

Monroe Mach 1.07

Marchant EFA(像不像运动鞋?)

Marchant EFA

Monroe PC1421

Monroe PC1421

Diehl Transmatic

Diehl Transmatic

Millionaire(其界面和托马斯的Arithmometer相似,从这侧身也能略窥一二。)

UGG雪地靴……

Hamann 505

Hamann 300

Hamann 300

很明显是基于可变齿数齿轮的Pinwheel Calculator

附:

1.Kevin Twomey还为收藏这些机器的Mark Glusker拍了个小视屏,有各种机器运行时候的样子,值得一看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容