计算机的历史-------关于计算本质的追寻

来源:互联网 发布:linux 注释多行 编辑:程序博客网 时间:2024/05/01 17:24

           计算机是什么?

           这个问题问的很简单,我们正在用的不就是嘛!可是,要真正回答好这个问题,并不是一件容易的事情。

           计算机,英文computer,computing machine,翻译为计算者,计算的机器,那么这就反映了计算机的本质问题:计算的机器。分为两个方面,就是1、它首先是机器,代替人来工作的,2、它的本职工作是计算(这也是为甚么在介绍计算机的作用的时候,所有的书都先说“科学计算”,而不是娱乐游戏什么的)。

           计算机的制造是人类在机械化进程中的伟大课题。工业时代人类的机械化课题主要是体力劳动的机械化,以瓦特的蒸汽机为典型代表;而信息化时代人类的机械化课题主要是脑力劳动的机械化(吴文俊对这方面有较为广泛的研究),以计算机的发明为典型代表。

           而人类在追求脑力劳动的机械化上,主要体现在计算的机械化上,因为脑力劳动最基本的就是数学,数学最基本的就是计算。人类追求计算的机械化的历史,早在2000多年前就已经开始了,这里我想把这段历史分为三个阶段,并选取具有代表性的计算工具来阐释其中的道理。而这个分类也是对计算本质的一种探讨。

 

         (1)数据存储的机械化--------算盘的发明

 的      ()   的的的

                算盘的发明真的是中华人民的伟大发明,它解决了人类计算的头等大事-------对于数据的记忆问题。

           以一个具体的计算为例,9+5=14。在计算这个加法的时候,我们首先得记得加数与被加数,在脑海中留下9与5的记忆,然后再考虑其他。当人要考虑更为复杂的计算时,如123355+2847364,就不得不在脑海中费劲力气记住那长长的加数与被加数,而忽视掉了加法的本身。当然,人类通过发明纸来解决了数据记忆的问题,但是纸的毛病就在于浪费,可利用性太差,与我们想像中的可以重复进行工作的计算器相差甚远。

           懂一点算盘的都知道,我们可以用上面的一个珠子表示5,下面的一个珠子表示1,从右到左的一柱代表个十百千位,这样就可用十进制的记数系统表达我们需要进行计算的数。然后通过口诀改变珠子的位置数量,得到计算结果,而最后的结果也保存在算盘上。从这一点看,算盘和我们现在的内存很相似。

            算盘在大量数据的计算中一直发挥着巨大作用,比如电影《横空出世》里面邓稼先领导的科研团队在做大量的计算时就用了算盘这一工具。虽然如此,掌握它并不容易。算盘的使用需要背诵大量的计算口诀,只有少数人才能对算盘的使用得心应手,普通的人很难掌握,尤其是不懂数学的人使用起来更是难上加难。这里的原因,归根结底,在于计算规则没有机械化。下面,我们就来见证另一个历史性的发明。

 

         (2)计算规则的机械化------------帕斯卡加法器的发明

                 

        

 

           很多人对帕斯卡加法器并不熟悉,可以看看相关的视频(需要到youtube上看)了解它的操作方法。其实很简单,上面六个纸带(共有两行,上一行被遮住了,分别代表加减)用于显示和存储数据,下面六个滚轮用于操作运算,滚轮的转动控制了对应上面的数字的变化。看过视频演示它的工作过程后,我们能够明显发现我们的计算过程变得简单了,我们只需要先拨动滚轮输入被加数,然后再通过拨动滚轮输入加数,输入过程,机器自动实现进位运算,不必我们亲自去操心,我们只需要做的就是转动滚轮。

            从体型上看,帕斯卡加法器比算盘大了许多,也复杂了许多,根本原因在于后者实现了计算规则(加法的进位、减法的借位等)的机械化,而计算规则明显要比数据存储复杂的多。而在现代计算机中,计算规则的机械化则是通过运算器来实现。不知读者有没有发现,我们要得到一个计算结果还是要转过来转过去,甚是麻烦,这个过程往往让我们手忙脚乱,而这个过程就是著名的控制过程。

          (3)过程控制的机械化-------------巴贝奇分析机

              

 

            巴贝奇的分析机虽然当时没有实现,但是现在的科学家根据他当年的理论设计确确实实制造出了上面的现代计算机的通用模型。巴贝奇提出分析机主要由三个部分组成:1、存储装置;2、计算装置;3、控制装置。很明显,巴贝奇的分析机与前面的帕斯卡的加法器的优势在于,它多了控制装置的理念。于是,我们可以通过在纸带上打孔代表特殊的计算含义(就如同我们现在的指令),然后让分析机按照我们告诉它的方式自动地去存数、加法、得数,最后把结果直接给我们。我们不再像帕斯卡加法器那样去亲自把数存进去,拨动转轮做加法,一切行为的控制都由机器自己执行了。我们要做的就是现在所有程序员干的一样,编制这些能产生具体结果的一系列的指令集合,然后交给机器去自动执行。而诗人拜伦的女儿阿达Ada Lovelace就是根据当年巴贝奇的想法写出了第一份程序设计流程图,而被人们誉为“第一位程序员”。这种过程控制的机械化理念,在20世纪由冯。诺依曼 和维纳成功发扬,维纳的《控制论》是对控制理论的一个系统的总结。

           所以,从历史上看,巴贝奇是当之无愧的现代通用计算机的先驱,他的伟大理论是现代通用计算机模型的奠基。他的理论解决了计算机发展中的最后一个大难题-------过程控制的机械化。

          现代计算机由于物理学的发展而采用了电磁学的方法来取代力学的方法,机械化主要以电路来实现,最大的好处是能源提供的方便与体积的减小;记数方法也采用莱布尼兹首创的二进制(莱布尼兹用二进制对帕斯卡加法器做了改进使之可以乘除);计算规则的电路化采用的理论是早在19世纪就由布尔提出的逻辑代数。

           现代计算机的体系结构是冯诺依曼体系结构,而这种体系结构其实是经过对前人成果的总结与最新研究成果的结合而产生的。计算机界的先驱们为人类计算机械化做出了不可磨灭的贡献,每一位“大牛”都应该被我们敬仰与牢记。