技术与社会发展到现在,我们不难发现,现代人的生活已经与计算机及其衍生的科学紧紧联系在一起。算法、数据、代码……90后与00后似乎天生懂得这些语汇,甚至成为了互联网的“原住民”。
那么,在科学技术史的洪流中,是谁敲下第一行代码?谁是史上第一位程序员?用程序来运行计算机的奇思妙想又是怎样形成的?对于这些问题,商务印书馆的新书《埃达·洛夫莱斯:史上第一位程序员》,应该可以给出充分的回答。
《埃达·洛夫莱斯:史上第一位程序员》,[英]克里斯托弗·霍林斯、[英]厄休拉·马丁、[美]阿德里安·赖斯 著,柯遵科、单雯 译,商务印书馆2021年8月版。
幼时的埃达已经对数学产生很大兴趣
本书共分为九章,第一章概述了埃达·洛夫莱斯所在时代的科学进步,尤其是浓厚的数学学习氛围,为她的数学天赋做出注脚;二至九章回顾了埃达的成长历程,从她的数学童年讲起,到她与导师和同行业者的学术交流,以及最终写出第一套程序的过程和对后世的影响。作者展示了大量的档案、重要通信材料、数学模型和绘图等,为我们勾勒了史上第一位程序员埃达·洛夫莱斯短暂而又绚烂的一生。书中也有大量数学原理和公式,但译者通过准确而诗意的语言,将之融入具体的情节中,让看似高难的数学也变得平易近人起来。因此,在阅读时,读者可以将之当成一本人物传记,也可以当成一本数学科普读物,享受数学的神秘与奇妙。
埃达·洛夫莱斯,1815年生于伦敦,浪漫主义诗人拜伦之女,自幼对数学兴趣浓厚。后虽成为尊贵的伯爵夫人,但她并不满足于夫人社交,而是与科学家交往甚密。哪怕生活在19世纪上半叶,当时的女性地位无法与今日相提并论,埃达还是用自身的努力在科学史上写下属于自己的一笔。她编写的首套“程序”于1843年发表。她也因此常被称为“第一位程序员”。
作者在为埃达作传时的最大特点,不是简单按照时间线叙述埃达的个人经历,而是将她时时刻刻放在所处的时代之中,用历史的眼光考量女性科学家在当时出现的原因和意义。
本书的第二章的题目是“数学童年”。而在这之前,作者描绘了一个科学的时代,甚至可以称之为“数学时代”。那时,不仅是科学精英,而且有越来越多的普通人,不论男女都热衷于了解新思想。特别是数学的地位日益提高,人们逐渐意识到数学的重要性和它在研究自然现象及社会现象中所起的作用。有机会接受教育的年轻人,都学过代数,会解简易的方程,或是在天文观测过程中接触过几何学。
埃达就是成长于这样一个数学时代。幼时“聪慧开朗”的埃达已经对数学产生很大兴趣。五六岁时,在家庭教师的指导下“她已经可以做五六行数字的求和,计算过程有条不紊,准确无误。”十岁时,她在与母亲的通信中就开始请教“三数法则”(即等比关系)。十二岁时,埃达开始接触欧几里得几何,“觉得有趣极了”。虽然她承认“有点害怕定理”,但她也下定决心“尽我所能,大胆地战胜它们”。作者用很多细节证明:埃达是一个聪慧、好奇又顽强的孩子,她注定会继续学习更高级的数学,并乐在其中。
长大后,在给母亲的朋友威廉·金博士的求助信中,埃达表达了她学习纯数学课程的渴望,其中要包括算术、代数和几何。因为她并不满足于当时惯用的学习方法——通过死记硬背欧几里得几何学的部分内容来应付考试。埃达还结识了玛丽·萨默维尔,后者大概是当时英国仅有的能靠数学赚钱的女性,也是首批入选英国皇家天文学会的女会员。哪怕在结婚之后,埃达与萨默维尔也维持了很长时间的通信。作者提及这些人,固然是要表现埃达的杰出,但在那个时代,即使埃达拥有财富、地位和独立的思想,还有一位支持她的丈夫相伴,甚至与同时代的男性和女性科学精英交往甚密,她还是受制于当时的社会和家庭对她的期望,不得不仰仗朋友才能获得科学教育。
埃达·洛夫莱斯画像
埃达身上最值得书写和记录的地方是什么?
与埃达同时代的男性科学家,特别是她的两位老师——以“德·摩根定律”而闻名至今的奥古斯都·德·摩根和发明“分析机”的查尔斯·巴贝奇,名气都比埃达大得多。那么,在这样的背景下,埃达身上最值得书写和记录的地方是什么?作者的观点是:埃达·洛夫莱斯的数学成就彰显她精益求精的科研态度,致力于从基本原理出发解决问题和攻克重大问题的决心。
埃达与老师德·摩根的通信,清楚地记录了埃达在最初基础数学时遇到的困难,以及她如何在克服困难的过程中学习。埃达有时感觉“我耗费的时间都是徒劳的”,也抱怨过某些方程式“完全是胡扯”。但是她最终还是掌握了如何学习:学习得慢慢来,从错误中学习,并对自身能力有一个现实判断。作者分析,从一开始,埃达就有一种求知若渴、积极向上的劲头,甚至有些操之过急,“真希望我能学得再快一点”。但是经过德·摩根的指导,埃达终于明白应该慢慢来。
在数学知识与日俱增之后,埃达甚至能够指出老师德·摩根的错误,认为他对于“等价形式的永恒性原理”的假设有很大漏洞。让作者认为最神乎其神的,是埃达对“永恒性原理”的质疑,这成功预测了“四元数”的提出,进而推动了“矢量”的发展。由此可见,她已经能够发现连专家们都忽略的数学难题。当然,有些研究成果并不能归功于埃达,但是她最初的惊人预测无不显示出超乎常人的洞察力。
埃达还和德·摩根讨论过“级数”“运算”“无差别”“伯努利数”的几篇文章,字里行间,无不展现她日益积累的数学知识和非凡的理解力。信中讨论的问题日后将成为埃达唯一出版过的著作的主题。
可能是遗传了父亲的诗意,埃达的数学研究充满了想象力。在探讨彩虹背后的理论时,她已经能够想到“是不是因为观看者的眼睛刚好在彩虹弧线所在圆的中心?”埃达甚至考虑过写数学诗:“这是一种独特的诗歌形式,可能要比世界上任何事物更哲学、更高级”。她在给母亲的信中说道:“想必您不会同意我写什么哲学诗歌,一定会说这简直违背常理!哪有什么诗意的哲学、诗意的科学?”这段话非常有名,充分体现了埃达数学思维的广度。
埃达最为人知的成就:为分析机编程
在本书的第七章,作者详细介绍了埃达为分析机编程的过程。这也是埃达最为人知的成就。
埃达的另一位导师查尔斯·巴贝奇,在当时想创造一种新型计算机器——分析机。它的原理与现在计算机的基础操作及运算一致。也就是说,分析机应该是一台艾伦·图灵所谓的机械式通用计算机,其编程通过打孔卡实现。
巴贝奇在一次演讲中将分析机的原理介绍到欧洲大陆。意大利科学家路易吉·梅纳布雷亚据此撰写了一份法语科学报告《分析机概论》。埃达与巴贝奇共同翻译了这篇文章。文章共计66页,其中41页注释都是埃达完成的。注释以字母A到G标记,其中最著名的是“注释G”,介绍分析机如何通过计算伯努利数完成编程。这一过程用一张巨大的数表来表示。
这张数表被视为“第一个计算机程序”,埃达则给出了更精确的描述:“这张表实现了运算过程中,机器各部分的所有连续变化”。换句话说,这个数表就是当今计算机科学家口中的“执行跟踪”。如果当时有“程序”,那么分析机的“程序”应该由一张穿孔卡片组成,从而保证机器连续运行。《分析机概论》的译文不仅彰显了埃达对数学细节的执着,也体现出她在思考更宏大图景上的想象力。
作者也承认,埃达这篇文章在那个时代难免曲高和寡。但在近两个世纪之后,文章读起来却通俗易懂。它涵盖代数、数学、逻辑甚至哲学知识,有对通用计算机不变原理的介绍,还有对所谓“第一个计算机程序”的详细描述,和对数据、卡片、内存、编程实践的概述。
埃达·洛夫莱斯“注释G”中的数表“图解分析机计算伯努利数”,即“最早的计算机程序”。
令人遗憾的是,在写完“注释G”后不到十年,埃达·洛夫莱斯就因为疾病缠身英年早逝,年仅36岁。诚然,她的一生并没有取得什么有深远意义的数学成就——从未做出任何重大的数学或科学发现。但是正如本书中的书信和手稿所示,埃达对数学的洞察力和理解力,对那个时代的女性而言几乎是独一无二的。这样看来,埃达的诗作《彩虹》,可能是她一生最好的写照:“一束隐秘的光永不熄灭,以最纯粹的色彩,穿透云层!”
因此,在本书最后,作者在为埃达没有做出更大成就而遗憾的同时,更多的是在赞颂她所取得的成就,并为读者提出了一个值得反思的问题:为何在那个时代不乏才华横溢的女性,有机会取得成就的却屈指可数?相信对于这个问题,每一个读到《埃达·洛夫莱斯:史上第一位程序员》的读者,都会有自己的答案。
作者丨孙思清
编辑丨重明
校对丨刘军