作者 | Aholiab

出品 | 程序人生 (ID:coder _life)

阿达·拉芙莱斯,一个 IT 圈里人人都听过的名字。被称为「程序员的开山鼻祖」,但也存在着旷日持久的争议。

探索关于 Ada 的一切,可能是最困难的事情之一。她的记载充斥着大量真假难辨的史料、艰涩的数学和机械原理、19 世纪英国上流社会的习俗、自身复杂的经历,还有「赛过唐顿不让简爱」的维多利亚时期的英语。那么真实的 Ada 究竟是怎样的?她究竟发明了什么?她到底是女英雄,还是一个被夸大的小人物?

在查考了大量的资料后,我对 Ada 逐渐有了不一样的认识。本文希望能从这些史料中抽丝剥茧,尽可能的还原真实的阿达·拉芙莱斯。

诗人拜伦的独生女

1815 年,「阿达-拜伦」出生在伦敦的一个贵族家庭。她的父亲「乔治·拜伦勋爵」是 19 世纪英国浪漫主义诗坛的天王巨星,母亲安娜贝拉·米尔班克则是一位拥有男爵头衔的典型的贵族女性。

可能是拜伦的性格太过叛逆和纯粹,安娜贝拉跟他只结婚一年,就带着只有5周大的 Ada 搬到了乡下的一个庄园里。

拜伦的狂野不羁给安娜贝拉留下了阴影,因此她从小就让女儿 Ada 接受全方位的理科教育:数学、化学、地理、语言、缝纫。而 Ada 也从小就对科学感兴趣,11 岁时,她在研究了鸟类的解剖结构和飞行动力学后,还构思了一个给马装上翅膀并用蒸汽来驱动的计划。

Ada 的少年时期与其他上流社会的小孩没有什么不同,11 岁游历欧洲、17 岁按照习俗到伦敦参加上流社会的社交活动,并见到了当时的英王「威廉四世」,后来她见过刚刚登基的维多利亚女王。因为是上流社会的一员,Ada 从小就接触过不少大名鼎鼎的人物,包括狄更斯、法拉第等,法拉第还夸她是「科学界冉冉升起的新星」。

当然,她还见到了改变了她人生轨迹的奇男子「查尔斯-巴贝奇」。

在一个巴贝奇的家庭派对上,41 岁的巴贝奇把 17 岁的 Ada 领进了自己的小屋,在那里向她展示了自己的毕生的研究成果——差分机。

 

改变命运的差分机

 

差分机就是个计算器,要说这个东西确实还有点用。只不过它被造出来的时候已经到了 21 世纪,电脑都普及了,所以这东西也只能放在博物馆里了。

众所周知,我们有一个计算乘法的武功秘籍叫「九九乘法表」,我们几乎可以用竖式快速计算出任意两个数的乘积。但在欧洲乘法运算可就费劲了,即使是两位数乘两位数的竖式运算对他们来说仍然非常困难,这时候就有人发明了一个叫「对数表」的东西。它通过「对 10 的对数的加减结果」,来得到两个数之间的乘积。

比如 37x59,37 等于 101.5682,59 等于 101.7709,1.5682 和 1.7709 就是 37 和 59 的对数(写作:log10(37)=1.5682),把这两个「对数」相加得到 103.3391,解 10 3.3391 等于 2183,这就是 37x59 的结果。

这……不是更复杂了吗?我怎么知道 37 的对数是几,10 3.3391 又是个什么鬼?你不知道老外就更不知道了,他们其实是把所有数字的「对数」都整理在了一张「对数表」上,计算的时候就去这张表上像查字典一样查一下,再去另一张「逆向表」里查一下等于多少,就得到了答案。

可这个对数表是哪来的呢?要计算出所有数的对数并整理成这张表也不是个小工程。巴贝奇看不惯这种情况,就想发明个机器,既能快速自动算出对数,又能确保准确性,所以构想了差分机。

简单来说,这个差分机的原理是,通过加减法把对数运算分解为几个步骤,然后自动生成「对数表」。它可以对任意数字的「对数」进行展开,还可以自动打印结果。

但这东西的设想过于精巧,在当时本没人能造得出来,在花了英国政府 17,500 英镑之后(约合今天 200 万磅),只做出了一个简单的原型,也就是在派对上给 Ada 看的那个。

直到 2002 年,差分机才按照巴贝奇的设计被完整地复原了出来,有整整一面墙那么大,几千个零件。最牛掰的是,这东西居然真的可以工作!

 

重拾数学

 

在第一次见到了巴贝奇和差分机之后,Ada 便对这种机器格外着迷。但在她开挂之前,她先是回家过了几年平淡的家庭生活。1835 年 19 岁的 Ada 嫁给了 30 岁的威廉,并先后生了三个孩子,Ada 一生与丈夫的感情都非常稳定,丈夫也在她的事业上给了她不少的支持。1838 年威廉受封为伯爵,从此「阿达·拜伦」正式成为了「阿达·拉芙莱丝」伯爵夫人。

这一时期 Ada 把大部分的精力都放在了家庭上,过着骑马、弹竖琴、喝咖啡的名媛生活。

直到 1839 年,Ada 决心重拾数学,并且请了个大牛来当家教,这个人就是德·摩根。在跟德·摩根的学习中,Ada 第一次知道了微积分,同时她还对离散数学非常感兴趣。她对自己的数学能力非常自信。

Ada 的微积分学习笔记

第一段计算机程序诞生

 

虽说 Ada 迷茫,有个人比她还迷茫,就是巴贝奇。自己发明的东西造不出来,预算又赶上政府换届,被新政府给断了,自己还贴了不少钱。眼瞅着从老爸那继承的 10 万英镑(相当于今天的 1400 万美元)也嚯嚯的差不多了,巴贝奇又着急又上火。

这个时候的巴贝奇简直到了谷底。不过人生就像巧克力,大力就会出奇迹。巴贝奇再次灵光一闪,在差分机的基础上构思出了一个更具有普适计算意义的机器——分析机。

如果说差分机是个「计算器」,那么分析机就终于有点「计算机」的意思了。

项目有了,下一步就要找投资。英国政府肯定是不会再给钱了,所以他干脆带着 PPT、拿着自己印了 6 行 title 的名片(这不是梗)去了意大利,找到了意大利数学家「梅纳布雷亚」。「梅纳布雷亚」当时就被分析机的这个想法给震惊了,当场表示这个项目我投了!不过不是资本投资,而是技术投资。他用法语写了一份很详尽的分析机运作原理的论文来帮助科普。

巴贝奇的 6 行 title

女主 Ada 看到这篇论文后兴奋异常,于是决定把这篇法语的论文翻译成英语,让更多的人看到。在翻译的过程中,她开了挂,加了很多注解,结果注解的内容越来越多甚至超过了正文;她还加了很多连巴贝奇自己都没想到的示例来演示分析机的功能。

结果写着写着,就写出了世界上第一段计算机程序!

Ada 的第一段程序(伯努利数推导程序)——NoteD

对普世计算的预言

 

分析机是世界上第一台「可编程的机械通用计算机」,当然那个时候编程语言还没发明,巴贝奇就用打孔纸来控制机器的操作,而打孔纸早就用在了提花机上。

分析机通过打孔卡输入,变量卡定义数值的位置,打印机输入结果。此外,分析机还有一个存储系统和运算单元,存储系统可以存储 1000 个 40 位的十进制数(约合今天的 16.2KB);运算单元则可以进行加减乘除、比较和平方根的运算。

最初,包括巴贝奇在内的所有人都认为这个分析机只是个更高级的计算工具,但这个时候 Ada 却看到了完全不同的可能,这不仅是个数学运算工具,任何有规律的事物,都可以数字化然后用它来进行计算,把人从基础的工作中解放出来,这不就是今天的计算机吗?!

Ada 在两百年前从一篇基础的论文中,连一个原型都没有,就准确预言了 200 年后的世界。

 

伯努利数推导程序

 

Ada 最大的成就,是用分析机推导伯努利数,她认为这是个很好的展现分析机特性的例子。伯努利数是一个计算「幂次和」的有理数数组:

由于篇幅有限,大家可以到视频的评论区下载资料包,进一步了解相关知识

Ada 用表格的方式设计出了一个推导伯努利数的程序,这个程序包含 25 个步骤和一个循环。国外有大牛把她的这段程序翻译成了 C 语言和 Python(链接也放在资料包中)。

再说个好玩的,话说为啥今天的程序员总逃不过写 bug 的命运?因为 Ada 写的这第一段代码中就有 3 个 bug,分别在第 4 行、第 23 行和第 25 行。第 4 行的 bug 是分子分母写反了,剩下的两个 bug 欢迎找到的同学把答案打在视频的弹幕或评论区。看来程序员被 bug 支配的恐惧,是被祖师爷写进命运里的啊。

Ada 真实的成就

 

最后再说说 Ada 的成就是否被夸大了?从学术的角度看的确如此,她的理论是建立在巴贝奇的发明之上的,她从来没有发表过自己的独立论述,甚至连「第一段代码」也不是真正意义上的第一段,巴贝奇自己就写过好几段。

但她是第一个提出通用计算理念的人,她的代码也是最接近今天编程内核的,只有她的代码包含了循环。20 世纪初,在被阿兰图灵多次提到后,Ada、巴贝奇和他们的工作才再次重现。

很多人猜测,如果 Ada 拥有的正常的寿命,计算机是否会提前一个世纪被发明出来?答案可能是否定的。虽然当时电已经被发明,但用电线来传输信息会导致大量的丢失,且稳定性也很差;另外,二进制在当时也并不为人所重视。

但不可否认的是,如果 Ada 没有英年早逝,她很可能会成为科学界的领袖之一,领导科学家探索这个世界;就如同她的父亲领导着希腊大军,为自由而战。

好了,这就是 Ada 的故事,喜欢支持我们的视频并一键三连,未来还会给大家带来更多有趣、有干货的科技史,咱们下期见!

 

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐