注册
登录
标签
统计
帮助
中神通公司交流论坛
»
龙门阵
» [人物]她一边看孩子,一边写程序,一边把阿波罗送上月球……
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
[人物]她一边看孩子,一边写程序,一边把阿波罗送上月球……
linda
琳达
版主
发短消息
加为好友
当前在线
1
#
大
中
小
发表于 2016-5-13 21:51
只看该作者
[人物]她一边看孩子,一边写程序,一边把阿波罗送上月球……
虽然现在程序员看似是个男女数量极其不平均的岗位,但就在不远的过去,在计算机拓荒的年代,却是有不少女性程序员为此贡献了智慧与青春。
玛格丽特·希菲尔德·汉密尔顿(Margaret Heafield Hamilton)就是其中一个。
一边看孩子,一边写程序
玛格丽特本姓希菲尔德。她1936年生于美国一个普通家庭,普通地读完了高中和大学,主修数学。在读书的时候,她嫁给了詹姆斯·汉密尔顿(James Cox Hamilton),成了汉密尔顿太太。
她毕业之后找了一份教师的工作,教数学和法语。那时候,她的丈夫还在哈佛法学院读书,她勇敢地承担起了家庭的责任。不过,她读书深造的愿望并没有因此熄灭。待丈夫安定下来,两人一起搬去了波士顿,玛格丽特准备去再读一个抽象数学的学位。
然而,两人的小日子还是太紧张了。此时一个工作机会摆在了她面前。当时计算机科学的先锋MIT里一个实验室在招临时编码工。玛格丽特抱着试试看的态度,就这样踏进了程序员的殿堂。
一开始,她为天体学系写天气预报系统的代码。因为工作出色,转为正式工,后来又去了大名鼎鼎的林肯实验室,为美国军方SAGE项目写代码——在冷战之弦拉得最紧的1960年代,用电脑程序帮助侦查危险的“不友好的飞行物”。
那时候还没有“软件工程”这个学科,更没有“软件工程师”这种高洋上的名头,没人像今天的“计算概论”一样教,辛苦在计算机硬件上直接编写程序的程序员们,就像从前的手工业工人一样,靠的大多是一点点摸索出来的经验。
而一张白纸的玛格丽特,面前的都是前人扔给她的棘手程序。这些毫无头绪的程序有多难处理呢?前人不得不用希腊语和拉丁语写评论来取乐。而玛格丽特是全实验室第一个解决问题的人,还把调试方法翻译成希腊语和拉丁语,漂漂亮亮地回敬了一发。
玛格丽特的女儿劳伦(Lauren),也在这时候出生了。繁忙的妈妈玛格丽特不得不将小劳伦带去工作,让她睡在查尔斯河畔实验室的地板上,醒来的时候兀自玩耍。
当时的人们对于这样一个“工作狂妈妈”十分不理解。“你怎么这么不顾你的小孩?”
玛格丽特并不在意。她热爱着她这份虽然不时枯燥,但却充满挑战和“神秘感”的工作。她也喜欢着实验室,喜欢每个人开的极客冷笑话,工作结束之后和每个人去喝酒。“就跟实验室里其他男孩子一模一样。”
而勤奋的玛格丽特,还会在喝完酒之后,忽然想起程序里的一个小错误,连夜飞奔回实验室修改。
“不重要”的程序,救了阿波罗一命
由于出色的表现,玛格丽特获得了另外一个机会:加入MIT的Charles Stark Draper实验室,带领一个小团队,为NASA的阿波罗计划写软件。
在阿波罗的最初的预算报告中,根本就没有“软件”二字。不过后来,NASA意识到了软件的重要,逐渐把软件相关的团队扩大到了400多人。但玛格丽特依然是一个无名小卒。她负责的,大概是整个计划当中最不受重视的部分:“万一”任务失败之后的后备方案。但所有人都不重视,觉得这不可能发生。连这个部分的名字,都被称作“Forget it”。
“我想为整个系统中加入一旦人工出错之后的备用纠错方案,”玛格丽特说,“但是他们不同意。他们说,宇航员们都经过了严格的、完美的训练,‘绝对不可能出错’。”
也的确,那时候计算机的存储空间和计算能力都十分有限,决策者不希望有任何“累赘”的部分。玛格丽特无奈,只好在操作系统里做了一个备注,“不要在飞行的时候选择P01模式”。
但是,坏事儿还是发生了。阿波罗8号环绕月球的任务中,宇航员罗威尔(Jim Lovell)一时疏忽,按下了P01模式,所有的巡航数据都被清空了,飞船分分钟迷路。休斯顿紧急打来电话,玛格丽特领着一群程序员,连夜奋战了9个小时,过了每一行代码,修复了这个问题,数据被重新上传上去。阿波罗8号得以成功返航。
而真正的考验还在后面。随着登月计划紧锣密鼓的进行,美国政府和NASA都绷紧了弦,苏联就在背后,一刻也不能停止。玛格丽特加班工作的时候也越来越多了。而成就总是伴随着错误和风险——就在阿波罗11号历史性着陆月面的3分钟之前,忽然警报大作,轨交雷达发来了大量的数据涌入电脑存储区,快把电脑弄崩溃了。若是系统崩溃,飞船将毫无悬念地坠毁在月面,“人类的一小步”可能是一个大坑和两条生命。
但是,玛格丽特设计的系统顶住了这个压力。在大量的数据涌入电脑的时候,最宝贵的计算资源,被用于最关键的部分,比如安全登陆本身,而处理不重要的雷达交互数据的任务被砍掉,让程序可以随时中止低优先级任务,专注于高优先级任务。
这次的事件,也让她提出了后来的“异步程序”的概念。即程序可以不用等待当前任务响应,先处理其它任务,待到任务处理完成之后再接受任务完成的通知。这也提高计算效率,防止程序被卡死。用开发术语来说,玛格丽特的程序“鲁棒性”(Robust)非常高,在出错的时候更稳定、更可靠。
玛格丽特拯救了人类的登月计划。她不仅努力、聪明,而且心思缜密,她的团队在每次程序确定之后,都会一遍遍严格地测试,使用模拟器(尽管还非常初级、简陋)来模拟登陆状况。许多问题她早就考虑到了,毕竟“不出错”永远都是一个理想状态。
当时的程序员们工作系统化程度很低,如果出现了错误,程序员们就潦草地往“出错理由”里面填一个“有bug”完事儿。玛格丽特认为这远远不够。她认为程序员们需要理解错误,梳理错误的原因,并防止下一次程序出错。这种我们现在看来完全是常识的东西,在计算机的“蛮荒年代”,需要一颗清醒而负责的头脑来制定最初的规范。
玛格丽特打趣说,自己如此努力,是因为“不想在报纸头版头条上看到‘阿波罗计划失败,玛格丽特团队难辞其咎’”。“责任感”三个字,或许在她身上,比什么都清晰。
这就是她写的代码,反复修改的版本,几乎快要超过她娇小的身躯了。就是这些代码,写好之后打印出来,然后被送到另外一个小工作室,在那儿有一帮精于针线活儿的女士,用铜圈“写”到硬件上……
(也不要再想当然地说计算机是男人的事业了。)
“软件工程师”,一个程序员的自我修养
勤奋,充满责任感,又一直对自己的事业抱有热爱。这就是一个软件工程师的自我修养。
前面不是说到,那个年代不是还没有“软件工程”的概念么?在玛格丽特之前,写程序是一门手艺,仿佛变法术或者凭经验拼凑一般,而且没有实体的东西产出——感觉就像在写文章,没人称呼一个作者为“文字工程师”吧。
而玛格丽特用自己的实践,赋予了这个词全新的现实意义。她说,“希望给予给做软件的人们以尊重,与做硬件和其它的人一样,在这个宏大的工程里各司其责”。她开始用“软件工程师”来称呼她在内的程序员。
一开始,大家都带着一点开玩笑的态度在用这个词,然而,在她的推动下,“软件工程”成了一门科学,更规范、更系统,玛格丽特将程序员这份事业提升了一个高度。玛格丽特团队写的程序框架,也用在了许许多多其它的太空计划、乃至后来的客机系统上,就连你坐的飞机,也该感谢她的代码呢。而她在自己所涉及到的许多领域,都有创见——比如系统设计、软件开发、过程模型、开发范式、软件可靠性、周期自动化等等等等。当时400人团队所做的事,已经转化为规模超过 4000 亿美元的巨大产业。
然后我们现在的程序员们,就有了“软件工程师”这个真正的工程师头衔。
《WIRED》上最近的她。
离开NASA的玛格丽特自立门户,继续在软件工程领域发光发热,2003年,她因技术和科学贡献获NASA杰出太空行动奖(Exceptional Space Act Award。该奖奖金37,200美元,是美国宇航局史上对个人的最大奖赏)。是的,人们都不应该忘记,在层叠的代码背后,那个时常沉默的女孩,也不要忘记为早期的计算机事业付出辛劳的女性们。即使现在也一样。
记住你的前人,然后在她/他们铺下的道路上前进。
来源:果壳网
UID
123
帖子
1849
精华
5
积分
50
阅读权限
100
在线时间
780 小时
注册时间
2013-8-15
最后登录
2025-5-24
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
最近访问的版块 ...
真实IT经验
IDP规则及IPS状态
官方发布
通知公告
产品下载
购买咨询
技术讨论
系统管理
系统管理
状态统计
访问控制
基础策略
内置服务
网络设置
应用过滤
特殊应用
网络审计
WEB审计过滤(WAF)
DNS过滤
WEB代理及过滤
FTP、POP3、SMTP过滤
MSN、QQ过滤
VOIP应用
防病毒、防垃圾邮件引擎
入侵防御
蜜罐检测
IDP规则及IPS状态
远程接入
用户认证
IKEv2/IPsec
OCSERV
PPTP/L2TP
OpenVPN/SSLVPN
WireGuard
SoftEther/SSTP
SSL接入
大地云控
IT技术交流
硬件选型
虚拟化&云计算&SDN&NFV
真实IT经验
灌水聊天
同行动态
行业信息
龙门阵