艾达与第一台计算机_互动科普

使用社交账号登录

购买价格:
付款方式:

互动科普

主页 > 科普纵览 > 信息 • 能源

艾达与第一台计算机

admin  发表于 2017年11月21日

艾达与第一台计算机

Eugene Eric Kim,Betty Alexandra Toole

艾达与第一台计算机 1.png

拉弗勒斯伯爵夫人艾达与计算机先驱查尔斯·巴贝吉之间的合作,诞生了介绍如何为世界上第一台计算机编制程序的划时代著作。

人们常因奥古斯塔·艾达·金的父亲行为怪异而说他“癫狂乖戾”,但他更为人们熟悉的身份则是著名诗人拜伦勋爵。艾达继承了地那位大名鼎鼎的父亲的写作本领和他对生活的激情。她是一位漂亮而多情的女性,喜欢周旋于英国上流社会,去世时年仅36岁(她父亲也是36岁时去世的)。而且,同拜伦一样她也因她的某些著作而闻名。

1843年,艾达公布了一批影响颇广的笔记,在这些笔记中她介绍了世界上第1台自动的通用计算机器,即查尔斯巴贝吉的分析机(AnalyticaI Enginc)。虽然分析机从未建造出来——主要是因为巴贝吉无法筹集到足够的资金来制造它——但艾达的笔记却包含了一个利用分析机来计算被称为“伯努利数”的一系列数字的程序。

艾达的笔记确立了她在计算机科学中的重要地位,但是她那灿烂多姿的生活以及她的出身——还有她在一个女性的地位从来就远低于男性的研究领域中所扮演的女性先驱者的角色——近来却使她变成了个偶像,除了关于她的许多传记作品之外,她的经历也启发诸如汤姆斯·托帕克和阿瑟·C·克拉克等名人写出若干剧本和小说。1999年2月,福克斯罗伯发行了一部大致根据她的经历拍摄的电影,名为“构想艾达”(Conceiving Ada)。虽然为推动计算机科学的发展作出贡献的女性为数不少,但只有艾达的名字被拿来为一种计算机语言命名,此种语言主要用于军事和航空航天等部门。

艾达与第一台计算机 2.png

毋庸奇怪,艾达对计算机科学的贡献有时被夸大,有时却被贬低,而她真正的成就在该领域的历史学家中引起了争议。例如,许多人声称艾达是第一位编写计算机程序的人,但这种说法并不正确(为巴贝吉的分析机编写第一批程序的是巴贝吉本人而非艾达,不过太多数程序从未发表过)。其他一些人则对艾达笔记中所记载的程序是否系艾达所作,乃至对这些笔记本身是否出自艾达之手提出了有失公允的质疑。

同大多数这类事情的情况一样,真相必定是介于上述两种极端看法之间。巴贝吉称艾达是他的“阐释者”,这是对艾达的贡献的最恰当的评价。巴贝吉的确与艾达讨论过她的笔记并审阅了初稿,但艾达本人是这些笔记的作者这一点不可能有任何疑问。虽然巴贝吉的开创性工作构成了艾达的笔记及其思想的基础,但艾达明晰流畅的行文体现了她对于分析机的重要意义及其多种可能情况的独到见解。

年轻的数学家

奥古斯塔·艾达·拜伦1815年12月10日生于伦敦,她是拜伦勋爵和与他只有11个月婚姻关系的妻子、数学家安娜贝娜·米尔班克的女儿。在艾达出生之时,安娜贝娜已经对她与拜伦的婚姻有所保留,谣传拜伦同他的异父姐妹有染(该谣言极有可能是安娜贝娜的表姐妹卡洛琳·兰布编造出来的),于是安娜贝娜以此为由同拜伦分手。拜伦于1816年离开英国,此后再没有见过他的女儿。

艾达与第一台计算机 3.png

拜伦夫人将女儿艾达培养成一位数学家与科学家,但对她的文学爱好则泼冷水,部分是为了不让她走她父亲的道路。艾达受到了极为良好的教育:在数学方面,她得到了玛丽·索默维尔(这位杰出的科学家最为人所知的成就是翻译了法国数学家兼物理学家皮埃尔-西蒙·拉普拉斯的著作)和逻辑学家兼数学家奥古斯都·德·摩根的指点。

艾达所受的数学教育在那个时代是非同寻常的,即使对于一位出身贵族门第的人来说也是如此。十九世纪前半期,数学研究在欧洲大陆上繁荣兴旺,但在英国却是步履蹒跚。在艾达的青年时代,数学家德·摩根,乔治·皮柯克以及他的大学朋友查尔斯·巴贝吉为振兴英国的数学助了一臂之力。但是对青年人(特别是青年女性)的数学教育的状况依然不佳。不过,在德·摩根的指点下,艾达相当熟练地掌握了代数、逻辑和微积分学的原理。

1833年6月5日,17岁的艾达出席了一次社交聚会,在聚会上她结识了巴贝吉这位4l岁的单身汉,在政治上的狂热情绪和激进思想同他在数学与经济学上的成就一样出名。在这次见面后几个星期,巴贝吉让艾达看了他已部分完成的差分机(Difference Engine),即一种早期的计算机器[参看“Scientific American”1993年2月号“Redeeming Charles Babbage’s Mechanical Computer”一文]。艾达迷上了这台机器,在其后的几年中,她一直密切注意着差分机的发展动向,阅读有关这种机器的不多的几篇公开发表的文章,并同巴贝吉讨论了差分机。

巴贝吉把差分机设计成一种可以生成数学表格的机器,使“机械“的计算步骤实现自动化。虽然它的效率不错,但它的计算却有很大的局限性它只能做加减法并解一类多项式方程(如O=a+bx+cx2+dx3…)。

艾达与第一台计算机 4.png

但是巴贝吉已经开始考虑更大更好的机器,随着他和艾达之间的友谊的加深,他开始向艾达介绍他正在设计的一台新机器,这台机器将比差分机先进得多,他称其为分析机,并把自己一生中余下的38年时间全部用来改进此机器的设计方案。

与巴贝吉合作

按照巴见吉的设计方案,分析机将不存在差分机的那些局限性分析机用来解决一般的计算问题,它的体系结构同今天的现代计算机非常相似、由一个“仓库”(存储器)、一个“车间“(中央处理器,即CPU)和一个穿孔卡读出装置(输入器件)构成。巴贝吉打算依靠穿孔卡来给数据输入编程(这是受提花织机的启发而想的一个主意,提花织机利用这种卡片来自动地编织花样),分析机的输出采取打印纸页或穿孔卡的形式。分析机可以做加法、减法、乘法和除法等计算,并且能够够根据某些条件来执行或重复一组指令(如果X、则Y);在现代计算机科学中这是被称为“条件转移”的一项基本原则。

1840年,巴贝吉在意大利都灵市向一群数学家和物理学家作了关于分析机的第一次也是唯——次公开介绍。到场的人中有一位名叫Luigi Federico Menabrea的青年数学家(意大利后来的首相),他在会上作了记录根据他的记录以及巴贝吉的另外些笔记,他用法文发表了一篇题为“分析机概述”的文章。

Menabrea把他的注意力主要集中在差分机和分析机的数学原理上而不是其摹本的机械运行过程上。Menabrea概略介绍了分析机的各个元件的用途,并意识到这台机器将能够计算用穿孔卡适当地表示(即编程)的所有代数公式。他写道:“穿孔卡只是代数公式的一种翻译,更确切地说就是另外一种分析记号。”

艾达——那时她已嫁给了拉弗勒斯伯爵威廉·金,从而成了拉弗勒斯伯爵夫人——读了Menabrea的论文,并着手把它翻译为英文。巴贝吉仍是艾达的好朋友,他在1843年初听说了艾达的工作后,便鼓励她给译文作注解。

巴贝吉的这个建议开创了一项重要的合作研究,此项合作最终导致艾达发表了第1篇详尽探讨计算机编程的论文。它将成为此后一个世纪时期中唯一的一篇有关此问题的论文。她共加入了7篇注释(注释A到注释G,这些注释合起来比Menabrea的论文的两倍还长。一个重要的内容是用提花织机的穿孔卡来给分析机编程这种能力的重要意义。艾达写道,分析机的与众不同的特性就是,它采用了提花织机生产锦缎织物时通过穿孔卡来调控最复杂的花样的原理。分析机是像提花织机编织花朵和叶子图形那样“编织”代数花样,实在是再恰当不过了。对于织布(或者进行计算)来说,穿孔卡是特别巧妙的解决办法,因为借助穿孔卡可以自动地生成任何需要的花样(或方程)。

艾达与第一台计算机 5.png

艾达又进而详细阐述了Menabrea的叙述,并考察了为分析机编程的最详尽细节。例如她强调指出了分析机根据某些条件而转移到不同指令上这一能力在计算中的重要性,并分清了理论上能够计算的问题和实际上无法解决的问题,艾达也提到了分析机能够重复使用代码的好处。此外,在介绍分析机的符号处理能力时,她谈到该机创作音乐的潜力:“例如,假定和声学中各种音调的声音与音乐创作之间的基本关系容许这样的表达与改造,那么分析机就或许会创作出无论多么复杂或宏大的精美的科学音乐作品。”

最后,艾达驳斥了一种说法,即分析机像人那样进行“思考”。她宣称:“分析机根本没有资格称得上是具有独创能力的东西,它可以做我们知道如何指挥它去做的任何事情。”一个世纪之后,阿兰·M·图灵在一次具有划时代意义的关于人工智能的演讲中把艾达的这一看法称之为“拉弗勒斯夫人的反驳”,从而使其广为人知。

艾达注释的其余部分讲的是给分析机编程的机械问题,包括对穿孔卡机械装置以及对编写程序的记号的说明。如果像Menabrea在他的论文中所说那样(艾达也再次肯定了这一点),穿孔卡仅仅表示一个代数公式,那么就还必须有一套严格的记号以便把公式在穿孔卡上表示出来。巴贝吉已采用了一种表格形式来表示程序,艾达在她的注释中对其作了改进。

艾进的注释的结尾是她为计算伯努利数编写的一个程序。瑞士数学家雅各布·伯努利在一部关于概率论的经典著作中介绍了这些数(该书名为“猜测的艺术”,1713年首次出版)。艾达计算伯努利数的程序展示了分析机的条件转移的能力。它使用了两个循环,艾达的程序此巴贝吉为分析机编写的任何程序都要气派得多,复杂得多。

关于艾达的上作,历史学家们所了解的情况都来自艾达与巴贝吉的通信巴贝吉的笔记和自传以及艾达所写的注释本身,这些注释发表于理查德泰勒的“科学回忆录“(Scientific Memoirs)书中在保存下来的。艾达与巴贝吉的往来书信中,大部分是艾达写的,遗憾的是,艾达自己的笔记本已经丢失了。她的笔记本本来是可回答有关她的认识历程的许多问题的。

巴贝吉和注释

艾达在1843年2月到9月间整理出她的注释,这段时期中她常常同巴贝吉讨论她的进展情况,有时是通过书信讨论,有时则是面对面地讨论。虽然艾达依靠巴贝吉来解释分析机内部的工作机制井证实她的描述是准确的,但她的独到见解也常常令巴贝吉大吃一惊。例如,巴贝吉回信说,“在读了注释A的初稿后,我非常不愿意把你的这份令人钦佩而富有哲理的注释A寄还给你。请不要改动它,你不可能单凭直观获得所有这些认识。我越是读你的注释,就越是感到惊异不已,并懊恼自己为什么没有早点来发掘这个蕴藏着最宝贵的金属的矿藏。”

虽然艾达征求巴贝吉的意见,并且表示可以考虑有关其注释内容的建议,但她却不愿意对注释作任何修改。1834年8月,即注释的最终校样付印前一个月,巴贝吉想在她的注释中插入一段前言,抱怨英国政府没有为他的分析机提供支持。艾达对此很不高兴,给他写了一封措辞激烈的信。他们最终还是解决了这一分歧——巴贝吉的前言以匿名的形式单独发表。

在1843年7月致巴贝吉的一封信中艾达写道,“我想把关于伯努利数的某些内容作为一个例子加入我的注释中,以说明分析机可以如何计算一个隐函数,而无须先通过人来解出这个函数,请给我提供必要的数据与公式。”(两年前艾达已经向德·摩根学习过伯努利数,但她显然需要重温一下对产生这些数的公式的记忆。)

从这封信中可以清楚地看出两点,第一,加入一个计算伯努利数的程序是艾达的主意,第二,巴贝吉至少提供了计算伯努利数的公式。21年后他在自己的自传“一位哲学家生平的片断”(Passages from the Life of a Philosopher)中证实了此事。我们无法确切知道在伯努利数程序上巴贝吉给了艾达多大的帮助,只要有适当的公式,艾达肯定能够自己写出这个程序,这从她对编程过程理解的深度以及从她对巴贝吉的编程记号的改进上可以清楚地看出来。此外,巴贝吉和艾达在那段时间的往来书信似乎也表明巴贝吉的贡献仅限于数学公式,而艾达自已创作了该程序。在研究这个程序时,艾达写信给巴贝吉说,“我整天一直不停地工作,获得了极大的成功——你会非常喜欢这些表和图,它们是极为仔细地编制出来的,所有下标都非常细致、非常认真地考虑到了。”

艾达决定编写这样一个程序的重要意义无论怎样说也不会过分。此前,巴贝吉已经在他1836和1837年的笔记中为分析机编写过几个较小的程序,但其中任何程序的复杂性都远逊于伯努利数程序的复杂性。鉴于艾达早年所受的教育,她对于伯努利数的性质至少是熟悉的,很有可能是艾达已经意识到一个伯努利数程序将会巧妙地展示分析机的某些关键特征,例如条件转移。此外,由于Menabrea在他的论文中也曾提到过伯努利数,艾达的这个程序就同她翻译的Menabrea论文完美地配合起来了。

最后,在讨论艾达的成就时,如果不提到伦敦大学的Dorothy Stein,这样的讨论将是不完整的。Stein可能是最直言不讳地批评艾达的人,在1985年出过一本名为“艾达的生活与遗产”(Ada:A Life and a Legacy)的著作。她的论点之一是,艾达是一位并不高明的数学家,不可能独自编写出伯努利数程序。此后其它一些人也曾表示过这种看法。

Stein主要是凭两项证据而得出她的上述结论的。首先,她指出了艾达在翻译Menabrea的论文时出现的一个数学错误——她把法文原文的一处排印错误译成了数学上不可能成立的一个陈述。Menabrea的原文在此处是“le cos de n=∞”,而本来应该是le cas de n=∞”。正确的翻译应为“in the case of n=∞”(当n为无穷大时)但艾达却照着印错了陈述直译为”When the cos n=∞”(当cos(n)为无穷大时),而这在数学上是不可能的。

其次,Stein引用了艾达与她的指导教师之间的若干往来书信,这些信件表明艾达在函数代换(即通过用函数的恒等式替换函数来证明公式)这一概念上遇到了麻烦。Stein于是写道,“如果此类证据没有这样多的话,要说艾达这样一个在生前及死后均被吹捧为数学天才的人对这个数学概念掌握得相当差,那简直是令人难以置信的。”

艾达的确错译了Menabrea的一处陈述,但把这一错误归因于她的数学水平不高却是不公平的。这并不是她的译文中唯一的一处错误:在最后一篇注释中,她甚至把自己姓名的首字母缩略形式错写成“A. L. L”而不是“A.A.L”。她的65页译文和注释均经巴贝吉和其它一些人审阅过,而这些审阅人同样未看出上述错误。

Stein责备艾达不懂得函数代换是一个值得更加认真看待的批评意见,因为函数代换对于计算机程序设计人员来说是一个至关重要的概念。但是,必须记住,当时代数在英国是一门尖端的数学分支,而艾达仅是通过通信来学习数学的。由于意识到她的指导教师们辅导她的学习是不收分文费用的,因此她有可能只是向这些教师请教她还没有弄懂的问题,而不是讨论她已经掌握了的那些概念。她后来的书信中所显示出来的对数学知识的纯掌握,证明了尽管艾达在开始整理她的注释之前有可能在函数代换这一概念上遇到过麻烦,但极有可能在开始撰写注释时已经理解了这个概念。

艾达的身体状况在她的整个一生中都是时好时差,在1843年之后更是每况愈下,从而限制了她从事数学研究的能力。她在1852年11月27日逝世,可能是死于子宫癌。根据她的愿望,她被安葬在她父亲的墓旁。她的研究工作直到1953年都基本上不为人所知。那一年,BertramV. Bowden编辑了一本介绍计算机发展历史的著作,名为“比思维还快”(Faster than thought).该书提到了艾达的工作,并称她为“预言家”,许多现代计算机的先驱者最终都了解到巴贝吉的工作和艾达的论文,但他们全都是独自得出其观念上的突破性进展的。在1944年设计并建造出Mark I型机的哈佛大学教授霍华德·艾肯喜欢把自己说成是巴贝吉的一位直接后继者,但是他并不熟悉艾达的工作,也未能意识到条件转移的重要性。

我们现在所知道的有关计算机的设计和编程方面的知识或许不能直接追溯到巴贝吉和艾达,但他们完全有资格享有最先提出其中某些概念的荣誉。而且,特别值得一提的是,艾达已经成了一位其生活和工作仍然在激励着今天的许多计算机科学家发挥其想象力的人物。

【郭凯声/译;冉隆华/校】

全部评论

你的评论