美文网首页
现代计算机思想的萌芽

现代计算机思想的萌芽

作者: 仲秋雨路 | 来源:发表于2018-02-07 23:02 被阅读26次
    差分机 与 分析机

    19世纪初,英国在工业革命推动下,依靠强大的经济实力和海军力量,征服了世界上大面积的殖民地,号称“日不落”帝国。为了维护自己的统治殖民地位以及海上贸易的权益,航海业受到极大的重视和提高。航海离不开航海表的指导,但航海表计算比较复杂并且计算量大,人们发现早期的航海表错误比较多,并因此导致很多海上事故。1823年,英国政府发出布告寻求能修正航海表的人。伦敦数学家巴贝奇(Charles Babbage,1792—1871)毛遂自荐,他提出制造一台计算机器,可以自动,快速,准确的计算出航海表所需的数据。针对他提出的构想与计划书,很多人不意为然。一个卓有远见的政治家 - 威灵顿公爵(Arthur Wellesley, 1st Duke of Wellington 1769–1852)(这位公爵是曾经在滑铁卢战役(1815年)中大败拿破仑的英军统帅威灵顿将军,后来担任英国首相)支持了他的想法。
    由于认识到巴贝奇计划的可行性以及航海表对英国经济发展和海军作战能力的巨大作用,威灵顿公爵出资1500英镑作为项目的启动资金。

    Charles Babbage,1792—1871 Difference engine

    经过近10年努力,1832年这种计算机器研制成功,并命名“差分机” 。 它由一些直立的铜柱构成,每根铜柱上都等距离的垂直装配有若干齿轮,每个齿轮上都刻有0~9 个阿拉伯数字,利用齿轮之间的传动咬合来自动完成计算。这台计算机借鉴了帕斯卡和莱布尼兹的机器设计思想,但有更多创新。它设计有三个齿轮组作为存储装置来存储计算的中间数据,可以按照事先设计好的计算步骤进行多项式计算,可以进行20位有效数字的计算,并能精确到小数点后六位。解决了当时遇到的一些计算难题。在制成三个存储器的差分机后,为了提高差分机性能,巴贝奇又投入到七个存储器的差分机制造中,但是限于当时的技术条件,未在预定时间内完成自己的计划。同时,也失去了英国政府的资金支持,未完成的差分机与资料被送到英国博物管收藏。尽管新的差分机未能研制成功,但是他的差分机设计思想仍然值得借鉴: 受劳动经济学分工影响,把差分机分成三大部件- 存储部件,读写数据部件和数据运算部件。存储部件由直立铜柱上等距离齿轮上的数字存储,读写部件是用一种精巧方法从存储部件读取输入数据,并送给数据计算部件,或者将数据计算部件的计算结果写入存储部件;数据运算部件由齿轮之间的传动咬合实现。这种设计思想至今在现代计算机中仍然在运用。

    尽管失去了政府的资金支持,巴贝奇未停止计算机器的设计制造想法。他投入到一种新的计算机器 - 分析机 的设计制造中,根据设计,这台机器能够胜任任意计算复杂公式的计算任务,实现通用计算的功能。他设计30多种分析机方案,画了2000多张图纸,限于当时的技术条件未能完成。分析机的设计思想更趋近于现代计算机的结构,而且发明了程序设计的概念。从结构上看,分析机由数据运算部件(处理器),读取数据部件(读卡器),记录数据部件(打印机和打卡器)和存储部件(有数据标记的铜柱和事先标记好的卡片)。在数据运算部件最初设计上,需要把加减乘除等运算部件分开,但具体实现时复杂度太大,后经过优化,可以用加法器把加减乘除等数学运算转化位有限次的加法运算,测试及重复运算实现,降低了数学运算部件的设计难度。另外,通过编辑卡片,实现存储计算指令和数据的功能,计算机通过读取事先编辑好的卡片获得执行指令和运算的数据,实现自动运算 - 这恰恰是早期程序设计思想的雏形。

    巴贝奇设计差分机不被世人所知,当时很多人不相信机器能代替人脑进行计算。但他对分析机的价值深信不疑。他在生命的最后时刻写道: 任何人如果不惜步我的后尘,我不怕把自己的名誉交给他去做应有的评价。因为,之后他才能完全了解我的工作性质及其成果的价值。

    20世纪40年代哈弗大学的计算实验室霍华德-艾肯博士位设计计算机查阅资料的时候,看到巴贝奇的相关著作和论述。自此,人们才逐渐意识到巴贝奇关于计算机设计思想的正确性和重要性,其贡献被认为是计算机发展历史上的一座里程碑。

    模拟计算机

    巴贝奇的计算机器直接使用数字进行运算,在其遇到挫折后,人们转而研制模拟计算器进行计算。所谓模拟计算机器,是把数字转化为长度尺度,对长度尺码计算算后,再把运算结果转化为数字。比如1855年,物理学家麦克斯韦发明积分仪,通过两个垂直的圆盘旋转与滑动,把积分运算转换为长度量的模拟。19世纪60年代初,詹姆斯-汤姆森改进,形成了新的积分仪。1930年,美国麻省理工学院的范内华-布什利用六台汤姆森积分仪和纽曼发明的力矩仪制成一台微分分析仪 - 用它来解微分方程。它由50英尺长,由一系列转盘,杠杆和用手工安装的转筒组成,它可以被看作是一个巨大而笨重的计算尺,需要几个人共同操作,才能运转。

    尽管这一时期的模拟计算机器得以发展,但是计算需要至少两次数字与模拟量之间的转换 - 先有数字转化为物理模拟量参与运算,后来把模拟量的运算结果转化为数字 ,造成误差比较大,难以满足复杂运算需要的精度。

    由于这些原因,最后人们不得不又转向数字计算机的研制。

    机电计算机及其商业化

    19世纪末到20世纪初,是人类技术发展史上重要的阶段。人类走过了蒸汽时代,跨入了电力时代。1865年美国内战结束后,工业化迅速发展,经济实力迅速增强。19世纪80年代,美国工业产值超过英国,居世界首位。世界科技中心也逐渐转移到了美国。
    美国早期的计算机也是机械式的,之后模拟计算机也得到发展,随着模拟计算机缺点暴露出来,人们转而研究数字计算机。但是机械计算机需要精密制造工艺比较高,延迟大,计算速度慢的问题需要解决。得益于电力和电工技术的发展,人们转而希望通过电器元件替代机械计算机器中的齿轮和传动部件。


    霍普利斯的电动制表机

    1884年,霍普利斯(H. Hollerith , 1860-1929)利用电器元件发明了电动制表机,此机器在美国人口普查中得到广泛使用。在设计机器中应用了电学原理和二进制思想,是巨大的进步。在随后1896年,他成立一家电动制表机,用来满足人口普查和统计制表需要。
    霍普利斯的制表机有一些缺点,后被俄罗斯移民杰姆斯-鲍尔斯发现后,进行改进,使其性能得到大幅度的提升,被美国移民局指定为1910年人口普查的专用机器,鲍尔斯迅速成立了自己的电动制表机公司与霍普利斯展开激烈竞争。
    霍普利斯由于技术及经营问题,逐渐失利,最后被迫与另外两家公司合并成为计时-制表-计量公司(CRT), 该公司靠计时钟挣钱,计量秤具和制表机仅能维持收支平衡。为了扭转局势CRT公司董事会决定寻求经营管理者带领公司走出困境,他们向美国现金出纳公司的二号人物-副总裁托马斯-沃森发出了邀请。

    托马斯-沃森出(Thomas J. Watson,1874-1956)任CRT 公司经理后,调整公司的经营策略。他依靠出色的推销技巧和对制表机市场前景的信心拿到了银行的贷款,进而改进老旧的制表机提高其性能夺回了市场。同时,在不断开拓办公室会计出纳业务市场,推出满足新需求的电动制表机;另一方面,不在出售电动制表机,而是改为出租机器的方式,保留所有权避免用户改进机器,控制技术所有权。在他的推动下,电动制表机逐渐成为公司盈利的主导性产品。1924年,托马斯-沃森出于公司发展业务的需要,把公司名改为国际商用机器公司,简称IBM公司。

    在利用电器元件制造计算机方面,德国工程师祖斯(K.Zuse, 1910 - ?)也进行尝试。1928年他制造机械计算机后,计算速度慢的特点迫使他尝试电磁继电器制造计算机的实践,1941年制造出了Z3型电式计算机,采用了浮点计数,二进制计算并使用了数字存储地址指令形式。可惜,由于战争影响不为外界所知,在美苏轰炸柏林中被损毁。

    Mark - I

    美国哈佛大学的霍华德-艾肯博士(H.Aiken, 1900-1973)相对比较幸运, 他最初由于需要求解非线性常微分方程,便制造出这种计算机器后,萌生制造通用计算机的想法。在搜集资料的过程中,他看到了巴贝奇教授的关于分析机的著作,受到启发准备采用机械和电气元件制造自己的计算机。但是,哈佛大学无法提供50万美元的资金支持。1939年IBM公司的沃森提供100万美元的资金和设备,艾肯负责设计和研制,IBM负责生产。经过五年努力,机器于1944年8月研制成功,命名为“自动顺序控制计算机”,型号为马克-I (Mark - I)。这台计算机运算字长32位十进制数,运算速度比机械式计算机快很多,两个23位数相乘只需要4.3秒即可得到乘积。由于,在产品发布会上,艾肯博士只附带提到IBM公司对这台计算机做的贡献,没有很好宣传该公司,导致随后研制新型计算机没能获得IBM公司的资金支持。但美国海军对艾肯博士进行了资助,艾肯博士于1946年研制出了马克-II (Mark - II ),完全采用电磁继电器进行研制。马克-II在美国海军的武器研制制造中,发挥了重要作用。

    在同一时期,美国新泽西州贝尔实验室的乔治-斯蒂比茨(G.R.Stibitz)也进行机电式计算机的研制。1940年,他研制的第一台计算机是主要用于电网复数运算的专用计算机(Model.1号),之后又研制初MODEL.5 号计算机。

    相关文章

      网友评论

          本文标题:现代计算机思想的萌芽

          本文链接:https://www.haomeiwen.com/subject/ivdazxtx.html