程序员节冷知识|世界上第一位程序员,原来是她?
行业 程序员节冷知识|世界上第一位程序员,原来是她? 行业 | 2022-10-24 20:43 程序员节冷知识|世界上第一位程序员,原来是她? 新快报

埃达写的第一个程序是用来求解伯努利数的


不知不觉,又到了一年一度的1024程序员节

在今天这个特殊的日子里

祝愿广大程序猿:1024,BUG退散,发量惊人!

1024到底是什么?

1024程序员节(1024 Programmer's Day),别称程序员节、码农节,是中国广大程序员的共同节日,但是为什么是10月24日呢?

因为程序员的世界是二进制的,1024是2的10次方,也是程序员心目中的整数。

1G=1024MB(1G与1级谐音,也有一级棒的意思)

1MB=1024KB

1KB=1024B

这就是1024程序员节的由来。

平时我们提到程序员,你脑海里会出现什么形象?

年轻男性?戴眼镜、格子衬衫、不善言辞……?总之,第一反应是女性的恐怕不多。

但几十年前却恰好相反的。

那时候,编程被视为女孩的职业,人们甚至认为女性的天赋很适合这个工作。1967年出版的一份就业指导里,这样写道:“编程需要耐心、恒心、关注细节,这些正是女生的特点”。

人类历史上第一个程序员就是女性。她叫埃达·洛夫莱斯(Ada Lovelace),是英国著名诗人、数学家拜伦的女儿。

埃达·洛夫莱斯

埃达·洛夫莱斯是第一位主张计算机不只可以用来算数的数学家。她在笔记中详细说明了用分析机计算伯努利数的方法,这一算法被认为是世界上第一个计算机程序。因此,埃达也被公认为人类历史上第一位计算机程序员。

所以在这个特殊的日子,就让我们聊一聊这位人类历史上首位程序员的传奇经历。

她写的第一个程序

埃达写的第一个程序是用来求解伯努利数的。为了更好地理解埃达的工作,有必要简单介绍一下伯努利数及其实际应用。在介绍伯努利数之前,首先我们引入几个小学二年级就学过的数学公式:

大家可能已经发现,上面的数列其实有很强的规律性。所以人们不禁想要知道,对于一般的情况,是否存在一个一劳永逸的方法求得上面和式的值,也就是著名的“等幂求和”问题。

最终解决这个问题的,是来自传奇的伯努利家族的雅各布·伯努利。

作为拜伦的女儿,埃达有机会结识众多社会名流,其中就包括安德鲁·克罗斯、大卫·布儒斯特、查尔斯·惠斯通、麦可·法拉第等知名科学家。而她的数学天分也颇受查尔斯·巴贝奇赏识,据说她还参与了巴贝奇有关分析机的工作。

查尔斯·巴贝奇

查尔斯·巴贝奇是英国科学家,彼时的他正在研发自动化数学机器——差分机。

根据巴贝奇的设想,差分机可以实现从计算到印刷的过程全部自动化。差分机一号的建造工作启动于1822年,历经十年,据说完成了1/7。当时的金主爸爸英国政府发现这个项目超支严重,一气之下就砍掉了这个项目。

差分机原理(左)和后人根据巴贝奇著作还原的差分机实物(右)

失去了政府的资助后,巴贝奇仍继续工作。他打算设计一台更为复杂的机器——分析机。

分析机可以运行包含“条件”“循环”语句的程序,有寄存器用来存储数据,如果实现的话将成为人类第一台计算机,但该项目最终还是以失败告终了。不过凭借这些成果,巴贝奇被后人誉为“计算机之父”(不过历史上被称为“计算机之父”的人还有很多,譬如图灵,冯·诺依曼,阿塔那索夫……)。

埃达最著名的研究则完成于1842年与1843年之间,这段时期她潜心翻译意大利数学家路易吉·米那比亚有关巴贝奇分析机的论文。在翻译的同时,她增加了许多注记,同时详细说明了如何用分析机计算伯努利数的方法,这被认为是世界上第一个计算机程序,而埃达也被认为是世界上第一位程序员。

在1842年,埃达·勒芙蕾丝的分析机笔记“笔记G”,记录了第一个计算机程序——让电脑自动产生伯努利数。这里用到了一个伯努利数的性质:

上述关系同样可以用比较系数的方式获得。

第一个Bug

让我们仔细观察一下埃达的“笔记G”,并注意下面一行。

大家发现了吧。考虑到这是人类第一段程序,红框里的笔误估计就是人类历史上第一个bug了……(送分题:红框里有什么bug?看出来的你快去留言吧!)

埃达一生饱受疾病折磨, 晚年又被诊断出患有子宫癌。她于1852年11月27日 去世,年仅36岁。在生命的最后几周,尽管病痛缠身,但她还是请人为她画肖像画, 要求在她死后将画像复制赠予朋友们。

依照其生前遗愿,埃达被安葬在诺丁汉郡的赫克诺尔,长眠于父亲拜伦身旁。母亲拜伦夫人为她立了一座纪念碑,碑上刻着她写的一首诗,题为《彩虹》——二十多年前她曾给弗伦德写信讨论彩虹这一大气现象。

诗的结尾写道:“一束隐秘的光永不熄灭,以最纯粹的色彩,穿透云层!”

在计算机知识体系远不如今天完备的19世纪,埃达就完成了用分析机计算伯努利数的壮举,可以说是为计算机程序的发展做出了突出贡献,这也让今天的我们,能站在巨人的肩上码代码。

最后,祝各位程序猿/媛们节日快乐!


-END-

本文由新快报投稿一鸣网,本文仅代表作者个人观点,文章非经授权请勿转载,

向一鸣网投稿,请点击投稿按钮,详情请参阅《一鸣网投稿须知》。

互联网人都在关注的微信号

难道你还没有关注?