写出阿波罗登月代码的女人

2023-11-05 03:50

本文主要是介绍写出阿波罗登月代码的女人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

去年底JD(@nevesytrof )在Twitter上分享了这张照片,获得广大回响,让这张照片一度在网路上疯传。

程序媛

这是张1969年拍摄的照片,当中的人像是数学与计算机科学先锋—Margaret Hamilton,旁边一大叠则是阿波罗11号所必要的软件清单。阿姆斯特朗他们能在月球上踏出人类的一大步,全都要感谢她所作出的贡献。

作者Three-Fingered Fox在《Medium》上解释道,自从曼哈顿计划发展出第一个原子弹以来,就鲜少有软件程序计划是由女性来主持。文中提到,这些「少数」的女性常是被动回应技术部门的要求,但其实编码途径的设计以及计算都是由她们一手包办,如同Hamilton与其所致力的阿波罗任务。

如同我们在《Wired》的文章中可以读到的,月球登陆的任务是电脑软件首次担任如此关键,并需要即时调整的角色。

而这个软件开发的重任在当时交到了Margaret Hamilton 的手上,一个自学程序设计,并且当上MIT 软件工程测试实验室主任(也就是为美国太空总署NASA 开发电脑系统的单位)的女性。

确实,在Three-Fingered Fox的文章中有所解释道:许多早期具开创性的程序设计师都是女性,她们学着实际动手做,并且写下了以前从未见过的历史新页。

最好的例子就是创造了第一个编译器以及发明「Debug」这个用法的Grace Hopper。

专访 Margaret Hamilton
1986 年,Hamilton 创立「Hamilton 科技公司」。

我们试着与她联系,当电话终于接通时,她似乎相当惊讶一个西班牙报纸会因为一张她35 岁的照片在Twitter 上爆红而打来。

「Twitter?」对啊,一个社群网站,像Facebook。

「哦!我们这个世代不用那些社群媒体」 虽然听起来让人惊奇,但Hamilton 很乐意接受访问,并希望我们用e-mail 传送问题过去。

Q:我想你对于这张照片「网路爆红」应该相当诧异吧?你喜欢这个感觉吗?

A:只要人们是说好话那就好啊!

Q:你说不使用社群网路,你觉得人们用这样的方式来对你所做的贡献表示兴趣,有怎么样的看法?

A:有人注意到你所付出的当然是件好事啰!

Q:这张照片是在阿波罗计划期间拍摄的吗?是何时呢?是谁为你拍下的?

A:(以下是引用自MIT Draper 实验室对这张照片的描述)

「1969 年(阿波罗11 号期间),由Draper 实验室摄影师所拍摄。Margaret 站在一叠由她所主导之LM 及CM 太空船舱内软件清单旁」

Q:当时与现在的编码技巧一定相当不同了?

A:对,也不太对。事实上,在这个领域有一些东西变得更进步了,但有一些则反而退步了,还有一些是在原地踏步。

Q:在人类第一次登陆月球计划中工作是什么样的感觉啊?

A:我在阿波罗所有真人驾驶的计划中,以及几个无人火箭计划中待过。当然阿波罗11 号是最令人兴奋,也是整个阿波罗计划最值得纪念的时刻。

Q:阿波罗11 号如果少了你所开发的软件就无法登陆月球,想知道这个软件主要的作用?

A:你指的是阿波罗11 号登陆时的1201/1202 号警报吗?以下是我对于这个问题及解决方式的解说。同时也是《Datamation》杂志在1971 年3/1 所刊出的内容:

「因为核对手册上的一个错误,集合雷达的开关被放置在错误的位置。因此造成了它传送了错误的讯号给电脑,结果使得电脑被要求必须在接收到许多额外的错误资讯的状况下,仍然执行所有登陆的正常功能,而这些错误资讯的解读就花了15%的时间。

当时的电脑(或者是说里头的软件)幸好是写成能够分辨当它被要求执行额外程序的状况。所以电脑送出了警报,对于太空人就像是在说:『我因为受到其他执行程序的要求而超载过了我应该执行的程序量,因此我现在必须首先执行较优先的程序,比如说:有关登陆的程序。』

事实上,这台电脑当初的设计可不只是分辨发生错误的情况。一个完整系列的复原程序也在这个软件当中。在这个情况下,软件所做出的行动是删除较低优先次序的程序,并且重新建立重要的执行程序,如果当初电脑没有辨识出这个问题而进行复原的程序,我想这场登陆月球行动不会如此成功。」

Q:你是在这段期间发明了「软件工程」一词吗?

A:软件在这个计划的初期还被当作初初学步的孩子一般对待,完全不像其他工程学科;例如像硬件工程那样的受到重视,而且在大家的眼光中他就像是艺术、魔术一般,而不是一门科学。

我一直以来坚信这项发明流着艺术与科学的血液,虽然当时很少人是这么想。因此,我致力于为软件以及那些发明者争取应有的正统性与尊重,所以我开始使用「软件工程」这样的字眼来将之与硬件还有其他工程学类做出区别。

当我第一次使用这样的语词时,大家都觉得有些好笑,甚至有很长一段时间被当作笑话。他们常笑我极端的想法。但最终,软件学科确实得到了应有的尊重!

Q:你认为你为了这个计划所作出的贡献已经受到世人足够的赞扬了吗?

A:时间会证明一切的。希望我们从这个计划中所学到的解决方案能够适用在更大规模的计划上。

Q:你觉得六零年代时对于一个女性成为一个工程师及科学家会相当困难吗?现今的状况有改善吗?

A:我想还是要看这位女性是怎么样的一个人、她为谁工作、以及身处的特定组织文化是如何。大体上来讲,过去有些事是较困难,但现今也有较困难的事。

就是后来说,有些事是过去能够接受的,因为我们对之并不甚了解,但这可能到了现在反而是令人无法接受的。当我们回顾时也常常感到惊讶。但如今我们其实还是在做许多无知的行为,比方说付给女性较男性少的薪资。

Q:相较于其他工程领域,那时有更多女性投入电脑科学的部门吗?你的同事当时是如何和你相处?与现今有何不同?

A:当时投入电脑科学的女性,通常都会被限制在较低的职位。

阿波罗计划这个案例中,我与同事如同朋友一般并肩面对困难的问题。我们主要还是专注在工作上而不管性别上的区分。对于一个人的称呼常会像是:「二楼那个」、「硬件部门那个家伙」、「资料分析那个人」、「操作系统高手」等等。

Q:你曾在其他NASA 的计划下工作?

A:所有的真人操控阿波罗计划与几个无人驾驶计划、太空实验室的内部软件、以及太空梭的初始系统软件等等。

Q:你最喜欢工作的哪一部分?

A:不间断的挑战以及那些充满创意的同事。

Q:你在1986 年创立了自己的公司。为何会跨出这步呢?

A:为了加速科技的演进并且试着让更多人能注意到。

Q:目前正在进行的计划?

A:持续演进USL(Universal Systems Language)及其自动化周期,建立一个更自动化的配置结构。


更多精彩文章,点此阅读


这篇关于写出阿波罗登月代码的女人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347219

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元