欢迎您光临优德w888!

优德w888 > 战役战争 > 优德w88801改变世界:没有计算器的日子怎么过——手动时期的计算工具

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

时间:2019-12-19 12:03

Model K

1937年,斯蒂比兹察觉到继电器的开闭状态与二进制之间的联系。他做了个实验,用两节电池、两个继电器、两个指示灯,以及从易拉罐上剪下来的触片组成一个简单的加法电路。

(图片来自

按下右侧触片,相当于0+1=1。(截图来自《AT&T Archives: Invention of the First Electric Computer》,下同。)

按下左侧触片,相当于1+0=1。

同时按下两个触片,相当于1+1=2。

有简友问到具体是怎么实现的,我没有查到相关资料,但经过与同事的探讨,确认了一种可行的电路:

开关S1、S2分别控制着继电器R1、R2的开闭,出于简化,这里没有画出开关对继电器的控制线路。继电器可以视为单刀双掷的开关,R1默认与上触点接触,R2默认与下触点接触。单独S1闭合则R1在电磁作用下与下触点接触,接通回路,A灯亮;单独S2闭合则R2与上触点接触,A灯亮;S1、S2同时闭合,则A灯灭,B灯亮。诚然这是一种粗糙的方案,仅仅在表面上实现了最终效果,没有体现出二进制的加法过程,有理由相信,大师的原设计可能精妙得多。

因为是在厨房(kitchen)里搭建的模型,斯蒂比兹的妻子称之为Model K。Model K为1939年建造的Model I——复数计算机(Complex Number Computer)做好了铺垫。

契克卡德计算钟(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年写给开普勒的信中才有所了解,并复制了模型机。

石子什么的

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

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

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

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

优德w888 2

Model II

二战期间,美国要研制高射炮自动瞄准装置,便又有了研制计算机的需求,继续由斯蒂比兹负责,便是于1943年完成的Model II——Relay Interpolator(继电器插值器)。

Model II开始使用穿孔带进行编程,共设计有31条指令,最值得一提的还是编码——二-五编码。

把继电器分成两组,一组五位,用来表示0~4,另一组两位,用来表示是否要加上一个5——算盘既视感。(截图来自《计算机技术发展史(一)》)

你会发现,二-五编码比上述的任一种编码都要浪费位数,但它有它的强大之处,便是自校验。每一组继电器中,有且仅有一个继电器为1,一旦出现多个1,或者全是0,机器就能立马发现问题,由此大大提高了可靠性。

Model II之后,一直到1950年,贝尔实验室还陆续推出了Model III、Model IV、Model V、Model VI,在计算机发展史上盘踞一席之地。除了战后的VI返璞归真用于复数计算,其余都是军事用途,可见战争确实是技术革新的催化剂。

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

结绳

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

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

优德w888 3错综复杂的绳结内涵丰富

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

优德w888 4秘鲁结绳法(图片来自《数学趣闻集锦

Z1

祖思从1934年开始了Z1的设计与实验,于1938年完成建造,在1943年的一场空袭中炸毁——Z1享年5岁。

我们早已无法见到Z1的原貌,零星的一些照片显得弥足珍贵。(图片来自

从照片上可以发现,Z1是一坨庞大的机械,除了靠电动马达驱动,没有任何与电相关的部件。别看它原始,里头可有好几项甚至沿用至今的开创性理念:

■ 将机器严格划分为处理器和内存两大部分,这正是如今冯·诺依曼体系结构的做法。

■ 不再同前人一样用齿轮计数,而是采用二进制,用穿过钢板的钉子/小杆的来回移动表示0和1。

■ 引入浮点数,相比之下,后文将提到的一些同时期的计算机所用都是定点数。祖思还发明了浮点数的二进制规格化表示,优雅至极,后来被纳入IEEE标准。

■ 靠机械零件实现与、或、非等基础的逻辑门,靠巧妙的数学方法用这些门搭建出加减乘除的功能,最出彩的要数加法中的并行进位——一步完成所有位上的进位。

与制表机一样,Z1也用到了穿孔技术,不过不是穿孔卡,而是穿孔带,用废弃的35毫米电影胶卷制成。和巴贝奇所见略同,祖思也在穿孔带上存储指令,有输入输出、数据存取、四则运算共8种。

简化得不能再简化的Z1架构示意图

每读一条指令,Z1内部都会牵动一大串部件完成一系列复杂的机械运动。具体如何运动,祖思没有留下完整的描述。有幸的是,一位德国的计算机专家——Raul Rojas对有关Z1的图纸和手稿进行了大量的研究和分析,给出了较为完善的阐述,主要见其论文《The Z1: Architecture and Algorithms of Konrad Zuse’s First Computer》,而我一时抽风把它翻译了一遍——《Z1:第一台祖思机的架构与算法》。如果你读过几篇Rojas教授的论文就会发现,他的研究工作可谓壮观,当之无愧是世界上最了解祖思机的人。他成立了一个网站——Konrad Zuse Internet Archive,专门搜集整理祖思机的资料。他带的某个学生还编写了Z1加法器的仿真软件,让我们来直观感受一下Z1的精巧设计:

从转动三维模型可见,光一个基本的加法单元就已经非常复杂。(截图来自《Architecture and Simulation of the Z1 Computer》,下同。)

此例演示二进制10+2的处理过程,板带动杆,杆再带动其他板,杆处于不同的位置决定着板、杆之间是否可以联动。平移限定在前后左右四个方向(祖思称为东南西北),机器中的所有钢板转完一圈就是一个时钟周期。

上面的一堆零件看起来可能仍然比较混乱,我找到了另外一个基本单元的演示动画。(图片来自《talentraspel simulator für mechanische schaltglieder zuse》)

幸运的是,退休之后,祖思在1984~1989年间凭着自己的记忆重绘Z1的设计图纸,并完成了Z1复制品的建造,现藏于德国技术博物馆。尽管它跟原本的Z1并不完全一样——多少会与事实存在出入的记忆、后续设计经验可能带来的思维进步、半个世纪之后材料的发展,都是影响因素——但其大框架基本与原Z1一致,是后人研究Z1的宝贵财富,也让吃瓜的游客们得以一睹纯机械计算机的风采。

在Rojas教授搭建的网站(Konrad Zuse Internet Archive)上,提供着Z1复制品360°的高清展示。

当然,这台复制品和原Z1一样不靠谱,做不到长时间无人值守的自动运行,甚至在揭幕仪式上就挂了,祖思花了几个月才修好。1995年祖思去世后,它就没再运行,成了一具钢铁尸体。

Z1的不可靠,很大程度上归咎于机械材料的局限性。用现今的眼光看,计算机内部是无比复杂的,简单的机械运动一方面速度不快,另一方面无法灵活、可靠地传动。祖思早有采用电磁继电器的想法,无奈那时的继电器不但价格不低,体积还大。到了Z2,祖思灵机一动,最占零件的不过是机器的存储部分,何不继续使用机械式内存,而改用继电器来实现处理器呢?

Z2是紧跟着Z1的第二年诞生的,其设计资料一样难逃被炸毁的命运(不由感慨那个动乱的年代啊)。Z2的资料不多,大体可以认为是Z1到Z3的过渡品,它的一大价值是验证了继电器和机械件在实现处理器方面的等效性,也相当于验证了Z3的可行性,二大价值是为祖思赢得了建造Z3的一些赞助。

托马斯四则计算器(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实用、可靠,因而能获得巨大成功。

筹码/算筹

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

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

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

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

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

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

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

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

优德w888 6算筹表示数字的形式

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

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

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

贝尔Model系列

同一时期,另一家不容忽视的、研制机电计算机的机构,便是上个世纪叱咤风云的贝尔实验室。众所周知,贝尔实验室及其所属公司是做电话起家、以通信为主要业务的,虽然也做基础研究,但为什么会涉足计算机领域呢?其实跟他们的老本行不无关系——最早的电话系统是靠模拟量传输信号的,信号随距离衰减,长距离通话需要用到滤波器和放大器以保证信号的纯度和强度,设计这两样设备时需要处理信号的振幅和相位,工程师们用复数表示它们——两个信号的叠加是两者振幅和相位的分别叠加,复数的运算法则正好与之相符。这就是一切的起因,贝尔实验室面临着大量的复数运算,全是简单的加减乘除,这哪是脑力活,分明是体力劳动啊,他们为此甚至专门雇佣过5~10名妇女(当时的廉价劳力)全职来做这事。

从结果来看,贝尔实验室发明计算机,一方面是源于自身需求,另一方面也从自身技术上得到了启发。电话的拨号系统由继电器电路实现,通过一组继电器的开闭决定谁与谁进行通话。当时实验室研究数学的人对继电器并不熟悉,而继电器工程师又对复数运算不尽了解,将两者联系到一起的,是一名叫乔治·斯蒂比兹的研究员。

乔治·斯蒂比兹(George Stibitz 1904-1995),贝尔实验室研究员。

额外声明

人类文明作为一个整体,其历史上的众多成果不可能是由单个人在一夜之间做到的,在一段时期内,对于某一类计算工具,往往会出现不少相似的版本,它们也许是相互借鉴、改进,也许是相对独立产生的,而有幸载入计算工具发展史的发明家其实有很多,要一一例举他们的发明与思想着实不在一篇概况性文章的能力范围之内,笔者精力也毕竟有限,因此本文只罗列具有代表性的或划时代的计算工具。

纳皮尔棒/纳皮尔筹

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

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

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

优德w888 8

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

优德w888 9

多位数与多位数的相乘则是先将被乘数与乘数的每一位相乘,最后错位相加,如此纳皮尔棒便巧妙地把乘法化简为加法。而对过程稍一分析就不难发现,其原理其实十分简单,与我们现今用的笔算方法一致,皮纳尔棒主要是省去了背诵乘法表的功夫,连进位都仍需心算,但在进行大数的乘除时可以节省时间。另外,皮纳尔棒还可以用于开平方和开立方,与前面的10根小棒不同,另有专用的小棒,具体算法就不再深究了,感兴趣的朋友可移步维基娘。

补充学问:纳皮尔棒,英文Napier's Bones或Napier's Rods,Rod很明显是Rabdology的缩写,而之所以有Napier's Bones之称是因为纳皮尔棒多由动物的骨、牙、角等制成,因为纳皮尔棒也有“纳皮尔骨筹”、“纳皮尔骨算筹”、甚至“皮纳尔的骨头”等叫法。

参考文献

胡守仁. 计算机技术发展史(一)[M]. 长沙: 国防科技大学出版社, 2004.

Wikipedia. Hans Christian Ørsted[EB/OL]. , 2016-12-10.

Wikipedia. Michael Faraday[EB/OL]. , 2016-11-27.

Wikipedia. Relay[EB/OL]. , 2016-12-20.

Wikipedia. Joseph Henry[EB/OL]. , 2016-12-03.

Wikipedia. Edward Davy[EB/OL]. , 2016-11-04.

Wikipedia. Unit record equipment[EB/OL]. , 2016-12-29.

陈厚云, 王行刚. 计算机发展简史[M]. 北京: 科学出版社, 1985.

吴为平, 严万宗. 从算盘到电脑[M]. 长沙: 湖南教育出版社, 1986.

Wikipedia. United States Census[EB/OL]. , 2017-01-15.

Wikipedia. United States Census Bureau[EB/OL]. , 2017-01-20.

Wikipedia. Herman Hollerith[EB/OL]. , 2017-01-08.

Herman Hollerith. Art of Compiling Statistics[P]. 美国专利: 395781, 1889-01-08.

Frank da Cruz. Hollerith 1890 Census Tabulator[EB/OL]. , 2011-03-28.

Wikipedia. Player piano[EB/OL]. , 2017-01-20.

Wikipedia. Konrad Zuse[EB/OL]. , 2017-01-30.

Largest Dams. Computer History[EB/OL]. , 2013-12-23.

Wikipedia. Z1 (computer)[EB/OL]. ), 2017-04-27.

Rojas R. The Z1: Architecture and Algorithms of Konrad Zuse's First Computer[J]. Eprint Arxiv, 2014.

逸之. Z1:第一台祖思机的架构与算法[EB/OL]. , 2017-04-07.

柏林自由大学. Architecture and Simulation of the Z1 Computer[EB/OL]. .

talentraspel. talentraspel simulator für mechanische schaltglieder zuse[EB/OL]. , 2013-11-12.

Wikipedia. Z2 (computer)[EB/OL]. ), 2017-02-23.

Wikipedia. Z3 (computer)[EB/OL]. ), 2017-04-14.

Rojas R. Konrad Zuse's legacy: the architecture of the Z1 and Z3[J]. Annals of the History of Computing IEEE, 1997, 19(2):5-16.

Rojas R. How to make Zuse's Z3 a universal computer[J]. IEEE Annals of the History of Computing, 1998, 20(3):51-54.

DeutschesMuseum. Die Z3 von Konrad Zuse im Deutschen Museum[EB/OL]. , 2013-10-23.

Wikipedia. Z4 (computer)[EB/OL]. ), 2017-05-10.

Wikipedia. George Stibitz[EB/OL]. , 2017-04-24.

Paul E. Ceruzzi. Number, Please-Computers at Bell Labs[EB/OL]. .

AT&T Tech Channel. AT&T Archives: Invention of the First Electric Computer[EB/OL]. , 2011-10-19.

history-computer.com. Relay computers of George Stibitz[EB/OL]. .

Wikipedia. Howard H. Aiken[EB/OL]. , 2017-07-21.

Wikipedia. Harvard Mark I[EB/OL]. , 2017-07-04.

Comrie L J. A Manual of Operation for the Automatic Sequence Controlled Calculator[J]. Nature, 1946, 158:567-568.

CS101. Harvard Mark I[EB/OL]. , 2014-09-13.

CS50. Harvard Mark I[EB/OL]. , 2014-02-21.

Wikipedia. Harvard Mark II[EB/OL]. , 2017-08-03.

Wikipedia. Harvard Mark III[EB/OL]. , 2017-08-03.

Wikipedia. Harvard Mark IV[EB/OL]. , 2017-08-03.

陈明敏, 易清明, 石敏. ARMv4指令集嵌入式微处理器设计[J]. 电子技术应用, 2014, 40(12):23-26.


下一篇:敬请期待


相关阅读

01改变世界:引言

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

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

01改变世界:现代计算机真正的鼻祖——超越时代的伟大思想

01改变世界:让电代替人工去计算——机电时期的权宜之计

参考文献

[1] 陈厚云, 王行刚. 计算机发展简史[M]. 北京: 科学出版社, 1985.

[2] 吴为平, 严万宗. 从算盘到电脑[M]. 长沙: 湖南教育出版社, 1986.

[3] 胡守仁. 计算机技术发展史(一)[M]. 长沙: 国防科技大学出版社, 2004.

[4] Wikipedia. Wilhelm Schickard[EB/OL]. , 2015-07-12.

[5] yi_ting_su. 计算工具——机械计算机(Mechanical Calculators)(二)[EB/OL]. , 2012-05-04.

[6] Wikipedia. Blaise Pascal[EB/OL]. , 2015-07-21.

[7] Wikipedia. Pascal's calculator[EB/OL]. , 2015-07-21.

[8] MechanicalComputing. How the Pascaline Works[EB/OL]. , 2012-03-09.

[9] yi_ting_su. 计算工具——机械计算机(Mechanical Calculators)(二)[EB/OL]. , 2012-05-10.

[10] Wikipedia. Gottfried Wilhelm Leibniz[EB/OL]. , 2015-07-29.

[11] N.A.阿波京, JI.E.梅斯特洛夫. 计算机发展史[M]. 上海: 上海科学技术出版社, 1984.

[12] Wikipedia. Stepped Reckoner[EB/OL]. , 2015-02-04.

[13] Wikipedia. Charles Xavier Thomas[EB/OL]. , 2015-05-02.

[14] Wikipedia. Arithmometer[EB/OL]. , 2015-06-20.

[15] MechanicalComputing. How the Arithmometer Works[EB/OL]. , 2014-04-05.

[16] Wikipedia. Frank Stephen Baldwin[EB/OL]. , 2015-02-04.

[17] Wikipedia. Willgodt Theophil Odhner[EB/OL]. , 2015-05-03.

[18] Wikipedia. Pinwheel calculator[EB/OL]. , 2014-07-21.

[19] Wikipedia. Timeline of computing hardware 2400 BC–1949[EB/OL]. , 2015-05-05.

[20] MechanicalComputing. How Pinwheel Calculators Work[EB/OL]. , 2012-07-02.

[21] Wikipedia. Dorr Felt[EB/OL]. , 2015-04-30.

[22] Wikipedia. Comptometer[EB/OL]. , 2015-06-27.

[23] Wikipedia. Thomas Hill (clergyman)[EB/OL]. ), 2015-06-14.

[24] Thomas Hill. Arithmometer[P]. 美国专利: 18692, 1857-11-24.

[25] MechanicalComputing. How the Comptometer Works[EB/OL]. , 2012-01-30.

[26] Wikipedia. Mechanical calculator[EB/OL]. , 2015-07-11.

[27] Martin E, Kidwell P A, Williams M R. The calculating machines (Die Rechenmaschinen) : their history and development[M]// MIT Press , Tomash Publishers, 1992.

[28] Wikipedia. Sumlock ANITA calculator[EB/OL]. , 2015-03-28.

[29] 机械美学. 【精算之美】It's ALIVE!神奇而复杂的古董机械计算器[EB/OL]. , 2014-12-17.


下一篇:现代计算机真正的鼻祖——超越时代的伟大思想


相关阅读

01改变世界:引言

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

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

01改变世界:现代计算机真正的鼻祖——超越时代的伟大思想

01改变世界:让电代替人工去计算——机电时期的权宜之计

手指

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

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

优德w888 10右手表示个位数,左手表示十位数(图片来自《计算机技术发展史优德w888 11左右手并用可以表示到99(图片来自《计算机技术发展史

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

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

优德w888 12古威尼斯的一种手指计数法(图片来自《计算机技术发展史

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

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

Harvard Mark系列

稍晚些时候,踏足机电计算领域的还有哈佛大学。当时,有一名正在哈佛攻读物理PhD的学生——艾肯,和当年的祖思一样,被手头繁复的计算困扰着,一心想建台计算机,于是从1937年开始,抱着方案四处寻找合作。第一家被拒,第二家被拒,第三家终于伸出了橄榄枝,便是IBM。

霍华德·艾肯(Howard Hathaway Aiken 1900-1973),美国物理学家、计算机科学先驱。

1939年3月31日,IBM和哈佛草签了最后的协议:

1、IBM为哈佛建造一台自动计算机器,用于解决科学计算问题;

2、哈佛免费提供建造所需的基础设施;

3、哈佛指定一些人员与IBM合作,完成机器的设计和测试;

4、全体哈佛人员签订保密协议,保护IBM的技术和发明权利;

5、IBM既不接受补偿,也不提供额外经费,所建计算机为哈佛的财产。

乍一看,砸了40~50万美金,IBM似乎捞不到任何好处,事实上人家大公司才不在意这点小钱,主要是想借此彰显自己的实力,提高公司声誉。然而世事难料,在机器建好之后的庆典上,哈佛新闻办公室与艾肯私自准备的新闻稿中,对IBM的功劳没有给予足够的认可,把IBM的总裁沃森气得与艾肯老死不相往来。

事实上,哈佛这边由艾肯主设计,IBM这边由莱克(Clair D. Lake)、汉密尔顿(Francis E. Hamilton)、德菲(Benjamin Durfee)三名工程师主建造,按理,双方单位的贡献是对半的。

1944年8月,(从左至右)汉密尔顿、莱克、艾肯、德菲站在Mark I前合影。(图片来自

于1944年完成了这台Harvard Mark I, 在娘家叫做IBM自动顺序控制计算机(IBM Automatic Sequence Controlled Calculator),ASCC。

Mark I长约15.5米,高约2.4米,重约5吨,撑满了整个实验室的墙面。(图片来自《A Manual of Operation for the Automatic Sequence Controlled Calculator》,下同。)

同祖思机一样,Mark I也通过穿孔带获得指令。穿孔带每行有24个空位,前8位标识用于存放结果的寄存器地址,中间8位标识操作数的寄存器地址,后8位标识所要进行的操作——结构已经非常类似后来的汇编语言。

Mark I的穿孔带读取器以及织布机一样的穿孔带支架

给穿孔带来个彩色特写(图片来自维基「Harvard Mark I」词条)

这样小心翼翼地架好(截图来自CS101《Harvard Mark I》,下同。)

场面之壮观,犹如挂面制作现场,这就是70年前的APP啊。

至于数据,Mark I内有72个累加寄存器,对外不可见。可见的是另外60个24位的常数寄存器,通过开关旋钮置数,于是就有了这样蔚为壮观的60×24旋钮阵列:

别数了,这是两面30×24的旋钮墙无误。

在如今哈佛大学科学中心陈列的Mark I上,你只能看到一半旋钮墙,那是因为这不是一台完整的Mark I,其余部分保存在IBM及史密森尼博物院。(截图来自CS50《Harvard Mark I》)

同时,Mark I还可以通过穿孔卡片读入数据。最终的计算结果由一台打孔器和两台自动打字机输出。

用于输出结果的自动打字机(截图来自CS101《Harvard Mark I》)

po张哈佛馆藏在科学中心的真品(截图来自CS50《Harvard Mark I》)

下面让我们来大致瞅瞅它里头是怎么运作的。

这是一副简化了的Mark I驱动机构,左下角的马达带动着一行行、一列列纵横啮合的齿轮不停转动,最终靠左上角标注为J的齿轮去带动计数齿轮。(原图来自《A Manual of Operation for the Automatic Sequence Controlled Calculator》,下同。)

当然Mark I不是用齿轮来表示最终结果的,齿轮的旋转是为了接通表示不同数字的线路。

我们来看看这一机构的塑料外壳,其内部是,一个由齿轮带动的电刷可分别与0~9十个位置上的导线接通。

齿轮和电刷是可离合的,若它们不接触,任齿轮不停旋转,电刷是不动的。艾肯将300毫秒的机器周期细分为16个时间段,在一个周期的某一时间段,靠磁力吸附使齿轮和电刷发生关系齿轮通过轴带动电刷旋转。吸附之前的时间是空转,从吸附开始,周期内的剩余时间便用来进行实质的旋转计数和进位工作。

其余复杂的电路逻辑,则理所当然是靠继电器来完成。

艾肯设计的计算机并不局限于一种材料实现,在找到IBM之前,他还向一家制造传统机械式桌面计算器的公司提出过合作恳求,如果这家公司同意合作了,那么Mark I最终极可能是纯机械的。后来,1947年完成的Mark II也证明了这一点,它大体上仅是用继电器实现了Mark I中的机械式存储部分,是Mark I的纯继电器版本。1949年和1952年,又分别诞生了半电子(二极管继电器混合)的Mark III和纯电子的Mark IV。

末了,关于这一系列值得一提的,是日后常拿来与冯·诺依曼结构做对比的哈佛结构,与冯·诺依曼结构统一存储的做法不同,它把指令和数据分开存储,以获得更高的执行效率,相对的,付出了设计复杂的代价。

两种存储结构的直观对比(图片来自《ARMv4指令集嵌入式微处理器设计》)

就这样趟过历史,渐渐地,这些遥远的东西也变得与咱们亲近起来,历史与现在从来没有脱节,脱节的是我们局限的认知。往事并非与现今毫无关系,我们所熟知的伟大创造都是从历史一次又一次的更迭中脱胎而出的,这些前人的智慧串联着,汇聚成流向我们、流向未来的璀璨银河,我掀开它的惊鸿一瞥,陌生而熟悉,心里头热乎乎地涌起一阵难以言表的惊艳与欣喜,这便是研究历史的乐趣。

上一篇:没有计算器的日子怎么过——手动时期的计算工具

算盘

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

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

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

优德w888 13

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

优德w888 14

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

优德w888 15

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

优德w888 16闪亮闪亮最闪亮的金算盘和玉算盘

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

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

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

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

优德w888 17答案有多长你造吗?7429069153620!

制表机(tabulator/tabulating machine/unit record equipment/electric accounting machine)

从1790年开始,美国的人口普查基本每十年进行一次,随着人口繁衍和移民的增多,人口数量那是一个爆炸。

前十次的人口普查结果(图片截自维基「United States Census」词条)

我做了个折线图,可以更直观地感受这洪水猛兽般的增长之势。

不像现在这个的互联网时代,人一出生,各种信息就已经电子化、登记好了,甚至还能数据挖掘,你无法想象,在那个计算设备简陋得基本只能靠手摇进行四则运算的19世纪,千万级的人口统计就已经是当时美国政府所不能承受之重。1880年开始的第十次人口普查,历时8年才最终完成,也就是说,他们休息上两年之后就要开始第十一次普查了,而这一次普查,需要的时间恐怕要超过10年。本来就是十年统计一次,如果每次耗时都在10年以上,还统计个鬼啊!

当时的人口调查办公室(1903年才正式成立美国人口调查局)方了,赶紧征集能减轻手工劳动的发明,就此,霍尔瑞斯带着他的制表机完虐竞争对手,在方案招标中脱颖而出。

赫尔曼·霍尔瑞斯(Herman Hollerith 1860-1929),美国发明家、商人。

霍尔瑞斯的制表机首次将穿孔技术应用到了数据存储上,一张卡片记录一个居民的各项信息,就像身份证一样一一对应。聪明如你一定能联想到,通过在卡片对应位置打洞(或不打洞)记录信息的方式,与现代计算机中用0和1表示数据的做法简直一毛一样。确实这可以看作是将二进制应用到计算机中的思想萌芽,但那时的设计还不够成熟,并未能如今这般巧妙而充分地利用宝贵的存储空间。举个例子,我们现在一般用一位数据就可以表示性别,比如1表示男性,0表示女性,而霍尔瑞斯在卡片上用了两个位置,表示男性就在标M的地方打孔,女性就在标F的地方打孔。其实性别还凑合,表示日期时浪费得就多了,12个月需要12个孔位,而真正的二进制编码只需要4位。当然,这样的局限与制表机中简单的电路实现有关。

1890年用于人口普查的穿孔卡片,右下缺角是为了避免不小心放反。(图片来自《Hollerith 1890 Census Tabulator》)

有专门的打孔员使用穿孔机将居民信息戳到卡片上,操作面板放大了孔距,方便打孔。(原图来自《Hollerith 1890 Census Tabulator》)

细心如你有没有发现操作面板居然是弯的(图片来自《Hollerith 1890 Census Tabulator》)

有没有一点熟悉的赶脚?

没错,简直就是现在的人体工程学键盘啊!(图片来自网络)

这的确是当时的人体工程学设计,目的是让打孔员每天能多打点卡片,为了节省时间他们也是蛮拼的……

在制表机前,穿孔卡片/纸带在各类机器上的作用主要是存储指令,比较有代表性的,一是贾卡的提花机,用穿孔卡片控制经线提沉(详见《现代计算机真正的鼻祖》),二是自动钢琴(player piano/pianola),用穿孔纸带控制琴键压放。

贾卡提花机

之前很火的美剧《西部世界》中,每次循环开始都会给一个自动钢琴的特写,弹奏起看似宁静安闲、实则诡异违和的背景乐。

为了彰显霍尔瑞斯的开创性应用,人们直接把这种存储数据的卡片叫做「Hollerith card」。(截图来自百度翻译)

打好了孔,下一步就是将卡片上的信息统计起来。

读卡装置(原图来自专利US395781)

制表机通过电路通断识别卡上信息。读卡装置底座中内嵌着与卡片孔位一一对应的管状容器,容器里盛有水银,水银与导线相连。底座上方的压板中嵌着同样与孔位一一对应的金属针,针抵着弹簧,可以伸缩,压板的上下面由导电材料制成。这样,当把卡片放在底座上,按下压板时,卡片有孔的地方,针可以通过,与水银接触,电路接通,没孔的地方,针就被挡住。

读卡原理示意图,图中标p的针都穿过了卡片,标a的针被挡住。(图片来自《Hollerith 1890 Census Tabulator》)

如何将电路通断对应到所需要的统计信息?霍尔瑞斯在专利中给出了一个简单的例子。

涉及性别、国籍、人种三项信息的统计电路图,虚线为控制电路,实线为工作电路。(图片来自专利US395781,下同。)

实现这一功能的电路可以有多种,巧妙的接线可以节省继电器数目。这里咱们只分析上头最基础的接法。

图中有7根金属针,从左至右标的分别是:G(类似于总开关)、Female(女)、Male(男)、Foreign(外国籍)、Native(本国籍)、Colored(有色人种)、White(白种人)。好了,你终于能看懂霍尔瑞斯龙飞凤舞的字迹了。

这个电路用于统计以下6项组合信息(分别与图中标M的6组电磁铁对应):

① native white males(本国的白种男)

② native white females(本国的白种女)

③ foreign white males(外国的白种男)

④ foreign white females(外国的白种女)

⑤ colored males(非白种男)

⑥ colored females(非白种女)

以第一项为例,如果表示「Native」、「White」和「Male」的针同时与水银接触,接通的控制电路如下:

描死我了……

这一示例首先展示了针G的作用,它把控着所有控制电路的通断,目的有二:

1、在卡片上留出一个专供G通过的孔,以防止卡片没有放正(照样可以有部分针穿过错误的孔)而统计到错误的信息。

2、令G比其他针短,或者G下的水银比其他容器里少,从而确保其他针都已经接触到水银之后,G才最终将整个电路接通。我们知道,电路通断的瞬间容易产生火花,这样的设计可以将此类元器件的损耗集中在G身上,便于后期维护。

不得不感慨,这些发明家做设计真的特别实用、细致。

上图中,橘黄色箭头标识出3个相应的继电器将闭合,闭合之后接通的工作电路如下:

上标为1的M电磁铁完成计数工作

通电的M将产生磁场, 牵引特定的杠杆,拨动齿轮完成计数。霍尔瑞斯的专利中没有给出这一计数装置的具体结构,可以想象,从十七世纪开始,机械计算机中的齿轮传动技术已经发展到很成熟的水平,霍尔瑞斯无需重新设计,完全可以使用现成的装置——用他在专利中的话说:「any suitable mechanical counter」(任何合适的机械计数器都OK)。

M不单控制着计数装置,还控制着分类箱盖子的开合。

分类箱侧视图,简单明了。

将分类箱上的电磁铁接入工作电路,每次完成计数的同时,对应格子的盖子会在电磁铁的作用下自动打开,统计员瞟都不用瞟一眼,就可以左手右手一个快动作将卡片投到正确的格子里。由此完成卡片的快速分类,以便后续进行其他方面的统计。

跟着我右手一个快动作(图片来自《Hollerith 1890 Census Tabulator》,下同。)

每天工作的最后一步,就是将示数盘上的结果抄下来,置零,第二天继续。

1896年,霍尔瑞斯创立了制表机公司(The Tabulating Machine Company),1911年与另外三家企业合并成立Computing-Tabulating-Recording Company(CTR),1924年更名为International Business Machines Corporation(国际商业机器企业),就是现在大名鼎鼎的IBM。IBM也因此在上个世纪风风火火地做着它拿手的制表机和计算机产品,成为一代霸主。

制表机在当时成为与机械计算机并存的两大主流计算设备,但前者通常专用于大型统计工作,后者则往往只能做四则运算,无一具有通用计算的能力,更大的变革将在二十世纪三四十年代掀起。

菲尔特自动计算器(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,依然保持着“全键盘”界面。

计算尺

借助纳皮尔的对数,人们可以将乘除法化简为加减法,具体操作时需要反复查阅对数表。举个简单的例子,计算8×16,先从对数表上查得8的对数3、16的对数4,8×16便转换为3+4的计算,最后在对数表上找到7所对应的数128——便是最终结果。

为了简化这反复查表的过程,1620年,英国数学家埃德蒙·甘特(Edmund Gunter)将对数表刻在了尺上,使用时需要借助一个圆规。再以8×16为例,先将圆规两脚分别指向1和8的位置,而后保持圆规张角不变,平移使其左脚指向16的位置,此时右脚所指便是计算结果。

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

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

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

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

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

优德w888 20

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

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

[1] N.A.阿波京, JI.E.梅斯特洛夫. 计算机发展史[M]. 上海: 上海科学技术出版社, 1984.

[2] 吴为平, 严万宗. 从算盘到电脑[M]. 长沙: 湖南教育出版社, 1986.

[3] 胡守仁. 计算机技术发展史[M]. 长沙: 国防科技大学出版社, 2004.

[4] 陈含章. 结绳记事的终结[J]. 河南图书馆学刊, 2003, 23:71-76.

[5] T.帕帕斯. 趣味数学集锦[M]. 上海: 上海教育出版社, 1998.

[6] 陈厚云, 王行刚. 计算机发展简史[M]. 北京: 科学出版社, 1985.

[7] 傅海伦. 算筹、算盘与计算机[J]. 自然杂志, 2002, 24:56-58.

[8] 李中恢. 我国古代算筹的应用[J]. 安徽农业科学, 2008, 36:8392-8393.

[9] 戎丹妍. 珠心算顶尖高手在南京——打算盘真比计算机快[N]. 现代快报, 2013-11-11.

[10] 郭世荣. 纳贝尔筹在中国的传播与发展[J]. 中国科技史杂志, 1997, :12-20.

[11] Wikipedia. Napier's bones[EB/OL]. , 2015-06-07.

[12] 克利夫·斯托尔. 300年辉煌:计算尺传奇[J]. 环球科学, 2006, .

[13] 吴师傅. 如果没有计算器,我们就用计算尺吧[EB/OL]. , 2011-06-08.

[14] Cliff Stoll. When Slide Rules Ruled[J]. Scientific American, 2006, 294:80-87.

下一篇:机械之美——机械时期的计算设备

相关阅读

01改变世界:引言

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

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

01改变世界:现代计算机真正的鼻祖——超越时代的伟大思想

01改变世界:让电代替人工去计算——机电时期的权宜之计

上一篇:现代计算机真正的鼻祖——超越时代的伟大思想

帕斯卡加法器(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一轮回,却很有意思。

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

机电时期(19世纪末~20世纪40年代)

我们难以理解计算机,也许主要并不由于它复杂的机理,而是根本想不明白,为什么一通上电,这坨铁疙瘩就突然能飞速运转,它安安静静地到底在干些啥。

经过前几篇的探索,我们已经了解机械计算机(准确地说,咱们把它们称为机械式桌面计算器)的工作方式,本质上是通过旋钮或把手带动齿轮旋转,这一过程全靠手动,肉眼就能看得一清二楚,甚至用现在的乐高积木都能实现。麻烦就麻烦在电的引入,电这样看不见摸不着的神物(当然你可以摸摸试试),正是让计算机从笨重走向传奇、从简单明了走向令人费解的关键。

鸣谢

1. 在美深造学术能力一流的究极学霸——锁,精准地扒到大量珍贵文献和资料,为文中诸多信息的扩充和确认提供了巨大便捷。

2. 拥有远大理想抱负做事踏实认真的设计师——S7,没日没夜地帮助制作各类GIF示意图,为求精准,时不时还要返工。

与S7的聊天常态

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

技术准备

19世纪,电在计算机中的应用主要有两大方面:一是提供动力,靠电动机(俗称马达)代替人工驱动机器运行;二是提供控制,靠一些电动器件实现计算逻辑。

我们把这样的计算机称为机电计算机


上一篇:引言

电动机

汉斯·克里斯钦·奥斯特(Hans Christian Ørsted 1777-1851),丹麦物理学家、化学家。迈克尔·法拉第(Michael Faraday 1791-1867),英国物理学家、化学家。

1820年4月,奥斯特在实验中发现通电导线会造成附近磁针的偏转,证明了电流的磁效应。第二年,法拉第想到,既然通电导线能带动磁针,反过来,如果固定磁铁,旋转的将是导线,于是解放人力的伟大发明——电动机便诞生了。

电动机其实是件很不稀奇、很笨的发明,它只会一个劲不停地转圈,而机械式桌面计数器的运转本质上就是齿轮的转圈,两者简直是天造地设的一双。有了电动机,计算员不再需要吭哧吭哧地手摇,做数学也终于少了点体力劳动的模样。

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

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

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

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

电磁继电器

约瑟夫·亨利(Joseph Henry 1797-1878),美国科学家。爱德华·戴维(Edward Davy 1806-1885),英国物理学家、科学家、发明家。

电磁学的价值在于摸清了电能和动能之间的转换,而从静到动的能量转换,正是让机器自动运行的关键。而19世纪30年代由亨利和戴维所分别发明的继电器,就是电磁学的重要应用之一,分别在电报和电话领域发挥了重要作用。

电磁继电器(原图来自维基「Relay」词条)

其结构和原理十分简单:当线圈通电,产生磁场,铁质的电枢就被吸引,与下侧触片接触;当线圈断电,电枢就在弹簧的作用下上扬,与上侧触片接触。

在机电设备中,继电器主要发挥两方面的作用:一是通过弱电控制强电,使得控制电路可以控制工作电路的通断,这一点放张原理图就能一目了然;二是将电能转换为动能,利用电枢在磁场和弹簧作用下的往返运动,驱动特定的纯机械结构以完成计算任务。

继电器弱电控制强电原理图(原图来自网络)

鲍德温-奥德纳机(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的特写镜头

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

Z3

Z3的寿命比Z1还短,从1941年建造完成,到1943年被炸毁(是的,又被炸毁了),就活了两年。好在战后到了60年代,祖思的公司做出了完美的复制品,比Z1的复制品靠谱得多,藏于德意志博物馆,至今还能运行。

德意志博物馆展出的Z3复制品,内存和CPU两个大柜子里装满了继电器,操作面板俨如今天的键盘和显示器。(原图来自维基「Z3 (computer)」词条)

由于祖思一脉相承的设计,Z3和Z1有着一毛一样的体系结构,只不过它改用了电磁继电器,内部逻辑不再需要靠复杂的机械运动来实现,只要接接电线就可以了。我搜了一大圈,没有找到Z3的电路设计资料——因着祖思是德国人,研究祖思的Rojas教授也是德国人,更多详尽的资料均为德文,语言不通成了我们接触文化的壁垒——就让我们简单点,用一个YouTube上的演示视频一睹Z3芳容。

以12+17=19这一算式为例,用二进制表示即:1100+10001=11101。

先通过面板上的按键输入被加数12,继电器们萌萌哒一阵摆动,记录下二进制值1100。(截图来自《Die Z3 von Konrad Zuse im Deutschen Museum》,下同。)

继电器闭合为1,断开为0。

以同样的方式输入加数17,记录二进制值10001。

按下+号键,继电器们又是一阵萌萌哒摆动,计算出了结果。

在原本存储被加数的地方,得到了结果11101。

当然这只是机器内部的表示,如果要用户在继电器上查看结果,分分钟都成老花眼。

最终,机器将以十进制的形式在面板上显示结果。

除了四则运算,Z3比Z1还新增了开平方的功能,操作起来都相当方便,除了速度稍微慢点,完全顶得上现在最简单的那种电子计算器。

(图片来自网络)

值得一提的是,继电器的触点在开闭的瞬间容易引起火花(这跟我们现在插插头时会出现火花一样),频繁通断将严重缩短使用寿命,这也是继电器失效的主要原因。祖思统一将所有线路接到一个旋转鼓,鼓表面交替覆盖着金属和绝缘材料,用一个碳刷与其接触,鼓旋转时即产生电路通断的效果。每一周期,确保需闭合的继电器在鼓的金属面与碳刷接触之前闭合,火花便只会在旋转鼓上产生。旋转鼓比继电器耐用得多,也容易更换。如果你还记得,不难发现这一做法与霍尔瑞斯制表机中G针的安顿如出一辙,不得不感叹这些发明家真是英雄所见略同。

除了上述这种「随输入随计算」的用法,Z3当然还支撑运行预先编好的程序,不然也无法在历史上享有「第一台可编程计算机器」的名誉了。

Z3提供了在胶卷上打孔的设备

输入输出、内存读写、算术运算——Z3共识别9类指令。其中内存读写指令用6位标识存储地址,即寻址空间为64字,和Z1一样。(截图来自《Konrad Zuse's legacy: the architecture of the Z1 and Z3》)

由穿孔带读取器读出指令

1997~1998年间,Rojas教授将Z3证明为通用图灵机(UTM),但Z3本身没有提供条件分支的能力,要实现循环,得粗暴地将穿孔带的两头接起来形成环。到了Z4,终于有了条件分支,它使用两条穿孔带,分别作为主程序和子程序。Z4连上了打字机,能将结果打印出来。还扩充了指令集,支撑正弦、最大值、最小值等丰富的求值功能。甚而至于,开创性地应用了堆栈的概念。但它回归到了机械式存储,因为祖思希望扩大内存,继电器还是体积大、成本高的老问题。

总而言之,Z系列是一代更比一代强,除了这里介绍的1~4,祖思在1941年成立的公司还陆续生产了Z5、Z11、Z22、Z23、Z25、Z31、Z64等等等等产品(当然后面的系列开始采用电子管),共251台,一路高歌,如火如荼,直到1967年被西门子吞并,成为这一国际巨头体内的一股灵魂之血。

机械式计算器摄影作品

最后,让我们一起来欣赏一下美国摄影师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拍了个小视屏,有各种机器运行时候的样子,值得一看。

机械美学:古董机械计算器 via Kevin Twomey-高清观看-腾讯视频

2. 国内也有一网友从意大利淘了一台1960年的电动计算机,并录制了使用演示视频。从视频中可以直观地感受到,除法比加、减、乘慢得多,而我们现在其实已经知道了其中的原因。

你见过如此丧心病狂的计算器吗

Model I

Model I的运算部件(图片来自《Relay computers of George Stibitz》,实在没找到机器的全身照。)

这里不深究Model I的具体实现,其原理简单,可线路复杂得要命。让我们把重点放到其对数字的编码上。

Model I只用于实现复数的乘除运算,甚至连加减都没有考虑,因为贝尔实验室认为加减法口算就够了。(当然后来他们发现,只要不清空寄存器,就可以通过与复数±1相乘来实现加减法。)当时的电话系统中,有一种拥有10个状态的继电器,可以表示数字0~9,鉴于复数计算机的专用性,其实没有引入二进制的必要,直接利用这种继电器即可。但斯蒂比兹实在舍不得,便引入了二进制和十进制的杂种——BCD编码(Binary-Coded Decimal‎,二-十进制码),用四位二进制表示一位十进制:

0 → 0000
1 → 0001
2 → 0010
3 → 0011
……
9 → 1001
10 → 00010000(本来10的二进制表示是1010)

为了直观一点,我作了个图。

BCD码既拥有二进制的简洁表示,又保留了十进制的运算模式。但作为一名出色的设计师,斯蒂比兹仍不满足,稍做调整,给每个数的编码加了3:

0 → 0011 (0 + 3 = 3)
1 → 0100 (1 + 3 = 4)
2 → 0101 (2 + 3 = 5)
3 → 0110 (3 + 3 = 6)
……
9 → 1100 (9 + 3 =12)

为了直观,我继续作图嗯。

是为余3码(Excess-3),或称斯蒂比兹码。为什么要加3?因为四位二进制原本可以表示0~15,有6个编码是多余的,斯蒂比兹选择使用中间10个。

这么做当然不是因为强迫症,余3码的智慧有二:其一在于进位,观察1+9,即0100+1100=0000,观察2+8,即0101+1011=0000,以此类推,用0000这一特殊的编码表示进位;其二在于减法,减去一个数相当于加上此数的反码再加1,0(0011)的反码即9(1100),1(0100)的反码为8(1011),以此类推,每个数的反码恰是对其每一位取反。

不管你看没看懂这段话,总之,余3码大大简化了线路设计。

套用现在的术语来说,Model I采用C/S(客户端/服务端)架构,配备了3台操作终端,用户在任意一台终端上键入要算的式子,服务端将收到相应信号并在解算之后传回结果,由集成在终端上的电传打字机打印输出。只是这3台终端并不能同时使用,像电话一样,只要有一台「占线」,另两台就会收到忙音提示。

Model I的操作台(客户端)(图片来自《Relay computers of George Stibitz》)

操作台上的键盘示意图,左侧开关用于连接服务端,连接之后即表示该终端「占线」。(图片来自《Number, Please-Computers at Bell Labs》)

键入一个式子的按键顺序,看看就好。(图片来自《Number, Please-Computers at Bell Labs》)

计算一次复数乘除法平均耗时半分钟,速度是使用机械式桌面计算器的3倍。

Model I不但是第一台多终端的计算机,还是第一台可以远程操控的计算机。这里的远程,说白了就是贝尔实验室利用自身的技术优势,于1940年9月9日,在达特茅斯学院(Dartmouth College)和纽约的本部之间搭起线路,斯蒂比兹带着小小的终端机到学院演示,不一会就从纽约传回结果,在与会的数学家中引起了巨大轰动,其中就有日后大名鼎鼎的冯·诺依曼,个中启迪不言而喻。

我用谷歌地图估了一下,这条线路全长267英里,约430公里,足够纵贯江苏,从苏州火车站连到连云港花果山。

从苏州站开车至花果山430余公里(截图来自百度地图)

斯蒂比兹由此成为远程计算第一人。

然而,Model I只能做复数的四则运算,不可编程,当贝尔的工程师们想将它的功能扩展到多项式计算时,才发现其线路被设计死了,根本改动不得。它更像是台巨型的计算器,准确地说,仍是calculator,而不是computer。

祖思机

康拉德·祖思(Konrad Zuse 1910~1995),德国土木工程师、发明家。

有些天才注定成为大师,祖思便是其一。读大学时,他就不安分,专业换来换去都觉得无聊,工作之后,在亨舍尔企业参与研究风对机翼的影响,对繁复的计算更是忍无可忍。

一天到晚就是在摇计算器,中间结果还要手抄,简直要疯。(截图来自《Computer History》)

祖思一面抓狂,一面相信还有好多人跟他一样抓狂,他看到了商机,觉得这个世界迫切需要一种可以自动计算的机器。于是一不做二不休,在亨舍尔才呆了几个月就潇洒辞职,搬到父母家里啃老,一门心思搞起了发明。他对巴贝奇一无所知,凭一己之力做出了世界上第一台可编程计算机——Z1。


上一篇:轮子的力量:太阳图腾崇拜与交通方式(一) 下一篇:没有了