如果你的印象中程序员都是男性,那你需要知道一个事实:世界上第一个程序员是女性。她叫Ada Lovelace,一个19世纪的英国贵族女性,诗人拜伦的女儿。她在1843年写下了世界上第一段计算机程序,比第一台真正的计算机诞生早了整整一个世纪。
拜伦的女儿
Ada Lovelace出生于1815年,是著名诗人拜伦勋爵唯一合法的女儿。拜伦在她的童年时期就离开了家庭,后来死于希腊战争。Ada的母亲Anne Isabella Milbanke决定不让女儿成为像她父亲那样的浪漫主义者,于是给Ada安排了严格的数学和科学教育。
这在19世纪的英国是极其罕见的。当时的贵族女性只学习文学、音乐和礼仪,数学被认为是女性智力无法企及的领域。但Lady Byron不相信这个。她自己就是一名数学爱好者,被拜伦称为「平行四边形公主」。她让Ada从小就学习代数、几何和天文学。
Ada展现出惊人的数学天赋。12岁时,她画了一架蒸汽飞行的设计图,模仿鸟类翅膀的解剖结构。她写信给母亲说:我正在研究翅膀的力学,想找到一种方法让人类飞起来。虽然她从来没有成功飞起来,但她的数学直觉和想象力已经超越了同龄人。
遇见巴贝奇
1833年,Ada 17岁,在一次社交聚会上遇到了查尔斯·巴贝奇,一位数学家、发明家,正在设计一种名为「分析机」的机械计算设备。
分析机是一个巨大的齿轮和杠杆组成的机械装置,用蒸汽机驱动。它可以用打孔卡片输入指令,进行数学运算,并把结果打印出来。巴贝奇设计了分析机,但他从来没有成功建造它。不是技术上不可行,而是英国政府在他的上一个项目「差分机」上投入了巨资后放弃了他,他找不到资金来完成分析机。
但巴贝奇的设计图纸是完整的。分析机包含了一个现代计算机的所有核心组件:运算器(相当于CPU)、存储器(相当于内存)、输入设备(打孔卡片)和输出设备(打印机)。它是世界上第一台可编程计算机的设计,领先时代100年。
Ada在第一次见到巴贝奇时,就被分析机的设计迷住了。她花了几个月时间理解分析机的工作原理,然后成了巴贝奇最重要的合作者。
第一段代码
1842年,一位意大利数学家Luigi Menabrea写了一篇关于巴贝奇分析机的文章,发表在瑞士的学术期刊上。巴贝奇请Ada把这篇文章翻译成英文。
Ada不仅翻译了文章,还加上了自己的注释。她的注释比原文长了三倍,七篇注释,从A到G标注。在注释G中,她写下了世界上第一段计算机程序:一个计算伯努利数的算法。
这段程序包含了现代编程的核心概念:循环、条件分支、子程序、变量。它定义了如何通过打孔卡片输入数据,如何通过分析机的齿轮执行计算,如何输出结果。Ada写下的不是一个抽象的数学公式,而是一个可以实际执行的、分步骤的计算过程。
这就是计算机程序的定义:一组可以用机器执行的指令。Ada Lovelace在1843年写下了世界上第一段这样的程序。
超越计算的洞察
但Ada的贡献远不止写出第一段程序。她看到了巴贝奇自己都没有看到的东西。
巴贝奇认为分析机只是一个超级计算器,用于解决复杂的数学问题。但Ada看到了分析机处理符号而不仅仅是数字的潜力。她在注释中写道:分析机不仅能够处理数字,还能处理用符号表示的任何东西。它可以用于谱曲,用于艺术创作,用于表达科学真理。
她预见到了通用计算机的概念:一台机器,通过改变输入的程序,可以做完全不同的事情。今天可以计算数学,明天可以创作音乐,后天可以分析文字。这个预见比计算机的发明早了100年,比人工智能的提出早了110年。
Ada还提出了一个至今仍然被讨论的问题:机器能思考吗?她的回答是:分析机不能创造任何东西。它只能做我们知道如何命令它做的事情。这句话后来被图灵引用,成为人工智能哲学的核心问题。
英年早逝
Ada Lovelace于1852年死于子宫癌,年仅36岁。她去世的年龄,和她父亲拜伦去世时一模一样。她临终前要求葬在拜伦的墓旁,她一生从未见过父亲,但她在生命的最后时刻,想要靠近他。
巴贝奇在Ada去世后,继续为分析机争取资金,但始终没有成功。他死于1871年,分析机永远停留在了图纸上。直到20世纪,计算机的发明者们才重新发现了巴贝奇和Ada的工作。图灵在写他的经典论文时,引用了Ada的论断。第一台电子计算机ENIAC的建造者,也参考了巴贝奇和Ada的设计思想。
被遗忘和被铭记
在很长一段时间里,Ada的贡献被历史遗忘了。她被描述为巴贝奇的翻译和助手,而不是一个独立的创新者。但她的注释G,是对计算机科学最早期、最深刻的贡献之一。
1980年,美国国防部为了纪念Ada,将一种新开发的编程语言命名为Ada。这种语言至今仍在航空航天、军事系统和铁路控制等关键领域使用。Ada语言的设计理念——可靠性、可维护性、可读性——正是Ada Lovelace本人所追求的科学精神。
今天,每年10月的第二个星期二是Ada Lovelace日,用来纪念女性在科学、技术、工程和数学领域的贡献。一个出生于1815年的贵族女性,在计算机被发明出来之前的100年,写下了第一段计算机程序,并且预见到了计算机的通用性和局限性。她是女性,是程序员,是预言家,是科技史上最被低估的天才。