第1章 计算机从哪里来?

1.1 数量的表示

根据达尔文的进化论,人类是动物进化而来的,最初也没有数量的概念。由于记事和分配生活用品等方面的需要,人类才逐渐产生了数的概念。古人记数的方法大概有实物记数、结绳记数和划刻记数几种。举例来说,如果捕获了一头野兽,他们就用1块石子代表,捕获了3头,就放3块石子;当然也可以用木棒,还可以在绳上打结,在石头上划刻竖线。人类借助工具来记数可能是为了防止遗忘。

随着人类生产能力的提高,需要记忆的数量越来越多,另一面,记数的结果也需要保存,三种记数方法的弊端就暴露出来了,1000个猎物要用1000个石块,数量庞大而且容易弄丢,人们迫切需要解决这些问题,于是发明了进制。

最迟在商代,中国已采用了十进制。从已发现的商代陶文和甲骨文中,可以看到当时已能够用一、二、三、四、五、六、七、八、九、十、百、千、万等符号,表示十万以内的任何自然数。


图1-1 甲骨文中的十进制

阿拉伯数字最初由印度人发明,后由阿拉伯人传到欧洲,之后再经欧洲人将其现代化,也是一种采用十进制符号表示数量的方法。

有了进制的思想和符号,数量的表示就不成问题了。

1.2 计算工具的演化

古人新捕获了猎物需要在原来的数量加上一定的数量,而分配猎物后则需要减去一定的数量,于是出现了加减运算。最初人们采用的是石块和木棒记数,加减就是实物的加上和减去,但出现符号表示数量后,该怎么计算呢?

1.算筹

据史料推测,最晚在春秋晚期中国就出现了算筹。算筹实际上是一根根同样长短和粗细的小棍子,大约二百七十几枚为一束,随身携带。需要计算的时候,就把它们取出来,随时随地都能摆弄。 


图1-2 古代算筹

用算筹运算,有一套规则和口诀。古人不但可以用它做四则运算,甚至还可以乘方开方,相传中国古代科学家祖冲之最先算出了圆周率小数点后的第6位,使用的工具正是算筹。


图1-3 算筹运算示意图

2. 算盘

算盘最早可能萌芽于汉代,但直到元末明初才逐渐取代算筹,成为主要的计算工具。也有学者认为算盘起源于古罗马,后传入中国。笔者认为世界上主要的文明应该都有自己的“小算盘”,只是谁的更好用一些罢了。


图1-4 算盘

3. 对数计算尺

 1614年,约翰·奈皮尔(JohnNapier)发明了对数,对数运算可以化乘除法为加减法。1621年,英国数学家威廉·奥特雷德(William Oughtred)根据对数原理发明了圆形计算尺,经瓦特等人改进后,成为常用的计算工具。直到20世纪五六十年代,对数计算尺仍然是代表工科大学生身份的一种标志。


图1-5 对数计算尺

4. 机械计算器

1642年,法国数学家帕斯卡(BlaisePascal)发明了帕斯卡加法器,这是人类历史上第一台机械式计算工具,其原理对后来计算工具的发展产生了深远的影响。


图1-6 帕斯卡加法器

1673年,莱布尼茨(G .W.Leibnitz)进一步改进了帕斯卡加法器,研制了一台能进行四则运算的机械式计算器,称为莱布尼兹四则运算器。

5. 杰卡德的提花机

1804年,法国机械师约瑟夫·雅各(Joseph Jacquard)发明了可编程织布机,通过穿孔卡片凿孔控制顶针穿入,实现织布机织出卡片上的图案。虽然提花机不是计算工具,但闪烁着程序控制的思想。

6. 差分机

为了解决航海、工业生产和科学研究中的复杂计算,许多数学表(如对数表、三角函数表)应运而生。这些数学表往往采用人工计算,其中的错误很多,于是查尔斯·巴贝奇(Charles Babbage,1792—1871)决心研制新的计算工具,用机器取代人工来计算这些数学表。


图1-7查尔斯·巴贝奇

1822年,巴贝奇开始研制差分机一号,专门用于计算常用数学表,历时10年研制成功。差分机的主要思想是:常用函数表的函数(如sin(x))可以展成幂级数(一元多项式),只需要幂级数的前N项就可以得到函数的近似表达式,N值越大误差越小,只需给出f(1)的值,差分机就可以通过累加的方式连续求出f(2)、f(3)… …的值,进而求出函数表的近似值。

比如计算f(x)=2x2+3x+4的数值表。表格中f(1)对应的第一次差分是f(2)-f(1)的值,f(1)对应的第二次差分是f(2)的第一次差分减去f(1)的第一次差分,其它以此类推。从表格1-1中可以看出第二次差分都是常数,实际上任意N次多项式,经过N次差分都是常数。如果要计算f(6)的值,实际上只要用f(5)对应的第一次差分加上f(5),f(5)对应的第一次差分等于4+21,所以f(6)=f(5)+25=94,也就是只要知道前一个值,通过累加就可以算出后一个值,只要知道f(1),后面的值都可以累加得出。

表1-1 差分法计算函数值

 

函数值

第一次差分

第二次差分

f(1

9

9

4

f(2

18

13

4

f(3

31

17

4

f(4

48

21

 

f(5

69

 

 

… …

 

 

 

 


图1-8 差分机模型

差分机用机械齿轮的方法实现了多次累加计算,需要暂存中间结果(中间的差分值)和控制机器按既定次序多次执行加法,因此差分机里蕴含着数据存储和程序控制的思想,只不过这个控制程序是既定的、机械的、不可更改的,差分机也就只能用来计算多项式的值了。

7. 分析机

差分机是计算多项式级数的前N项而得到近似值,项数越多,硬件越复杂。但多项式还可以用四则运算的任意排列组合和任意长度来表示,比如f(6)=2x2+3x+4=2*6*6+3*6+4,就可以通过多次计算乘法和加法来实现。巴贝奇设计分析机实现四则运算,并且四则运算可以任意顺序、任意长度的排列组合,因此分析机可以计算出任意多项式的数值。这其实就是用机器来描述数学函数,对数学函数进行数值分析,这也许是巴贝奇采用“分析机”这一名字的原因。

大约1833年,巴贝奇开始进行分析机的研究。这个机器主要有一个四则运算器(Mill),一个存储1000列50位数的数据存储器,一个读取并分析卡片指令的控制器,及若干控制卡片组成。分析机可以把一个常数通过卡片输入到数据存储器的指定位置,可以把数据存储器中指定位置的数传输到运算器的输入端,运算器可以对输入端的数据做四则运算,运算结果又可以存储到数据存储器的指定位置,并且这些操作可以无限多次、任意排列组合,想想看,求f(x)=2x2+3x+4的数值解不就是很容易的事情了吗?

分析机具备了运算器、控制器、数据存储器、程序存储器等现代计算机的核心部件,表示机器动作的符号实质就是打孔卡上的机器语言,分析机甚至具备依条件转移的能力。

说到分析机,就不得不提阿达·洛芙莱斯(Ada Lovelace)。阿达是大诗人拜伦的女儿,从小酷爱数学。当阿达还是个小女孩的时候,有幸参观到巴贝奇的差分机,阿达饶有兴致地向巴贝奇请教了差分机的原理,并对差分机留下了深刻的印象。当巴贝奇开始研制分析机的时候,阿达加入了进来,她深刻理解了分析机的原理并预测分析机将来甚至可以编制音乐和处理文字信息以及各种用途,并为分析机编制程序计算伯努利数。由于身患疾病和过度的脑力劳动,阿达36岁时不幸英年早逝,后人一般认为,阿达是第一位计算机程序员。


图1-9 阿达·洛芙莱斯

1812年,20岁的巴贝奇开始设计研发差分机,历时10年研究成功差分机一号。他又花了10多年研制计算精度更高的差分机二号,用光了政府资助的所有经费和自己的积蓄,差分机二号仍没能研制成功,受到了同行的冷嘲热讽,巴贝奇在1833年左右停止了差分机二号的研制,转向了更为通用的分析机的研制。1842年,27岁的阿达加入了巴贝奇的分析机研究中,两人成为忘年交。1852年阿达不幸离世,之后巴贝奇又坚持了近20年,1871年巴贝奇去世,分析机最终只停留在了图纸上。

巴贝奇先生为计算机梦想奋斗了近60年,虽然限于经济条件和加工水平,最终没能制造出来实物,但这种用毕生精力去做自己喜欢做的事情,而不仅仅是为了名、利、权的精神,带来了西方百家争鸣、百花齐放的局面,并最终成就了西方的现代文明。巴贝奇先生把计算器和程序控制思想有机结合起来,创造性地提出了程序控制的计算机器,也就是我们常说的计算机,从此拉开了计算机时代的序幕。

8. 机电式计算机

1936年,美国数学教授霍华德·艾肯(Howard Aiken)吸收了巴贝奇的设计,提出用机电的方法(即继电器)来实现分析机,并于1944年研制成功了机电式计算机Mark-I。

9. 电子计算机

1939,约翰.阿塔那索夫(John. Atanasoft),使用电子管和二进制原理开发了一台电子计算机,并取名为ABC。ABC不可编程,仅仅设计用于求解线性方程组,但ABC证明了用电子管构造计算机的可行性。


图1-10 ABC电子计算机

莫奇利(Mauchly,John William)得了美国军方的资金支持,在借鉴了阿塔那索夫ABC计算机设计思想的基础上,于 1942年和埃克特(John Eckert)合作开发了著名的ENIAC计算机。ENIAC占地面积约170平方米,重达30英吨,包含了17468根真空电子管,70000个电阻,10000个电容,1500个继电器,每秒执行5000次加法或400次乘法,是继电器计算机运算速度的1000倍、手工计算的20万倍。不过,ENIAC采用的十进制,程序由接线板现场搭出来,并不是事先存储好的。


图1-11 ENIAC数字电子计算机

数学家冯·诺依曼(Johnvon Neumann)参观了ENIAC计算机,总结前人设计计算机的经验教训,提出了现代数字电子计算机的设计方案,并用于EDVAC计算机的设计,即:

l  二进制表示指令和数据;

l  程序存储,自动运行;

l  由控制器、运算器、存储器、输入和输出五大部件构成。

这三点成为了数字电子计算机领域的“牛顿三定律”,至少现在的数字电子计算机还都是冯诺依曼机。有过类似思想的科学家至少还有维纳和图灵,但他们之间是英雄所见略同,还是相互借鉴已经无从查证了,不过数字电子计算机的时代已经来临,没有冯诺依曼还有维纳、图灵… …,其势已不可阻挡。

至于后来的晶体管计算机和集成电路计算机都只是材料和生产工艺的变化,计算机结构越来越复杂、存储能力和计算能力越来越强,但本质上还是冯诺依曼计算机。

从计算机的发展历史可以看到,计算机这种事物发展到今天,并非是某一个伟大人物一下子发明出来的,而是很多代人经过若干年共同努力的结果。笔者认为,欲速则不达,一代代人的积累才可能有先进的科技,踏实地做好自己喜欢的领域,若干年以后,若干代人以后,我们也会逐步有自己的高科技,而不止停留在“四大发明”上。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值