携手共赴难
就在痛苦艰难的时刻,孤独苦闷的巴贝奇意外地收到一封来信,写信人不仅对他表示理解而且还希望与他共同工作。娟秀字体的签名,表明了她不凡的身份──伯爵夫人。
接到信函后不久,巴贝奇实验室门口走进来一位年轻的女士。她身披素雅的斗蓬,鬓角上斜插一朵白色的康乃馨,显得那么典雅端庄。巴贝奇一时愣在那里,他与这位女士似曾相识,又想不起曾在何处邂逅。女士落落大方地作了自我介绍,正是那位写信人。
“您还记得我吗?”女士低声问道,“十多年前,您还给我讲过差分机原理。”看到巴贝奇迷惑的眼神,她又笑着补充说:“您说我像野人见到了望远镜。”巴贝奇恍然大悟,想起已经十分遥远的往事。面前这位女士和那个小女孩之间,依稀还有几分相似。
原来,伯爵夫人本名叫阿达·奥古斯塔(Ada Augusta),是英国著名诗人拜伦的独生女。她比巴贝奇的年龄小20 多岁,1815 年出生。阿达自小命运多舛,来到人世的第二年,父亲拜伦因性格不合与她的母亲离异,从此别离英国。可能是从未得到过父爱的缘由,小阿达没有继承到父亲诗一般的浪漫热情,却继承了母亲的数学才能和毅力。
还是在阿达的少女时代,母亲的一位朋友领着她们去参观巴贝奇的差分机。其他女孩子围着差分机叽叽喳喳乱发议论,摸不着头脑。只有阿达看得非常仔细,她十分理解并且深知巴贝奇这项发明的重大意义。
或许是这个小女孩特殊的气质,在巴贝奇的记忆里打下了较深的印记。他赶紧请阿达入座,并欣然同意与这位小有名气的数学才女共同研制新的计算机器。就这样,在阿达27 岁时,她成为巴贝奇科学研究上的合作伙伴,迷上这项常人不可理喻的“怪诞”研究。其时,她已经成了家,丈夫是洛甫雷斯伯爵。按照英国的习俗,许多资料在介绍里都把她称为“洛甫雷斯伯爵夫人”。
30 年的困难和挫折并没有使巴贝奇屈服,阿达的友情援助更坚定了他的决心。还在大型差分机进军受挫的1834 年,巴贝奇就已经提出了一项新的更大胆的设计。他最后冲刺的目标,不是仅仅能够制表的差分机,而是一种通用的数学计算机。巴贝奇把这种新的设计叫做“分析机”,它能够自动解算有100 个变量的复杂算题,每个数可达25 位,速度可达每秒钟运算一次。
今天我们再回首看看巴贝奇的设计,分析机的思想仍然闪烁着天才的光芒。由于巴贝奇晚年因喉疾几乎不能说话,介绍分析机的文字主要由阿达替他完成。阿达在一篇文章里介绍说:“这台机器不论在可能完成的计算范围、简便程度以及可靠性与精确度方面,或者是计算时完全不用人参与这方面,都超过了以前的机器。”巴贝奇把分析机设计得那样精巧,他打算用蒸汽机为动力,驱动大量的齿轮机构运转。巴贝奇的分析机大体上有三大部分:其一是齿轮式的“存贮库”,巴贝奇称它为“仓库”(Store),每个齿轮可贮存10 个数,齿轮组成的阵列总共能够储存1000 个50 位数。分析机的第二个部件是所谓“运算室”,它被巴贝奇命名为“作坊”(Mill),其基本原理与帕斯卡的转轮相似,用齿轮间的啮合、旋转、平移等方式进行数字运算。为了加快运算速度,他改进了进位装置,使得50 位数加50 位数的运算可完成于一次转轮之中。第三部分巴贝奇没有为它具体命名,其功能是以杰卡德穿孔卡中的“0”和“1”来控制运算操作的顺序,类似于电脑里的控制器。他甚至还考虑到如何使这台机器处理依条件转移的动作,比如,第一步运算结果若是“1”,就接着做乘法,若是“0”就进行除法运算。此外,巴贝奇也构思了送入和取出数据的机构,以及在“仓库”和“作坊”之间不断往返运输数据的部件。
阿达“心有灵犀一点通”,她非常准确地评价道:“分析机‘编织’的代数模式同杰卡德织布机编织的花叶完全一样”。于是,为分析机编制一批函数计算程序的重担,落到了数学才女的肩头。阿达开天辟地第一次为计算机编出了程序,其中包括计算三角函数的程序、级数相乘程序、伯努利函数程序等等。阿达编制的这些程序,即使到了今天,电脑软件界的后辈仍然不敢轻易改动一条指令。人们公认她是世界上第一位软件工程师。
众所周知,美国国防部据说是花了250 亿美元和10 年的光阴,把它所需要软件的全部功能混合在一种计算机语言中,希望它能成为军方数千种电脑的标准。1981 年,这种语言被正式命名为ADA(阿达)语言,使阿达的英名流传至今。不过,以上讲的都是后话,殊不知巴贝奇和阿达当年处在怎样痛苦的水深火热之中! 由于得不到任何资助,巴贝奇为把分析机的图纸变成现实,耗尽了自己全部财产,弄得一贫如洗。他只好暂时放下手头的活,和阿达商量设法赚一些钱,如制作什么国际象棋玩具,什么赛马游戏机等等。为筹措科研经费,他们不得不“下海”搞“创收”。最后,两人陷入了惶惶不可终日的窘境。阿达忍痛两次把丈夫家中祖传的珍宝送进当铺,以维持日常开销,而这些财宝又两次被她母亲出资赎了回来。
贫困交加,无休止的脑力劳动,使阿达的健康状况急剧恶化。1852 年,怀着对分析机成功的美好梦想,软件才女英年早逝,死时年仅36 岁。阿达去世后,巴贝奇又默默地独自坚持了近20 年。晚年的他已经不能准确地发音,甚至不能有条理地表达自己的意思,但是他仍然百折不挠地坚持工作。1871 年,为计算机事业贡献毕生精力的先驱者巴贝奇,终于满怀着对分析机无言的悲怅,孤独地离开了人世。有人把他的大脑用盐渍着保存起来,想经过若干年后,有更先进技术来研究他大脑保存的精神。
分析机终于没能造出来,巴贝奇和阿达失败了。巴贝奇和阿达的失败是因为他们看得太远,分析机的设想超出了他们所处时代至少一个世纪!社会发展的需求和科学技术发展的可能,使得他们注定要成为的悲剧人物。尽管如此,巴贝奇和阿达为电脑科学留下了一份极其珍贵的精神遗产,包括30 种不同设计方案,近2000 张组装图和50000 张零件图……,更包括那种在逆境中自强不息,为追求理想奋不顾身的拼搏精神。
穿孔制表机
将国外出版的多媒体百科全书光盘插入电脑,然后键入“Punched card”(穿孔卡)作为关键词搜索。你会发现,电脑屏幕将从“Jacquard”(杰卡德)条目开始,连带着显示出早期计算机发展简史。紧靠着“杰卡德”词条的,是另外一个姓名“H.Hollerrith”。
该词条解释说,穿孔卡是早期计算机输入信息的设备,通常可以储存80 列数据。它是一种很薄的纸片,面积为190×84 毫米。首次使用穿孔卡技术的数据处理机器,是美国统计专家霍列瑞斯博士(H.Hollerith)的伟大发明。公元1880 年,美利坚合众国举行了一次全国性人口普查,为当时5000 余万的美国人口登记造册。当时美国经济正处于迅速发展的阶段,人口流动十分频繁;再加上普查的项目繁多,统计手段落后,从当年元月开始的这次普查,花了7年半的时间才把数据处理完毕。也就是说,直到快进行第二次人口普查时,美国政府才能得知第一次人口普查期间全国人口的状况。
霍列瑞斯博士是德国侨民,早年毕业于美国哥伦比亚大学矿业学院,学的是采矿专业。大学毕业后来到人口调查局,从事的第一项工作就是人口普查。他曾与同事们一起,深入到许多家庭,填表征集资料,深知每个数据都来之不易;他也曾终日埋在数据堆里,用手摇计算机“摇”得满头大汗,一天下来,也统计不出几张表格的数据。
人口普查需要大量处理的是数据,如年龄、性别等用调查表采集的项目,并且还要统计出每个社区有多少儿童和老人,有多少男性公民和女性公民等等。这些数据是否也可由机器自动进行统计?采矿工程师霍列瑞斯想到了纺织工程师杰卡德80 年前发明的穿孔纸带。杰卡德提花机用穿孔纸带上的小孔,主要用来控制提花操作的步骤,即编写程序,霍列瑞斯则进一步设想要用它来储存和统计数据,发明一种自动制表的机器。
人口调查局的业务异常繁忙,一个行政机构也不可能提供时间和经费让公务员搞什么科学研究。两年后,霍列瑞斯博士离开了人口局,到专利事务所工作过一段时间,也曾任教于麻省理工学院,一边工作,一边致力于自动制表机的研制。
霍列瑞斯首先把穿孔纸带改造成穿孔卡片,以适应人口数据采集的需要。由于每个人的调查数据有若干不同的项目,如性别、籍贯、年龄等等。霍列瑞斯把每个人所有的调查项目依次排列于一张卡片,然后根据调查结果在相应项目的位置上打孔。例如,穿孔卡片“性别”栏目下,有“男”和“女”两个选项;“年龄”栏目下有从“0 岁”到“70 岁以上”等系列选项,如此等等。统计员可以根据每个调查对象的具体情况,分别在穿孔卡片各栏目相应位置打出小孔。每张卡片都代表着一位公民的个人档案。
霍列瑞斯博士巧妙的设计在于自动统计。他在机器上安装了一组盛满水银的小杯,穿好孔的卡片就放置在这些水银杯上。卡片上方有几排精心调好的探针,探针连接在电路的一端,水银杯则连接于电路的另一端。与杰卡德提花机穿孔纸带的原理类似:只要某根探针撞到卡片上有孔的位置,便会自动跌落下去,与水银接触接通电流,启动计数装置前进一个刻度。由此可见,霍列瑞斯穿孔卡表达的也是二进制信息:有孔处能接通电路计数,代表该调查项目为“有”(“1”),无孔处不能接通电路计数,表示该调查项目为“无”(“0”)。
直到1888 年,霍列瑞斯博士才实际完成自动制表机设计并申报了专利。他发明的这种机电式计数装置,比传统纯机械装置更加灵敏,因而被1890 年后历次美国人口普查选用,获得了巨大的成功。例如,1900 年进行的人口普查全部采用霍列瑞斯制表机,平均每台机器可代替500 人工作,全国的数据统计仅用了1 年多时间。虽然霍列瑞斯发明的并不是通用计算机,除了能统计数据表格外,它几乎没有别的什么用途,然而,制表机穿孔卡第一次把数据转变成二进制信息。
在以后的计算机系统里,用穿孔卡片输入数据的方法一直沿用到20 世纪70 年代,数据处理也发展成为电脑的主要功能之一。
依托自己发明的制表机,霍列瑞斯博士“下海”创办了一家专业制表机公司,但不久就因资金周转不灵陷入困境,被另一家CTR 公司兼并。1924 年,CTR 公司更名为“国际商业机器公司”,英文缩写“IBM”,专门生产打孔机、制表机一类产品。
杰卡德和霍列瑞斯分别用开创了程序设计和数据处理之先河。以历史的目光审视他们的发明,正是这种程序设计和数据处理,构成了电脑“软件”的雏形。