查看原文
其他

世界上第一位程序员,竟然是诗人拜伦的女儿?

脚本之家 2021-06-29

The following article is from 大数据DT Author 数据叔

  脚本之家

你与百万开发者在一起

导读:世界上第一位程序员,当然也是世界上第一位女程序员——Ada。



作者:数据叔
来源:大数据DT(ID:hzdashuju)


这位女神级的神人,全名是洛夫莱斯伯爵夫人奥古斯塔·埃达·金·诺尔(Augusta Ada King-Noel, Countess of Lovelace)。在成为伯爵夫人之前,她原生家庭的姓氏更有名一些——拜伦(Byron)。


▲Ada的画像,大约完成于1840年,这也是当今网络中Ada最常见的形象,作者:Alfred Edward Chalon

01 另类的原生家庭

别怀疑,Ada就是19世纪初期英国伟大的浪漫主义诗人乔治·戈登·拜伦(George Gordon Byron)的亲女儿。

怪不得如今很多程序员都能写出诗意的代码,原来程序员和诗人自古以来就是一家。

著有《恰尔德·哈罗尔德游记》《唐璜》等佳作的拜伦勋爵,也算是英国文学史上响当当的大佬。你或许读过拜伦的诗,但不知道你有没有读过这一句:

Ada,我屋檐下、我心中唯一的女儿。

拜伦一点没夸张,Ada是拜伦跟他夫人安娜贝拉(Anne Isabella Noel Byron)唯一的孩子。说得更明白一点就是,Ada是拜伦唯一的婚生子女,拜伦的其他孩子都是私生。

Ada这个名字,也是拜伦对女儿昵称。

▲4岁的Ada

Ada出生于1815年12月10日,射手座。她出生前,拜伦夫妇的关系已经紧张。Ada刚满月不久,安娜贝拉被拜伦赶回了娘家,同时也带走了Ada。

此后,拜伦已经跟女儿Ada没有什么实质上的关系,但距离产生了美,Ada一直想念着父亲。

与拜伦分居后,安娜贝拉实际上把女儿交给了自己的母亲,也就是Ada的姥姥来带。安娜贝拉对Ada却有一种另类的关爱——她怕Ada遗传了拜伦的基因,在成长中变得像拜伦一样“道德败坏”,就派出一个闺蜜团去监视Ada。

Ada很讨厌这些监视她的人,认为她们在母亲面前说自己坏话,把她们称为“冤魂”(Furies,原意是复仇女神)。

不过,安娜贝拉的这种另类关爱也为Ada成为世界上第一位程序员埋下了伏笔。安娜贝拉害怕Ada像拜伦那样成为一个“疯狂”的诗人,就创造各种机会让Ada学习数学,培养逻辑和理性思维。

1824年,Ada只有8岁的时候,“疯狂”的拜伦病逝于希腊独立战争的战场上。很有可能的是,Ada直到父亲去世,也不知道父亲的样子,父亲的形象只存在于她的想象中。因为直到她20岁生日时,安娜贝拉才给她看一幅家庭画像,那上面有她父亲。

▲7岁的Ada,作者:Alfred d'Orsay


02 多舛的童年:想飞的数学少女,瘫痪了

Ada的思维方式,似乎是综合了父亲的诗意和数学教育的理性。她想飞,这很疯狂;但她不是想想而已,她真的设计了一对翅膀,这很有数学家的风范。

那是在1828年2月,Ada 12岁,她研究鸟类生理解剖学,分析、计算翅膀和身体的正确比例。她找来各种材料做实验:纸、油布、缆线、羽毛……

她甚至还有后续的步骤和计划:她列举出飞行需要的其他器材设备,比如罗盘;在那个蒸汽时代,她还要把蒸汽整合进她发明的“飞行艺术学”。

但在一年多以后,1829年6月,Ada却因麻疹发作全身瘫痪,在床上休养了将近一年。直到1831年,她才能拄着拐杖走路。Ada从小就常常生病,8岁时就曾因为头痛影响视力。

身体虽然被疾病禁锢,但Ada的大脑从未停止进步。她与她的家庭教师玛丽·萨默维尔(Mary Fairfax Somerville)成为朋友。1833年,萨默维尔把Ada引荐给数学家、发明家查尔斯·巴贝奇(Charles Babbage),这位大佬将是本文下一段的主角。

此后,Ada也跟迈克尔·法拉第(Michael Faraday)、查尔斯·惠斯通(Charles Wheatstone)等英国著名科学家以及小说家查尔斯·狄更斯(Charles Dickens)熟识。1834年起,Ada成为英国王宫宴会中的常客以及万人迷(a popular belle of the season)。

▲1835年,17岁的万人迷Ada


03 “精灵小姐姐”、世界上第一位程序员、计算机时代的先知

上文提到的查尔斯·巴贝奇,很受Ada的尊重,他们在工作中合作了很多年。巴贝奇也很欣赏Ada,称她为“精灵小姐姐”(Lady Fairy)。

▲1836年,21岁的Ada画像,作者:Margaret Sarah Carpenter

成年后的Ada兴趣广泛,包括跟大脑如何思考相关的学科,比如颅相学和催眠术。1844年,在与巴贝奇合作之后,她跟朋友沃伦佐夫·格瑞格(Woronzow Greig)谈到,她有一个想法,她想创建一个数学模型,让这个模型说明大脑是如何产生思想和神经感觉的(“神经系统演算”)。

Ada对大脑的兴趣,源于她怀疑母亲安娜贝拉有一种潜意识里的疯狂。但这项研究未能真正实现。她跟巴贝奇的合作,最令人瞩目的项目是围绕巴贝奇发明的分析机的研究。

▲分析机的复制品,复原项目由Doron Swade领导,图片作者:Carsten Ullrich

分析机是巴贝奇设计的一种机械式通用计算机。巴贝奇关于分析机的工作从1833年,也就是认识Ada的那一年就开始了。

分析机由蒸汽机驱动,使用打孔卡输入,通过一台打印机、一个弯曲的绘图仪和一个铃铛输出,也可以在纸上打孔以便日后读取。分析机的“内存”大约可以存储1000个40位的十进制数,它有一个算术逻辑单元可以进行四则运算、比较和求平方根操作。

从对分析机的这些描述来看,它跟我们现在使用的计算机已经非常相似。关于分析机,意大利数学家路易吉·梅纳布雷亚(Luigi Federico Menabrea)写了一篇论文,1842年,在惠斯通的建议下,Ada承担了这篇论文的翻译工作。

在译文后面,Ada增加了许多注记,按英文字母顺序从A到G。在G中,她详细说明了如何用分析机计算伯努利数。上文说了,我们可以认为分析机就是计算机,那么Ada这个计算伯努利数的方法,也就是一个程序,而且这也是世界上第一个计算机程序。

然后,写下这段程序的Ada,就成为世界上第一位程序员。

▲Ada创作的伯努利数计算图,这就是世界上第一个计算机程序/算法

关于Ada在巴贝奇那里的工作及贡献,以研究巴贝奇而闻名的计算机历史专家、巴贝奇分析机复原项目的领导者Doron Swade,总结了以下4点:

  • 她是一个数学天才
  • 她对分析机做出了有影响力的贡献
  • 她是第一位计算机程序员
  • 她是计算机时代的先知

有人质疑这段程序是不是巴贝奇自己写的,或者是由巴贝奇想出来的。对此,对此,我们可以看看当事人巴贝奇的说法。在他1864年出版的《经过哲学家人生》(Passages from the Life of a Philosopher)一书中,写道:

虽然这些想法是由我们一起讨论出来的,但是最后被写进注记里的想法确确实实是她自己的构想。我将许多代数运算的问题交给她处理,这些工作也与伯努利数的运算相关。在她所送回给我的文档,更修正了我先前在程序里的重大错误。

▲约1840年时Ada,作者不详

04 后来人的无限怀念

1835年,Ada与威廉·金(William King)结婚,此后威廉·金成为洛夫莱斯(1st Earl of Lovelace),Ada也就成了洛夫莱斯伯爵夫人,就是本文最开头提到的Ada那一长串全名的一部分。

关于Ada的婚姻生活,可供八卦的资料实在不多。她跟洛夫莱斯伯爵有2个儿子1个女儿,前两个孩子的名字分别是“拜伦”和“安娜贝拉”,这显然是Ada的刻意安排,以纪念她的父母。

1852年11月27日,Ada为了治疗宫颈癌,却因此死于失血过多,年仅36岁。依她的遗言,Ada葬于父亲拜伦的身旁。

1852年,去世前不久弹钢琴的Ada,作者:Henry Phillips

1953年,Ada去世后101年,她的研究笔记被重新发布。在计算机科学技术改变世界的前夜,人们重新认识了这个世界上第一位计算机程序员。

Ada的形象也陆续出现在小说、动漫、电影及游戏等大众文化中。

▲英国伦敦纪念Ada的蓝色牌匾,作者:Egghead06


1980年,美国国防部上线了一种新的计算机编程语言,并把它命名为Ada。Ada由Pascal及其他语言扩展而成,比较接近自然语言和数学表达式。

最后我们用Ada语言编写的"Hello, World!"程序结束本文:

with Ada.Text_IO; 

procedure Hello is
begin
    Ada.Text_IO.Put_Line("Hello, world!");

end Hello;

最后的最后,祝所有的程序媛小姐姐每天快乐


参考资料
[1]Ada Lovelace - Wikipedia
https://en.wikipedia.org/wiki/Ada_Lovelace
[2]Charles Babbage - Wikipedia
https://en.wikipedia.org/wiki/Charles_Babbage
[3]Analytical Engine - Wikipedia
https://en.wikipedia.org/wiki/Analytical_Engine
[4]阿达·洛芙莱斯 - 百度百科
https://baike.baidu.com/item/阿达·洛芙莱斯/
[5]Ada语言的维基百科
https://zh.wikipedia.org/wiki/Ada

Q: 你还知道哪些很传奇的程序媛?
欢迎留言与大家分享
- END -



更多精彩


在公众号后台对话框输入以下关键词

查看更多优质内容!


女朋友 | 大数据 | 运维 | 书单 | 算法

大数据 | JavaScript | Python | 黑客

AI | 人工智能 | 5G | 区块链

机器学习 | 数学 | 送书

●  高中毕业就想转行当 Coder,程序员的学历真的不重要么?

●  脚本之家粉丝福利,请查看!

●  人人都欠微软一个正版?

 中国第一程序员传

● 项目组入职了新的程序员,如何让这些新员工融入团队?

● 1月新书 | 程序员该怎么规划自己的成长路径?

● 疫情后互联网公司跳槽指南

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存