计算机科学概论
上QQ阅读APP看书,第一时间看更新

1.1.1 电子计算机诞生之前

1.早期计算工具

(1)古代中国的算筹与算盘

如同许多其他领域和学科一样,在早期计算工具方面对世界贡献尤为突出的是古代兼具勤劳与智慧的中国劳动人民。十进制计数法早在商代就已经在中国开始使用了,这足足领先了世界一千余年。算筹是古代中国特有的一种计算工具,它于周朝最早出现。算筹是一种由竹子、木头或骨头等材料制成的刻有计数标记的棍型工具,利用算筹人们可以方便地对数字进行表示和计算。算筹表示的方式有纵式和横式两种,如图1-1所示,以纵式为例:一根纵向放置的算筹表示1,当要表示的数字超过5时,用一根横向放置的算筹表示5;横式与纵式相反,利用这种数字的组合,算筹可以表示范围很广的数字。算筹对于数制的发展具有重要意义,它在算盘出现推广之前都是中国最重要的计算工具。

图1-1 算筹数字表示方法

算盘是另一种古老的计算工具,由于算盘上计数的单位大多由珠子构成,因此也称为珠算。算盘由算筹演变而来,珠算分上下两档,上档一珠当5,下档一珠当1,这与纵式的算筹是完全一致的。珠算利用进位制计数,通过拨动算珠就能很快地进行计算。由于算盘结构简单、计算方便迅速、价格低廉又便于携带,在计算器盛行之前一直在我国的经济生活中长期发挥着重大作用,直到今天国内一些幼儿园中还开设珠算课程。

(2)纳皮尔的骨头

约翰·纳皮尔是16~17世纪苏格兰数学家、物理学家兼天文学家,他最为人所熟知的是发明对数和纳皮尔的骨头计算器。纳皮尔于1617年在他所著的一本书中介绍了一种利用工具计算乘法的简便方法,这个工具被后人称为“纳皮尔棒”或“纳皮尔的骨头”。纳皮尔的骨头也是由一些表面刻着类似乘法数字的棍状的木头或骨头组成,但它的原理却与中国的算筹大相径庭,纳皮尔的骨头的原理类似于竖式乘法,它是根据乘数和被乘数排列好木棍的顺序,这样仅需要做简单的加法就能计算出乘积等复杂的运算,从而大大简化了计算过程。

(3)计算尺

计算尺,即对数计算尺,也称为滑尺,是一种模拟计算机,通常由3个互相锁定的有刻度的长条和一个滑动窗口(称为游标)组成,如图1-2所示。在20世纪70年代之前广泛使用,之后被电子计算器所取代,成为过时技术。

图1-2 计算尺

计算尺发明于1620—1630年,在约翰·纳皮尔对数概念发表后不久,英国牛津大学的埃德蒙·甘特发明了一种使用单个对数刻度的计算工具,当和另外的测量工具配合使用时,可以用来做乘除法。1632年,剑桥大学的威廉·奥垂德将两把甘特式计算尺组合起来使用,发现可以更加便捷地进行计算,这便是计算尺的前身。

在使用计算尺进行数学计算时,通常通过把滑动杆上的记号和其他固定杆上的记号对齐来进行,结果通过观察杆子上的其他记号的相对位置来读出。在其最基本的形式中,算尺用两个对数标度来做乘除法这种在纸上既费时又易出错的常见运算。算尺本身只提供结果的数字序列,使用者通过估计决定小数点在结果中的位置来获得最终结果。更复杂的算尺可以进行其他计算,例如平方根、指数、对数和三角函数等。

2.机械式计算机

机械时代计算装置的主要特点是利用了齿轮、杠杆等各种机械传动装置达到计算的自动化,包括进位的自动传送等,而机械装置的主要动力来自计算人员的人力。

(1)帕斯卡加法器

帕斯卡加法器是由法国著名哲学家、数学家布雷斯·帕斯卡于1642年为了帮助其父亲进行税务计算而发明的机器,它是第一台真正的机械式计算器。

帕斯卡加法器的外形如图1-3所示,它的操作面板上由6个滚轮构成,因此也称为滚轮式加法器,它是利用齿轮传动的原理,通过手工操作来实现加减运算的机器。加法器从右至左的每个滚轮依次代表个、十、百、千、万、十万这6个位数,每个轮子上又刻着0~9这10个数字。利用加法器进行加法运算时,先在滚轮上按照位数和各个位数的数字拨出第一个加数,再按照第二个加数的各位数字在对应滚轮上转动相应格数,最终面板上显示的数字即为两数相加之和,如果是执行减法,则只需在第二步时向相反方向转动滚轮即可。加法器的精妙之处在于能够过齿轮等机械传动装置使某一位产生进位或退位时自动对其他数位的数值进行改变,同时也给人们以启示:用一种机械装置去代替人们的思考和记忆是完全可以做到的。

图1-3 帕斯卡加法器

(2)莱布尼茨乘法器

发明了二进制的德国哲学家、数学家莱布尼茨于17世纪70年代设计并建造了一台可以进行加、减、乘、除四则运算的机器,后人通常称其为莱布尼茨乘法器。莱布尼茨乘法器的基本原理和帕斯卡加法器相同,同样是利用了齿轮体系来传动,但除了加、减法之外,还能进行乘、除法的运算,还有一系列加、减后的平方根算法,这是通过一种称为“步进轮”的装置完成的。步进轮是一个有9个齿的阶梯型柱体,9个齿依次分布于圆柱表面;步进轮旁边另有可以沿着轴向移动的小齿轮,以便逐次与步进轮啮合。每当小齿轮转动一圈,步进轮可根据它与小齿轮啮合的齿数,分别转动1/10圈、2/10圈……直到9/10圈,这样一来它就能够连续重复地做加减法。通过使用者转动手柄,使这种重复的加减运算转变为乘除运算。莱布尼茨乘法器长约1m,宽30cm,高25cm,如图1-4所示。

图1-4 莱布尼茨乘法器

(3)差分机和分析机

英国数学家、发明家、机械工程师查尔斯·巴贝奇于19世纪初期提出了差分机和分析机的概念,为现代计算机设计思想的发展奠定了基础,差分机和分析机在计算机发展史上占有重要的地位,巴贝奇也被视为计算机先驱。

巴贝奇首先设计了差分机一号,他设计计算机器的最初目的是利用“机器”将计算到印刷的过程全部自动化,全面去除计算错误、抄写错误、校对错误、印制错误等人为疏失。而差分机一号则是利用N次多项式求值会有共通的N次阶差的特性,以齿轮运转带动十进制的数值相加减、进位。差分机一号由英国政府出资,预计完工需要25000个零件,重达4吨,可计算到第六阶差,最高可以存 16 位数。但因为大量精密零件制造困难、设计不断被修改以及人员冲突等原因,差分机一号并未能完工,到1832年巴贝奇只能拿出完成品的1/7部分来展示,12 000多个还没用到的精密零件后来都被熔解报废,不过差分机运转的精密程度仍令当时的人们叹为观止,至今依然是人类踏进科技的一个重大起步。

图1-5 差分机

图1-6 分析机

在差分机一号搁浅之后,巴贝奇仍继续工作,设计一台更为复杂的机器——分析机。这台机器本有希望成为真正的计算机,可以运行包含“条件”“循环”语句的程序,有暂存器用来存储数据,不过同样没有完成。然而巴贝奇计划在分析机上使用的穿孔卡控制机器却是人类计算机历史上的一次重大飞跃,利用穿孔卡可以让分析机按任何制定的公式去执行计算,这与现代计算机编程的概念是完全一致的。之后巴贝奇又于1849年设计了具有更高精度、能执行更复杂计算的差分机二号,但由于失去政府资助等原因,同样未能实现,但巴贝奇设计的差分机和分析机对计算机发展的贡献是不可磨灭的。后人仿制的差分机和分析机如图1-5和图1-6所示。

3.机电计算机

电动机械时代的计算机器的特点是使用电力作为驱动计算机的动力,但机器结构本身还是机械式结构。

(1)制表机

19世纪美国每10年就要进行一次人口普查,由于人口的不断增长,利用传统的人工统计方法进行一次人口普查的时间将超过10年普查周期,这样人口普查就没有意义了,利用更高效的机器提高统计效率迫在眉睫。1886年,美国人口统计局的统计学家赫尔曼·霍勒瑞斯博士借鉴了雅各布织布机的穿孔卡原理,用穿孔卡片存储数据,用电磁继电器代替一部分机械元件来控制穿孔卡片,制成第一台机电式穿孔卡系统——制表机。制表机加快了数据处理速度,避免了手工操作引起的差错,这台机器参与了1890年的美国人口普查工作,结果仅用了六周时间就得出了准确的人口数据,还曾在奥地利、加拿大、挪威等许多国家的人口普查中被使用。于是霍勒瑞斯于1896年创建了制表机公司(Tabulating Machine Company,TMC),1911年,TMC与另外两家公司合并,成立了CTR公司。1924年,CTR公司改名为国际商业机器公司(International Business Machines Corporation,IBM),这就是长期占据大型计算机制造业霸主地位的IBM公司的由来。1890年的制表机如图1-7所示。

图1-7 制表机

(2)Z系列计算机

1934年,德国工程师、计算机先驱和发明家康拉德·楚泽开始致力于计算机的研制,他设计的第一台计算机Z1于1938年完成,Z1是一种纯机械式计算装置,它有可存储64位数的机械存储器,并与一个机械运算单元相连接,Z1的运算速度较慢,可靠性并不可观。早在Z1完成之前,楚泽就已经开始设计Z1的下一代计算机Z2,Z2计划采用电器元件并于1940年研制完成。在Z2的基础上楚泽开始研制他的第三代计算机Z3,并于1941年研制成功。Z3是世界上第一台采用电磁继电器控制并可以由程序控制的计算机,它使用了2 600个继电器,采用浮点二进制数进行运算,采用带数字存储地址形式的指令,这些设计思想虽然在楚泽之前就已被提出,但是楚泽第一次具体实现。Z3能够进行数的四则运算和求平方根,进行一次加法用时0.3s,并且Z3计算机的体积比同时代的计算机体积小很多,而且可以通过程序控制。Z3计算机工作了3年,1944年美国空军对柏林实施空袭,楚泽的住宅连同 Z3计算机一起被炸得支离破碎。在德国法西斯即将毁灭前夕,楚泽于1945年又建造了一台比Z3更先进的电磁式Z4计算机,存储器单元也从64位扩展到1 024位,继电器几乎占满了一个房间。为了使机器的效率更高,楚泽甚至设计了一种编程语言Plankalkuel,这一成果使楚泽也跻身于计算机语言先驱者行列,该语言也被视为现代算法程序设计语言和逻辑程序设计语言的鼻祖。

图1-8为晚年的楚泽与Z1的仿制品。

图1-8 楚泽与Z1仿制品

扩展阅读:康拉德·楚泽

康拉德·楚泽于1910年6月22日生于德国维尔梅斯多夫,在东普鲁士接受早期教育。东普鲁士的文化传统相当保守,为了获得更好的发展,他进入一所比较开放的学校,直到高中毕业。1927年,楚泽考进柏林工业大学,学的是土木工程建筑专业。他从小爱好绘画,具有非常好的美术功底,因此很快就学会了如何设计房屋结构和外观。多才多艺的楚泽兴趣广泛,修理机器的活也很拿手,时常动手制作出一些稀奇古怪的玩艺,让班上的同学大吃一惊。

求学期间,楚泽需要完成许多力学计算的功课,如桥梁、材料强度设计等,必须自己动手根据公式算出结果,往往一整天都算不完一道强度核算题目。一天,在疲惫不堪地完成老师布置的作业后,楚泽突然发现,写在教科书里的力学公式是固定不变的,他们要做的只是向这些公式中填充数据,这种单调的工作,应该可以交给机器做。

1935年,楚泽获得了土木工程学士学位,在柏林一家飞机制造厂找到了工作,主要任务恰好是他最挠头的飞机强度分析,烦琐的计算现在变成了他的主要职业,而辅助工具只有计算尺可用。楚泽想制造一台计算机的愿望愈来愈强烈,他在这家工厂里只待了短短的几个月,便辞职回家做他的“发明梦”,迈出了成为计算机先驱的第一步。

(3)自动序列控制演算器

自动序列控制演算器的全称为哈佛-IBM 自动序列控制计算机(Harvard-IBM Automatic Sequence Controlled Calculator),它也是机电计算机的典型代表。美国哈佛大学应用数学教授、计算机先驱霍华德·艾肯(Howard Aiken,1900—1973年)于1939年在哈佛大学取得博士学位,他当时正苦恼于解决微分方程的求解问题,传统的计算方式使求解效率十分低下又占据大量时间。在阅读了巴贝奇和艾达·拉芙蕾丝关于差分机和分析机的文献后他深受启发,提出将巴贝奇分析机纯机械的实现方法改为机电结合的实现方法,于是在IBM公司的资助下他成功设计出一台计算机,其原名为自动序列控制演算器(Automatic Sequence Controlled Calculator,ASCC),之后更名为哈佛马克一号(Harvard Mark-I)。马克一号最终于1944年完成并被搭建在哈佛校园内,长15.5米,高2.4米,由超过75万个零件构成,如图1-9所示。艾肯又于1947年完成了马克二号,之后又完成了更加先进的马克三号和马克四号。马克三号仍是机电式计算机,而马克四号已成为完全由电子部件构成的计算机了,马克三号和马克四号使用磁鼓作为存储器介质,马克四号同时还有磁芯存储器。霍华德·艾肯的马克系列计算机在计算机发展史上占有十分重要的地位,同时这一时代的计算机应用了大量继电器,为早期电子计算机的设计制造积累了经验,为现代计算机的发展奠定了十分坚实的理论和时间基础。

图1-9 马克一号计算机