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

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)及其自动化周期,建立一个更自动化的配置结构。


更多精彩文章,点此阅读


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


原文地址:https://blog.csdn.net/ak619/article/details/47394481
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/347219

相关文章

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN