分享

世界上第一名程序员 08

 科学羊 2023-09-12 发布于广东
本系列文章预计会有10个章节,这套文献会系统讲述计算机科学本身,这里是第一季第08篇
本文预计阅读7min

接上篇,今天我们讲一位非常非常重要的人物,她就是,世人称她为“世界上第一名程序员”—— 埃达·洛夫莱斯(Ada Lovelace)


01 埃达的生平


埃达·洛夫莱斯生于1815年,她是英国著名诗人拜伦勋爵和拜伦女爵的唯一婚生子女。埃达满月时父母离异,四个月后拜伦离开英国,一去不归,从此也再也没有见过自己的女儿。

埃达八岁时,拜伦在希腊逝世。

埃达的母亲安妮贝拉很痛心,好在自己的女儿从小就是个天才,学什么东西都很快,尤其是数学。所以她母亲一直培养她数学方面的天分。(真实原因是她母亲痛恨拜伦的疯狂,所以从小教她数学,以斩断她对人文的兴趣)

不得不说,埃达是继承了父亲的想象力。

12 岁的时候,她就对飞行器着迷,那时凯利爵士还没有试飞他的载人滑翔机。

为了研究飞行,她对鸟类的身体构造产生了兴趣,但又不忍心解剖鸟类,便让母亲找来了一本鸟类解剖图解。

在埃达的一生中,她一直保持着对数学和自然科学的极大热情。

1833 年,18 岁的埃达正式进入英国上流的社交圈。在一个个晚会上,埃达见到了英国国王、王后,甚至还有世界外交史上最富传奇色彩的塔列朗。

但是,改变了埃达一生命运的则是在一次沙龙上她见到了发明差分机的科学家巴贝奇,并且见到了被她母亲称为“能思考的机器”的差分机。

你知道吗?埃达在大学的时候特别喜欢数学和机械,埃达总会去拆解每一台机械背后的原理。

所以,后来她遇到了巴贝奇之后,就像命运招手一样召唤她。

1835年埃达与威廉·金结婚,威廉·金于1838年受封洛夫莱斯伯爵,她成为洛夫莱斯伯爵夫人。

不过遗憾的是,这位美丽的天才在1852年身患子宫癌不幸去世,年仅只有37岁,真是令人惋惜!

02 埃达的贡献

1840年,巴贝奇应邀来到意大利都灵大学分享分析机的设计,当时一位年轻的工程师、后来的意大利首相路易吉·费德里科·梅纳布雷亚(Luigi Federico Menabrea)用法语记下了详细的笔记并于1842年整理出版。

1842到1843年间,艾达·洛芙莱斯(Ada Lovelace)将这份笔记译成英文,并在巴贝奇的提议下扩充了许多自己的理解。

重点是她在翻译了这篇分析机的文章得的时候,加上详尽的笔记(篇名就叫笔记)。埃达的笔记里,包含了许多人公认的史上第一段计算机程序—一段分析机用的算法(以分析机计算白努利数的算法)。

更为奇特的是埃达的笔注解篇幅足有译文本身的2倍!

其中一处在分析机上计算伯努利数的描述被后人视为史上第一个计算机程序,这篇名为《关于巴贝奇先生发明的分析机简讯》的译文被视为程序设计方面的第一篇著作,艾达其人则被视为第一位程序员,尽管当时连编程语言都没有,连实物机器都没有。

埃达的笔记对早期电脑发展史非常重要。

此外,当巴贝奇等同时代学者,只着眼于电脑的数学运算力时,埃达已经预见了电脑广泛应用的未来。她在笔记中以她的“诗意科学”来研究分析机,探索个人和社会,如何透过科技协同工作。

洛夫莱斯“笔记G”的图表,第一个发表的电脑算法(图片来自维基百科)

03 对计算机未来的洞见

埃达·洛夫莱斯在笔记中,强调分析机和前代计算机的不同,尤其在它能以程序解决各种复杂问题。她发觉以后的分析机不只可以算数。她在笔记中说:

[分析机]很可能用来处理数字以外的事物,只要对象的基本关系,能以抽象科学操作表示,便很有可能可以转换为分析机的操作指令…举例来说,如果音乐乐曲和科学高低音的基本关系,可以用这种方式转换和表示,分析机就可以作出各种复杂精美的科学乐曲了。

上述分析是计算机科学的重大发展,基于对当时计算机能力的理解,在百年前就预测了现代电脑的发展与影响。

对于埃达基于逻辑符号对电脑应用的洞见,华特·艾萨克森认为来自她在织布机上的观察:“她看到有些织布机以打孔卡当指令,织出美丽的花样时,她联想到巴贝奇也用打孔卡来计算。”

据计算机科学史家与巴贝奇研究者多伦·斯瓦德说:

埃达看到巴贝奇看不到的远景。

在巴贝奇的世界里,分析机是用来算数的…洛夫莱斯看到…数字也以以表示非量化资料。

要是有一台可以操作数字的机器,只要数字可以表达其它事物,像是字母、音符等,这台机器就可以依照规则,以数字来操作符号。

从操作数字到操作符号的转型,就是从数字计算往通用计算的转型。当我们从现代回顾,查找电脑发展史的转泪点时,转捩点就在埃达1843年的笔记中。

04 提花织机

约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard),1752-1834,法国织工、商人。(图片来自维基百科)

提花机是让巴贝奇和埃达产生对程序思维的idea。

1804 年 ,法国人发明了一种提花织机(Jacquard loom),它能从一个长长的打孔卡上读取信息,织出特定式样的花纹。打孔卡上的孔可以让钩子穿过去,钩子控制织线。织机是同一个织机,打孔卡可以随便更换,换张卡就是不一样花纹。

打孔卡,可以说是机械化自动机器的软件。打孔卡这个技术思想在此后有广泛的应用,IBM公司最早就是靠这东西起家的……

但是,“严格的灵活性”毕竟不是真正的灵活性。打孔卡技术,距离可编程计算,还有根本性的一步。

(纸带程序,来自电视剧《三体》)

在卡片上预设若干孔位,每个孔位可以穿孔也可以不穿孔。将卡片置于经线上方,其上方是与所有孔位一一相对的勾针。

织锦时,勾针齐齐下探,尝试穿过卡片,没有穿孔的孔位上方的勾针就被挡住,穿孔孔位上方的勾针就可以穿过卡片勾起经线。原本提花工的任务就可以完全交给机器自动完成,从此提花机就只需要一个工人操作了。

雅卡尔提花机工作原理示意图

1980年,美国国防部将一种编程语言命名为Ada,以纪念这位与巴贝奇同样具有超前思想的伟大女性。

埃达于1852年因癌症去世,此后巴贝奇独自坚持了近20年,最后还是没能所愿....

总结:

  1. 还是回归巴贝奇和埃达的故事,他们的失败是因为他们看的太远,分析机的设想至少超出了一个世纪;
  2. 不得不说,埃达是一个富有想象力的人且非常有智慧的人,她曾经甚至预测到“计算机科学”会成为一门独立的学科。

在此谨以此文来纪念这位伟大的程序员~

好,今天就先这样啦。

Masir - 2023/01/17
于 东莞
祝幸福~

参考文献
[1].《大话计算机》·冬瓜哥
[2].《信息论》·吴军
[3].巴贝奇:现代计算机真正的鼻祖 - 简书 (jianshu.com)
[4].https://zh./zh
cn/%E6%84%9B%E9%81%94%C2%B7%E5%8B%92%E8%8A%99%E8%95%BE%E7%B5%B2

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多