作者 | 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的故事,喜欢支持我们的视频并一键三连,未来还会给大家带来更多有趣、有干货的科技史,咱们下期见!

被法拉第夸、狄更斯为她读诗、英王参加她的成人礼,程序员祖师的人生有多传奇?...相关推荐

  1. C++程序度量驱动调优实例:看狄更斯的双城记,寻找性能瓶颈

    作为一个专业的程序员,你写了一段程序,完成了一个功能,似乎达到了用户的要求,其实你心里也没底. 做一个简单的测试, 跑了一个主要流程,基本的功能应该是满足需求的,但是性能呢? 我们需要对程序的性能进行 ...

  2. 【名家名著】狄更斯和他的《双城记》

    开篇 原文: It was the best of times, it was the worst of times, it was the age of wisdom, it was the age ...

  3. 程序员如何学习更好的知识_如何保持学习并成为更好的程序员

    程序员如何学习更好的知识 by Kevin Gardner 凯文·加德纳(Kevin Gardner) 如何保持学习并成为更好的程序员 (How to keep learning and become ...

  4. dba的前景_运维、测试、程序员,这些技术岗位哪个更有前景?

    在一个初具规模的互联网公司,从业务方面出发,有很多岗位类型,比如运营.客服.市场.产品.设计.技术等等. 在这些大类下面,还要细分各种小类,以技术为例,可分为前端(客户端).后端.测试.运维.DBA等 ...

  5. 从程序员到项目经理(六):程序员加油站 -- 懂电脑更要懂人脑

    说起程序员三个字,我觉得既骄傲又可悲.骄傲的是,我们曾经是时代骄子,是一群真正改变世界的人:可悲的是,我们很多致力于改变世界的程序员,却生活在自己的世界里,无法自拔,成为了继"书呆子&quo ...

  6. 从程序员到项目经理(六):懂电脑更要懂人脑

    从程序员到项目经理(六):懂电脑更要懂人脑 说起程序员三个字,我觉得既骄傲又可悲.骄傲的是,我们曾经是时代骄子,是一群真正改变世界的人:可悲的是,我们很多致力于改变世界的程序员,却生活在自己的世界里, ...

  7. 《俄狄浦斯王》--人伦悲剧还是命运悲剧?

    qiushiabc 发布于: 2010-08-25 22:03 昨晚看了意大利导演帕索里尼的片子<俄狄浦斯王>.很震撼.那种古典简朴,悲剧激情,命运的神秘意味,都渲染得恰到好处. 一.片中 ...

  8. 程序员裸辞求夸,众网友上演大型夸夸秀现场:楼主好样的

    最近这几天,夸夸群火了.不管做什么,不管好坏,只要求夸,就有众多夸夸网友开始了各式各样的表演.无独有偶,一名程序员最近裸辞了,其在论坛发帖求夸. 就这么一个帖子,吸引了两百多名网友夸赞,各路网友纷纷秀 ...

  9. 第一位女性商业程序员玛丽库姆斯去世,享年 93 岁!

    作者 | 张洁 出品 | 程序人生 (ID:coder _life) 据 The Register 报道,2 月 28 日,世界上首位使用商业应用编写计算机程序的女性.英国知名女程序员玛丽·库姆斯(M ...

最新文章

  1. CentOS 6.5+Nagios4.0.2+Msmtp+Mutt邮箱报警
  2. 信息系统项目管理师-信息系统进度管理核心知识点思维脑图
  3. python映射类型list_python中标准数据类型:数字 string(字符串) list(列表) tuple(元组) dict(字典) sets(集合)共同点和区别:...
  4. 简单粗暴无需拼接下载 blob (ts)视频文件
  5. oppok1刷原生android10,OPPOK1系统升级最新ColorOSV6刷机包(完整固件rom下载ColorOSV6安卓9.0)...
  6. 【知识必备】如何优雅的退出应用和处理崩溃异常并重启
  7. php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...
  8. 最近的一些感想(关于移动客户端开发android,ios)
  9. hcna(华为)_Telnet篇
  10. UGUI更换图片的三种方法
  11. 文件间调用变量(extern,include)[转]
  12. 用ICC编译MP3编码器LAME
  13. html 弹出框 自动关闭,js提示框,n秒后自动关闭
  14. 基于rietveld搭建CodeReview平台
  15. ASP.net的简单认识
  16. 阿里无线11.11 | 手机淘宝主会场实践之路
  17. ps软件打不开计算机受限制,w10打不开ps怎么解决
  18. 时间管理经典书籍-《番茄工作法图解》
  19. 建立一个复数类Complex,其私有数据成员mX和mY表示复数的实部和虚部,构造函数Complex用于对复数的实部和虚部初始化
  20. 加班、加人、延期是糟糕的办法

热门文章

  1. 一文详解Inception家族的前世今生(从InceptionV1-V4、Xception)附全部代码实现
  2. 马斯克来了!瞄准1万亿美元电信市场,星链「村村通」在美获突破
  3. 深度学习必须掌握的 13 种概率分布
  4. 无法提升彼此,夫妻关系就要终结?
  5. 德鲁克管理31条金句
  6. AI攻击AI,升级的网络安全战
  7. 大咖来信|浪潮刘军:AI计算将成为“新基建”核心支撑之一
  8. 微软撤回了开放面部识别数据集,出于法律原因
  9. 人工智能中“图神经网络GNN”如何理解?(附斯坦福综述)
  10. AI干货系列一:为什么AI预测更智能?