0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Linux爱好者 来源:量子位 2020-08-14 16:18 次阅读

历史上第一位女性图灵奖得主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认为,对于计算机科学的研究仍然需要尝试,来继续打破边界。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • COBOL
    +关注

    关注

    0

    文章

    5

    浏览量

    9705
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48627
  • 图灵奖
    +关注

    关注

    0

    文章

    5

    浏览量

    2001

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

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言:嵌入式开发中的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存器、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由
    发表于 04-26 14:53 75次阅读
    C<b class='flag-5'>语言</b>:嵌入式<b class='flag-5'>开发</b>中的关键<b class='flag-5'>编译器</b>角色

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 370次阅读
    QT<b class='flag-5'>开发</b>学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    【飞腾派4G版免费试用】仙女姐姐的嵌入式实验室之三~配置PhyGCC飞腾编译器

    和编程语言的新世界 Grace Hopper是耶鲁大学第一位女博士,第一位女性美国海军将军,发明了世界上第一个编译器,第一个全美科技女性
    发表于 12-16 19:12

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 413次阅读
    <b class='flag-5'>编译器</b>的优化选项

    新版编译器的设计思路和优化方法

    小程序编译器在小程序开发、预览、发布各个阶段都需要使用,因此编译器性能会直接影响到开发开发效率,也会影响到
    发表于 10-13 11:21 152次阅读
    新版<b class='flag-5'>编译器</b>的设计思路和优化方法

    嵌入式开发中的C语言编译器设置

    编译器的语义检查很弱小,甚至还会“掩盖”错误。现代的编译器设计是件浩瀚的工程,为了让编译器设计简单一些,目前几乎所有编译器的语义检查都比较弱小。为了
    发表于 10-11 12:43 283次阅读

    ARM编译器5.06版入门指南

    的ARMLINK支持的所有功能。 如果您使用ARM编译器作为独立产品,则默认使用32位版本。 对于DS-5中的ARM编译器,链接版本取决于主机平台。 32位工具具有32位链接,64
    发表于 08-23 07:25

    RealView编译工具4.0版编译器参考指南

    编译器有几种模式,在这些模式中,要么强制遵守源语言,要么放松遵守: 严格模式在严格模式下,编译器强制遵守与源语言相关的语言标准。 例如,使用
    发表于 08-18 06:13

    某种编程语言的第一个编译器是怎么来的呢?

    不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是“鸡生蛋,蛋生鸡”的问题吗?
    的头像 发表于 08-14 09:31 527次阅读
    某种编程<b class='flag-5'>语言</b>的第一个<b class='flag-5'>编译器</b>是怎么来的呢?

    RealView用于BREW编译器和库的编译工具指南

    只要有可能,编译器就会采用Windows/MS-DOS用户所熟悉的广泛使用的命令行选项。 ARM C编译器按照ISO/IEC 9899:1990(E)的定义编译C语言,包括其技术规范1
    发表于 08-12 07:38

    循环模型编译器Verilog和System Verilog语言支持指南

    本节介绍循环模型编译器响应不受支持或被忽略的构造的行为。 一般而言,Cycle Model Compiler支持Verilog和SystemVerilog语言的大部分可合成子集。 如果周期模型编译器
    发表于 08-12 06:55

    编译原理:语言处理器、编译器的结构

    计算机是只认识二进制的,但是我们平常开发中根本不会使用二进制进行开发,我们使用的都是 Java、C 这类的高级语言,每种语言都会经过一系列的转换才能被计算机识别,那么到底是谁做的这项工
    发表于 08-09 09:52 196次阅读
    <b class='flag-5'>编译</b>原理:<b class='flag-5'>语言</b>处理器、<b class='flag-5'>编译器</b>的结构

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制器开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C编译器更适合8051内核。 SDCC是命令行固件
    的头像 发表于 06-16 15:19 3690次阅读

    米尔瑞萨RZ/G2L开发板 安装交叉编译器

    米尔瑞萨RZ/G2L开发板安装交叉编译器
    的头像 发表于 05-26 22:05 1714次阅读
    米尔瑞萨RZ/G2L<b class='flag-5'>开发</b>板 安装交叉<b class='flag-5'>编译器</b>

    峰会回顾第6期 | 毕昇编译器与OpenHarmony RISC-V生态的进展

    设计经验,负责探索先进软硬件协同设计技术、工具以及方法。   文章内 容来 源 第一届开放原子开源基金会OpenHarmony技术峰会——开发者工具分论坛   视频回顾   正 文 内 容   由C、C++、Java等高级语言编码的人类可读源代码需要通过
    的头像 发表于 05-05 15:46 1133次阅读
    峰会回顾第6期 | 毕昇<b class='flag-5'>编译器</b>与OpenHarmony RISC-V生态的进展