1 早年生活与教育
1.1 家庭背景与童年
玛丽·李·伍兹于1924年3月12日出生在英国伯明翰的一个普通家庭。父亲是一名工程师,母亲曾担任小学教师,家庭氛围注重理性思维与动手实践。幼年时,她常随父亲修理钟表和简易机械,养成了对逻辑拆解的兴趣。据家族回忆,她在7岁时便能独立解出报纸上的数独类谜题,这一能力在当时的同龄人中颇为罕见。
1.2 数学启蒙与学业经历
玛丽·李·伍兹在中学阶段展现出极强的数学天赋,尤其擅长代数与几何。她的数学老师曾评价她“解题时像在玩一场游戏”。1939年,她以优异成绩考入伯明翰大学。
1.2.1 伯明翰大学数学系
1941年,玛丽·李·伍兹进入伯明翰大学数学系,主修纯数学与应用数学。时值二战期间,大学课程安排紧张且实践性较强,她系统学习了数值分析、概率论与数理逻辑。1944年,她以一级荣誉学士学位毕业,成为当年该系仅有的三位女性毕业生之一。
1.2.2 二战期间的教学工作
毕业后,由于男性大量参军,英国中学教师短缺。玛丽·李·伍兹被分配到伯明翰一所女子文法学校,教授数学与物理。她在此阶段积累了清晰的讲解技巧和将抽象概念通俗化的能力——后来这些能力被直接应用到编程教学和文档编写中。
2 职业生涯
2.1 加入曼彻斯特大学计算机实验室
1947年,玛丽·李·伍兹偶然读到曼彻斯特大学正在招募“计算数学助理”的广告。她顺利通过面试,进入了当时世界领先的计算机实验室,师从汤姆·基尔伯恩教授。
2.1.1 曼彻斯特马克一号的编程工作
曼彻斯特马克一号(Manchester Mark 1)是早期存储程序计算机之一。玛丽·李·伍兹负责编写和测试数值计算程序,包括微分方程求解和矩阵运算。她需通过打孔纸带输入指令,并利用示波器观察寄存器状态来调试程序——这种方式被同事们戏称为“用眼睛编译”。
2.1.2 子程序库与随机数生成器
1950年前后,玛丽·李·伍兹独立开发了一套子程序库,将常见的三角函数、对数函数和统计分布函数封装为可复用的代码块。她还设计了一种基于线性同余法的随机数生成器,起初用于蒙特卡洛模拟,后来被物理学家开玩笑地称为“李的骰子”。尽管这些工作在当时并未正式发表论文,但实验室内部文档证明她至少早于同行六个月提出通用子程序机制。
2.2 费兰蒂公司的工作经历
1951年,费兰蒂公司(Ferranti Ltd.)将曼彻斯特马克一号商业化,推出Ferranti Mark 1。玛丽·李·伍兹作为核心程序员之一转入公司。
2.2.1 Ferranti Mark 1 的软件维护
她的主要职责是为客户现场安装的机器提供软件支持。这包括修正由硬件抖动引发的“幽灵错误”、优化内存使用,以及为不同的科学机构定制计算程序。由于机器经常过热崩溃,她练就了在90秒内重打一整卷纸带的本领。
2.2.2 与早期程序员团队的协作
费兰蒂的编程团队规模极小,包括她在内仅有五名程序员,且只有两名女性。她与同事合作编写了第一个商用Fortran预处理器(尽管当时还不叫Fortran),还参与了自动代码生成工具的探索。团队氛围轻松,偶尔会互相在纸带边缘画小漫画,这些漫画后来被一位同事收藏并捐赠给博物馆。
2.3 离开工业界后
1956年,玛丽·李·伍兹因第一个孩子出生而离开费兰蒂。此后她未再全职从事编程工作,但始终保持着对计算机领域的兴趣。
2.3.1 家庭与育儿对职业的影响
当时的英国社会普遍认为女性婚后应回归家庭,她也不得不面对“选择”的困境。她曾向朋友感慨:“我教我的孩子做加法时用的是二进制。”她利用业余时间为丈夫的数学研究编写过少量辅助程序,但主要精力投入在抚养四个子女上。
2.3.2 晚年参与的回忆与口述史项目
1990年代起,随着计算机历史研究的兴起,玛丽·李·伍兹多次接受访谈,参与英国计算机学会(BCS)的口述史项目。她在回忆中详述了早期编程的细节、面临的性别偏见,以及许多有趣的轶事。这些录音成为研究1950年代英国计算机文化的第一手资料。
3 个人生活
3.1 与约翰·霍顿·康威的婚姻
3.1.1 相识与求婚趣闻
1956年,玛丽·李·伍兹在一次数学研讨会上遇到了比她年轻13岁的数学家约翰·霍顿·康威。康威对她一见钟情,据称他那天正在研究一个关于“消失的方块”的谜题,便当场用火柴棍摆出一个几何悖论作为搭讪的开场白。三个月后,康威用自己编写的“无限级数收敛验证程序”打印出一张写有“嫁给我”的纸条,塞进她的便携式打字机里。玛丽·李·伍兹后来回忆说:“他把求婚变成了一道数学证明题,而我被他的幽默打动了。”
3.1.2 四个子女的家庭生活
两人婚后育有四个子女。家庭生活中充满了跨学科的思考:康威经常在餐桌上抛出未解决的数学问题,而玛丽·李·伍兹则用编程思维给出“暴力枚举”或“蒙特卡洛”的解决方案。孩子们长大后分别成为了物理学家、程序员、音乐家和一名喜剧编剧,均认为是父母“把严肃与游戏结合在一起”的教育方式发挥了作用。
3.2 性格与趣事
3.2.1 对幽默与谜题的热爱
玛丽·李·伍兹终生热爱解谜,哪怕是超市收银小票上的数字也能被她编成一个数列题。她最著名的个人爱好是收藏“错误”,即各种印刷品上荒诞的错别字或印刷瑕疵,并以此为乐。她曾对记者说:“计算机没有幽默感,所以人类要替它补上。”
3.2.2 “代码中的冷笑话”——程序注释中的梗文化
在早期Ferranti Mark 1的程序纸带旁边,玛丽·李·伍兹经常用铅笔写下只有程序员才能看懂的注释。例如,一段计算圆周率的子程序旁她写道:“π ≈ 3.14159……不过如果你赶时间,3.14也够用了(别告诉工程师)”;另一段调试用的死循环程序旁则标注:“这里我在思考人生,机器请稍候。”这些早期梗文化被认为是最早的程序员冷笑话之一,后来被程序员社区追溯为“彩蛋的史前形态”。
4 贡献与影响
4.1 技术遗产
4.1.1 早期子程序技术的独立开发
玛丽·李·伍兹在子程序库方面的贡献,从时间上看几乎与莫里斯·威尔克斯(EDSAC团队)同时期,且完全独立。她的随机数生成器被用于粒子物理模拟和早期的博弈论实验,虽然后来被更复杂的算法取代,但设计思路——通过对取模运算的巧妙处理来减少周期相关性——仍被后世的伪随机数生成算法所借鉴。
4.1.2 对女性在计算机领域地位的象征意义
作为1950年代英国仅有的几位女性计算机专家之一,她的故事打破了“编程是男性工作”的刻板印象。尽管她本人从未自诩为女权主义者,但她的存在激励了许多后来者。2015年,英国计算机学会设立了以她命名的“玛丽·李·伍兹奖学金”,专门资助从事计算机科学基础研究的女性学者。
4.2 历史评价
4.2.1 被遗忘的先驱与后续的再发现
由于她离开工业界较早,且无正式论文发表,玛丽·李·伍兹在很长一段时间内被计算机史主流叙述忽略。直到2000年代,历史学家在整理费兰蒂公司档案时重读了她的笔记,才意识到其子程序库设计的原创性。一份2018年的研究论文将她称为“隐藏在代码阴影中的编排者”。
4.2.2 在计算机史文献中的记载
在《诺兰的计算机历史》(第三卷)和《英国计算机先驱》等著作中,玛丽·李·伍兹被列为早期软件工程的重要人物。她的口述史片段被收录于《曼彻斯特计算机实验室口述档案》,成为理解早期程序员日常工作的鲜活文本。
5 相关人物与作品
5.1 合作者与同事
5.1.1 艾伦·图灵(间接关联)
玛丽·李·伍兹并未直接与艾伦·图灵共事,但她全面测试过图灵在曼彻斯特马克一号上实现的一版象棋程序,并发现了导致程序“自投降”的一个分支条件错误。她曾在访谈中幽默评价:“图灵的程序赢了人类,但输给了自己的一个if-else。”
5.1.2 汤姆·基尔伯恩
汤姆·基尔伯恩是曼彻斯特计算机实验室的负责人,也是玛丽·李·伍兹的直接导师。他高度评价她的代码风格——“像优雅的数学证明一样整洁”。基尔伯恩还在自传中专门提到,她开发的随机数生成器在当时的世界上“可能是最快的”。
5.2 文化形象
5.2.1 传记与纪录片中的描绘
2016年,英国BBC第四频道播出了纪录片《代码女匠:隐藏的计算机先驱》,其中用近20分钟的篇幅介绍了玛丽·李·伍兹的工作与生活。她的照片也被用于一系列纪念早期程序员的海报,常伴以注释:“别让你的代码冷场。”
5.2.2 网络迷因中的“程序员之母”调侃
在海外程序员论坛Reddit的r/ProgrammerHumor板块中,玛丽·李·伍兹被戏称为“程序员之母”——因为她在纸带注释中写过的“这里我在思考人生,机器请稍候”被截图广泛传播。许多现代开发者效仿她在注释中加入自嘲性吐槽,形成了一种独特的代码文化现象。在中国计算机爱好者社区,她有时也被称为“玩梗流编程祖师”。