Home > Focus > Article

她本想回到高中继续教数学,却最终开启了一场计算机革命

2026-11-04  ·  Views: 2

本文来自WeChat公众号: 返朴 ,作者:陈清扬

Today,我们习以为常的计算机程序,往往只需要几行高级Language,之后的工作会由编译器“翻译”成计算机“理解”的代码。但在计算机推GF早期,这样让机器自己读懂并优化程序却是一件近乎不可想象的事情。上世纪50年代,一位高中女教师为了还学生贷款,偶然GF入IBM企业,从此登上了计算机科学的舞台。她参与奠定的编译优化和自动并行化工艺,至今仍影响着程序如何高效运行。她就是弗朗西丝·艾伦,图灵奖史上首位女性得主。

本文收录于合集:科学家

如果提到计算机科学的先驱,人们通常会想到图灵、冯·诺伊曼或香农的名字。对于快速推GF的计算机领域来说,他们可以说是“上古大神”。对于Today习以为常的软硬件、编程,还有许多人的贡献同样深刻,他们的成果已成为底层的General知识,隐身于代码与算法之下。弗朗西丝·艾伦(Frances E.Allen,1932-2020)就是其中之一。

艾伦是计算机科学演GF最主要的先驱之一。20世纪50年代,她GF入IBM,向内部科研人员讲授just now诞生的FortranLanguage,由此她一头扎GF编译工艺,在后续职业生涯里深耕程序优化、控制流分析和自动并行化。艾伦的工作帮助计算机从“只能按照人类逐topics指令执行”,走向了Today这种能够由编译器自动分析和优化程序的计算模式。2006年,她成为图灵奖历史上第一位女性得主。

而她的起点却与这项后来改变计算机科学的事业相距甚远,这一切要从她挚爱的小镇高中讲起。

快乐的高中数学老师

1932年,艾伦出生于美国纽约州一个不富裕的农场家庭。她居住的小镇,靠近加拿大边界,2020年总人口也只有6700多人。这里西侧可眺望阿迪朗达克山脉,东面则毗邻尚普兰湖,还有大片的农田,早期的移民者觉得这些景色酷似南美洲秘鲁的风光,于是直接取名为Peru。

从艾伦家乡遥望尚普兰湖。丨图源:wiki

艾伦的父亲是农民,母亲是一名小学教师,家中有6个孩子,艾伦排行老大。艾伦的童年正值美国经济大萧topics时期,一家人生活清苦,她唯一的消遣方式就是读书。

童年时代的艾伦。丨图源:IBM

上学以后,艾伦最初的兴趣是English和写作,高中时她碰到了一位非常棒的数学老师,从此爱上了数学,特别是几何学。高中毕业后,艾伦前往纽约州教师学院(现为纽约州立大学奥尔巴尼分校的一部分)学习数学,这里是纽约州为数不多由州政府资助、专门培养高中老师的师范学校,学费极为低廉。艾伦无力承担其他大学高昂的学费,而且她当时的志向就是当一名高中数学老师,所以这里成了唯一的选择。艾伦主修数学、辅修物理,四年后获得了学士学位。

1954年,艾伦毕业回到高中母校担任数学老师。艾伦很热爱这份工作,实际上,她的很多学生就是亲戚或者朋友的孩子。对她而言,这是一个温暖的社群,她很享受在这里教书。后来为了获取正式的教师资格,艾伦又通过学生贷款去密歇根大学念了一个硕士学位。

1950年代,计算机还处于萌芽时期,而密歇根大学是少数提供此类课程的机构之一。艾伦的硕士学位要求学生必须选修两门数学系之外的课程,于是她便选修了计算机课。学校里用来教学的机器是IBM 650,它被认为是世界上第一批大规模生产的电脑,一共生产过约2000台。相对较低的售价,再加上易用的编程性,一些学校就采购用作教学。无独有偶,计算机科学领域的另外一位先驱、算法分析的奠基人高德纳(Donald Knuth),当时还是一名物理系本科生,正在距密歇根不远处俄亥俄州的凯斯西储大学,面对着一台IBM 650,并试图重写它的编译器——这也是他的计算机启蒙。

正是由于一点点来自IBM 650的编程启蒙,再加上她本人的教师背景,艾伦在IBM的校招中获得了一份工作机会:去IBM研究院教科学家们FortranLanguage,尽管艾伦此时对Fortran还一无所知。事实上,女性程序员在计算机科学推GF早期并不罕见。在50年代IBM曾大量招聘女性程序员,甚至Post过名为“My Fair Ladies”的招聘海报。为了偿还学生贷款,艾伦接受了这一份工作,并打算还清贷款以后,继续回到她热爱的高中教数学。

1957年IBM曾大力招聘女性程序员。丨图源:opentranscripts.org

教科学家们Fortran

1950年代,计算机编程仍是一项高度依赖手工操作的工作,程序员通常要手写汇编、手动管理寄存器和指令调度,很多人甚至对这类底层操作中的小贴士乐此不疲。但并非所有人都甘于这份繁琐。日后被誉为Fortran之父、并在1977年捧回图灵奖的约翰・巴克斯(John Backus),当时就厌倦了这样操作繁琐、重复性高的编程工作。他相信,应该能够用数学的方式描述问题,再由计算机自动将其转换为高效的机器代码。正是这份“懒惰”,促使他在1953年开始构思一种新的编程Language——这项工作最终演GF成为彻底改变程序外观的Fortran。

Fortran是一门全新的Language,代表着编程方式的巨大革新:程序员不必成为“硬件专家”,不再需要自己去查阅机器指令和手写汇编,而是可以直接用类似数学公式的Language来表达程序的意图。在Fortran的外观中,巴克斯和他的班底把能够生成高性能的机器码作为最高考量,而不过度堆砌Language的特性。在这一宗旨下,经过多次迭代以后,Fortran团队最终在1957年4月带来了他们的第一版编译器。

什么是编译器?计算机只听得懂“机器Language”——一串串0和1组成的指令,若表达a乘以b加c,程序员使用FortranLanguageGF行编程,就可以直接写字符串“a*b+c”。而编译器的工作即是理解这串字符代表的含义,并把它们翻译成计算机能运行的机器指令。

但从实用的角度来说,光翻译还远远不够。同一段程序,翻译得好坏差别巨大——有的跑得飞快,有的慢得让人干等。所谓“编译优化”,就是让编译器这位翻译官不只忠实翻译,还要在翻译时聪明地重排语句,即在不改变程序意思的前提下,让结果跑得更高效、更省资源。但是用户的输入程序可能五花八门,如何都能够达到比较好的优化效果呢?这在当时来说是一门全新的学问。

事实上,在Fortran诞生之前,除了巴克斯和他的队伍,很少有人相信,这种主要依靠数学形式的编程Language,能够生成表现与手写汇编媲美的代码。Fortran被推出以后,IBM的科学家们对它并不感冒,因为他们早已习惯了自己手写汇编、宁愿埋头专注科研难题,于是公司就安排了数学老师艾伦来教这些科学家们FortranLanguage——艾伦来的时候,Fortranjust now诞生3个月。事实证明,Fortran生成的汇编代码,的确做到了媲美人工优化的结果,科学家们惊讶于它生成的代码之高效,也开启了现代编程的新范式。

艾伦首先要自学,领悟这套全新Language所代表的编程理念。在阅读了它的编译器源码、并深入研究后,艾伦对编译器产生了浓厚兴趣。她没有再回到高中母校,而是继续在IBM从事编译器与代码优化的工作,这一待便是45年。

与秘密超级计算机共事

艾伦参与的第二个大项目是为Stretch/Harvest超级计算机开发编译器。

This article is published by News for reference only.
123
Loading comments…

LinksApply

Alliance Network53