0x01 byte

Recent content on 0x01 byte

马上订阅 0x01 byte RSS 更新: https://1byte.io/rss.xml

第一个程序员 Ada 的故事

blog.incoming@1byte.io (江宏)
2017年11月23日 08:00
在 IT 行业,性别的不均衡是个经常出现的话题。因为在这个领域从业的女性比例很低,所以有很多公益组织致力于提高女性在 IT 业的参与度。也有不少人认为整个行业对女性存在着一定程度的偏见和歧视,因为一些人认为女性从事技术工作的能力要弱于男性。 事实上,计算机这个行业的发展从一开始就是和女性密不可分的。Computer 这个词是在计算机出现之前很久就有的,指的是以计算为职业的人。因为女性通常比较细心,进行这样的工作时出错比较少,所以当时的 computer 大部分是女性。这些女性为很多科学上的关键发明发现和二战的胜利做出了重要贡献。二战期间科学家衡量所需计算能力的单位不是 megahertz,不是 teraflops, 而是 kilo-girls — 也就是相当于一千个女孩的算力。 现代程序员这个职业的鼻祖也是一位女性,并且她的时代比我们更熟悉的图灵、冯·诺伊曼等其他计算机领域的先驱早了一个世纪。她就是 Ada Lovelace. Ada Lovelace Ada 的父亲是英国著名诗人拜伦,其实她的原名是 Augusta Ada Byron,后来因为她丈夫继承了 Earl of Lovelace 的爵位,所以她以 Ada Lovelace 这个名字为人所知。拜伦在 Ada 几周大的时候就离开了英国,并且后来再也没有和她相见(虽然拜伦一直在桌上放着 Ada 的照片,并且在诗里写到她)。她的母亲为了不让她走上他父亲那样「疯狂」的文艺道路,让她从小就学习逻辑和数学,希望她能成为一个理性的人。她从小和外婆一起生活,虽然母亲照顾她不多,但是坚持要让她得到好的教育。那个时候英国的学校不对女性开放,不过富人家的女孩往往可以从私人教师那里得到好的教育。在 12 岁时她就很痴迷于研究怎么样让蒸汽驱动的机器像鸟一样飞行。 作为少有的出身上流社会、痴迷于科学、并受过很好教育的女孩,Ada 在当时英国科学界的社交圈是个活跃和受到欢迎的人,身边可谓群星闪耀。她和法拉第、狄更斯等知名人物都是朋友,她也以此为便来寻找各种学习机会。1833 年,她认识了剑桥大学的数学教授查尔斯·巴贝奇(Charles Babbage)并和他成为朋友。当时巴贝奇的头衔是:Lucasian Professor of Mathematics。在他之前,牛顿曾经拥有这个头衔,而它现在的主人是霍金。巴贝奇把 Ada 介绍给了德摩根定律和数学归纳法的发明者奧古斯塔斯·德摩根(Augustus De Morgan),德摩根成了她的数学老师。在给 Ada 母亲的信里,德摩根曾经说到她女儿在数学方面有出众的能力,有望成为第一流的数学家。法拉第也曾经说她是「科学界正在升起的新星」。 Ada 跟随德摩根学习微积分的笔记 巴贝奇知道 Ada 母女都对数学很有研究后,邀请她们参观他发明的差分机(difference engine)。因为人工计算经常出错,所以他想用一种手摇或者蒸汽驱动的机器来进行计算。Ada 马上被 Babbage 的发明吸引住了。事后她给巴贝奇写信要来了差分机的图纸,决定一定要弄明白它的工作原理。 巴贝奇不久后又设计出了叫分析机的机械式通用计算机。由于在当时没有得到英国政府的重视,缺少必要的资源,一直到巴贝奇辞世分析机都没有被实际制造出来。但它的设计逻辑非常先进,是一百多年后电子计算机的先驱。 巴贝奇请 Ada 帮忙翻译意大利工程师 Luigi Federico Menabrea 写的一篇关于分析机的论文。她除了把文章从法文翻译成英文外,补充了很多自己的批注和笔记,增加的部分有原文的三倍长。她的笔记和翻译一起发表在英国的一个科学期刊。Ada 的署名是 A.A.L.,也就是 Augusta Ada Lovelace 的缩写。在她的笔记里 Ada 描述了如何用程序来处理字母、符号、甚至音乐等其它信息,而不仅仅是数字。她还描述了分支、循环等在现代程序设计语言里常见的基本流程控制机制。也是在这篇笔记里,她发表了人类的第一个程序:计算伯努利数列,如果当时分析机实际存在,她的程序是可以正确运行的。