当前位置: 首页 > news >正文

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

导读:女神节来了,数据叔终于忍不住要聊一聊这个憋了很久的八卦,世界上第一位程序员,当然也是世界上第一位女程序员——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

点击这里阅读原文,直达新基建专场

相关文章:

  • 一文读懂Docker及其对系统管理员的重要性
  • 经典推荐——计算机科学殿堂的知识瑰宝
  • 翻译一本250多页的英文技术书是什么体验……
  • 疫情当下,让我们看到智能制造该有的样子
  • 2020产品经理升职攻略-直播分享课
  • 阿里达摩院正式加入5G巨头仗:瞄准新基建,成立XG实验室,要与华为战一战
  • 28岁退休的非典型程序员:我的人生不需要别人来设计
  • 当代开发者图鉴:沦为青铜还是成为王者?【文末揭晓】
  • TIOBE 3 月编程语言排行榜:Java 大涨,Delphi 辉煌不再!
  • 2020中国程序员调查报告:平均年薪15万,45%单身
  • 程序员学习哪种语言比较好找女朋友?
  • 什么是机器学习?有哪些分类?怎样上手开发?终于有人讲明白了
  • 2020 年热门编程语言的发展方向
  • 【人工智能周末直播专场】机器学习趣味大赏+强化学习全景介绍
  • 云计算的 2020:云原生崛起,重新定义软件!
  • 230. Kth Smallest Element in a BST
  • Android交互
  • Android优雅地处理按钮重复点击
  • Angular2开发踩坑系列-生产环境编译
  • express + mock 让前后台并行开发
  • JavaScript新鲜事·第5期
  • leetcode388. Longest Absolute File Path
  • Making An Indicator With Pure CSS
  • MYSQL 的 IF 函数
  • node学习系列之简单文件上传
  • PHP 7 修改了什么呢 -- 2
  • React组件设计模式(一)
  • TypeScript实现数据结构(一)栈,队列,链表
  • zookeeper系列(七)实战分布式命名服务
  • 类orAPI - 收藏集 - 掘金
  • 利用DataURL技术在网页上显示图片
  • 强力优化Rancher k8s中国区的使用体验
  • 微服务核心架构梳理
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 原生Ajax
  • - 转 Ext2.0 form使用实例
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 湖北分布式智能数据采集方法有哪些?
  • #NOIP 2014# day.2 T2 寻找道路
  • #大学#套接字
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (02)Hive SQL编译成MapReduce任务的过程
  • (02)vite环境变量配置
  • (12)Hive调优——count distinct去重优化
  • (Forward) Music Player: From UI Proposal to Code
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)uboot源码分析
  • (四)库存超卖案例实战——优化redis分布式锁
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Sublime Text3配置Lua运行环境
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat文件调用java类的main方法
  • .Net Core与存储过程(一)