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

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

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can