首位女性图灵奖获得者离世,曾开发上古语言COBOL编译器

「编译器优化」教母

萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

历史上第一位女性图灵奖得主Frances Allen,在她88岁生日这天去世了。

Jeff Dean专门发推表示悼念。

作为编译器优化领域杰出的学者,Frances Allen见证了编译器高速发展的黄金时代。

60年代,时值计算机行业飞速发展,Allen赶上这波人才空缺,加入了IBM公司,最后一干就是45年。

期间,她负责过Stretch-Harvest(简称Stretch超算)的编译器优化,PTRAN开发,开创了针对Fortran的自动并行化技术和SSA(静态单一赋值)的IR(中间表示法)。

时至今日,IR仍被广泛应用在静态编译器和JIT中。

除此之外,她还是「上古语言」COBOL的编译器开发者。

在计算机发展历程中,「编译器」是一个非常古老的领域,甚至比操作系统还要古老

但它对推动计算机领域的发展功不可没。

在Frances Allen生前的一次访谈中,她曾提及过自己当上程序员的契机、学习编程的方式、以及对如今的部分高级语言(如C语言)的看法。

从她的一些观点中,也许能窥见编译器发展的历史。

获图灵奖,其实与性别无关

在2007年2月获图灵奖时,作为第一位女性获奖者,Frances Allen(下简称Allen)坦言,其实在那个互联网并不发达的时代,许多人只知她的名字,但不知道她的性别。

在一次IBM关于ACS项目的会议上,许多人见到她的第一面都惊叹:「你就是Allen?」

这时候她才知道,分配房间的工作人员按名字顺序编排,误将她和另一名男性分在了一个房间。

最后,大会工作人员不得不为她找了一间女佣的房间,这件事情才算过去。

Allen生前曾回忆,其实在计算机最初发展时,各公司希望招更多的女程序员。那时候大家普遍认为,女性的「细心」使得她们能展现出优秀的编程能力。

事实上,与之相反的是,时至今日,在编程相关的工作上,依旧是男性居多。

一方面与如今计算机岗位大多要求「工科」学位有关,而另一方面,Allen自己也表示,她当上程序员,其实并不因「细心」,毕竟她自己在编程中也时常犯错。

相比之下,她对数学的兴趣非常浓厚,着迷于演算过程的严密与精确。

从数学老师到程序员

在Allen身上,数学与编程的共通之处得以体现。

最初加入IBM时,Allen的目的仅仅是还硕士助学贷款,然后当数学老师(当地数学老师要求硕士学历)。

因此,相较于开发人员,Allen后来的工作更侧重于对系统结构和算法的整体把握,也主导了PTRAN项目的完整开发。

她会阅读每一块并进项目中的源码,了解算法实现的结构,如同演算过程一般,看着一个项目慢慢地被开发出来。

事实上,Allen坦言,如今产品开发中的一些弊端一直存在,但向来难以解决。

其中一个问题就是,当小组内的成员有更好的想法时,往往因为产品周期所限,而难以实现。

大概这也是如今程序员对产品开发有所抱怨的原因:短周期的运转,某种程度上限制了程序员的编程自由。

与此同时,Allen也谈及了自己学习编程的方式。

学习编程的方式

Allen表示,对于初学者而言,掌握一门编程语言最快的方式依旧是看源代码。

事实上,Allen最初入门Fortran的过程也并不愉快。

但随着对这门语言的深入理解,她被激发出了极大的兴趣,而深入理解最简单也最直接的办法,就是阅读杰出的程序员所编写的源码

对于她来说,最好的代码不是能简单又直接地解决问题,就是能通过显而易见的程序结构展现隐晦的问题。

通过研究一个同事编写的语法分析器,她研发出了PTRAN(并行翻译项目)的一部分功能,这部分功能在于它有很强的即时纠错能力。

当被问及阅读源码是否是一件非常困难的事情时,Allen认同了这一观点,她表示这一过程会非常困难,但是必须去做。

过程中可以运用很多技巧,例如列出提纲、或者事先了解一下代码适用领域,但阅读源码是无法跳过的一件事情。

只有这样,才能从最根本上掌握一门语言的用法,以及代码核心的逻辑。

而这一习惯,一直到Allen进入IBM管理层后也并未改变。

她熟识一些大学教授,对于他们所写的代码风格有所了解,对于她而言,代码结构清晰的教授,所教的学生会更值得她考虑。

除此之外,对于编程或者某一方向有热情的学生,也在她的考虑范围之内。

谈及进入管理层,Allen表示,C语言的出现也是原因之一。

「C语言的出现是一次倒退」

当被问及对如今C、Java等高级语言的看法时,Allen坦诚,自己在C语言出现后,就很少再有机会接触编程了。

这对于她而言是不小的打击。

在60年代,有很多诸如Fortran、COBOL、APL……等高级语言,这些语言所能完成的功能令人惊叹。

但C语言诞生后,摧毁了推进自动优化、自动并行化以及高级语言和机器语言自动映射技术的进程。

此后,编译器基本上不再在大学和学院中教授。

即使还有相关会议在继续召开、或是研究相关算法,但这些工作所能弥补的都微乎其微。

在她看来,C、Java、C#、Python等语言对问题的求解方法「过度地指手画脚」,是破坏计算机科学作为学术研究的元凶。

这些语言的出现,使得许多更大胆的概念被局限于已有的思想中,但想要改变并非一日之谈。

但是,即使这些语言带来的代码已经有数百万行甚至更多,Allen认为,对于计算机科学的研究仍然需要尝试,来继续打破边界。

参考来源:《编程人生(Coders at Work)》

版权所有,未经授权不得以任何形式转载及使用,违者必究。