玛格丽特·希菲尔德·汉密尔顿(英语:Margaret Heafield Hamilton,1936年8月17日-),美国计算机科学家,系统工程师和企业家,曾担任MIT仪器实验室(英语:Charles Stark Draper Laboratory)软件工程部的主管(Director),帮助该实验室开发阿波罗计划中航天器搭载的飞行软件,其编写的程序都以最大程度防止崩溃为目的,从而防止了阿波罗11号登月计划中缀。1986年,她在马萨诸赛州剑桥镇创立了汉密尔顿技术有限公司(Hamilton Technologies, Inc),并担任CEO。该公司围绕通用系统语言(英语:Universal Systems Language)进行系统和软件工程开发,此一概念则基于汉密尔顿的“开发先于事实”(Development Before the Fact)的设计原则。
至今,汉密尔顿已发表了超过130篇论文、会议记录和报告,内容包含60余个项目,以及她本人参与的6项主要课题。
玛格丽特·希菲尔德的父母分别名叫肯尼斯·希菲尔德(Kenneth Heafield)和露丝·希菲尔德(Ruth Esther Heafield)。1954年,她从汉考克高中(Hancock High School)毕业,随后入读厄勒姆学院(英语:Earlham College),并于四年后获取文学士学位,专业是数学,辅修哲学。大学学成后,她曾短暂在做过高中数学和法语老师,其时她的丈夫仍未本科毕业。之后她搬到了麻省波士顿,原计划入读布兰迪斯大学,完成抽象代数方向的研究生学业,但1960年却得到了一份麻省理工学院的临时的软件开发职位,负责编写在PDP-1和LGP-30(英语:LGP-30)计算机上运行的天气预报软件,工作地点则是由马文·闵斯基领导的MIT计算机科学和人工智能实验室。她的直接上司是爱德华·诺顿·洛伦茨教授,后者正在气象学系研究对大气进行数学建模。在当时,计算机科学和软件工程还算不上是学科,程序员们都是通过工作积累经验。
1961至1963年间,她转而为林肯实验室的贤者系统工作,期间为第一台AN/FSQ-7作战指挥中央系统(英语:AN/FSQ-7 Combat Direction Central)编写探测敌方飞行的软件。同期,她还在美国空军剑桥研究实验室(英语:Air Force Cambridge Research Laboratories)编写软件。
在结束前一段工作后,汉密尔顿加入了当时还名叫“MIT仪器实验室”的查尔斯·斯塔克·德雷珀实验室(英语:Charles Stark Draper Laboratory),该实验室是阿波罗计划的一部分。而汉密尔顿则在1965年成为了其软件编程部门的主管。汉密尔顿负责编写全新的月球表面导航软件,以及后来该软件在其他项目中的各个版本(比如天空实验室计划)。
这一过程中,她在系统设计、软件开发、项目和过程建模、开发模式、形式化系统建模语言、软件可用性和复用性最大化等等领域都获取了不少创新。此外,她还创立了异步软件、优先级调配等新概念。
汉密尔顿的程序曾防止了阿波罗11号登月任务失败:在阿波罗登月舱到达月球表面三分钟前,数个计算机警报响起,表示计算机输入数据过多,原因是雷达系统更新了系统中的一个强制计数器,致使主机发生周期挪用(英语:Cycle stealing)。但由于汉密尔顿的软件结构扎实,整个系统仍然可以工作。阿波罗的机载软件是以异步执行为思想开发的,高优先级的任务能打断低优先级任务。起初,报警信号被认为是雷达系统被操作人员错误开启,但后来的一项分析报告揭示,一个硬件设计错误导致雷达给主机提供了错误信息。
汉密尔顿本人曾这样总结这一事件:
登陆雷达开关放在了错误的位置,计算机收到了不少错误的信号。结果就是计算机既得执行着陆必须的计算,又要接受这些占用其15%时间的额外数据。但是它,或说是它里面的软件,聪明到可以判断它执行着不该执行的任务,所以就发出了警报……实际上,这台计算机不光能报警,它有着一整套恢复措施,这种情况下,计算机能自动剔除低级别任务以保证重要任务得以完成……如果当时计算机不能发现错误所在并从中恢复,我怀疑阿波罗号不能成功登月。
1976至1984年间,汉密尔顿担任了她自己创立的“高阶软件”(Higher Order Software)公司的CEO,基于公司的开发模式,完成了一款名为USE.IT的产品。
1986年,她在麻省剑桥镇创立了汉密尔顿技术有限公司(Hamilton Technologies, Inc.),并出任CEO。公司围绕通用系统语言(Universal Systems Language)及其自动化环境001 Tool Suite创建,这些都是基于她本人的开发先于事实(Development Before The Fact)的理念。
汉密尔顿被认为发明了软件工程一词。在这一领域,她还是并行计算、优先级调配、端对端测试等技术的先驱者。
玛格丽特在大学期间遇到了后来的丈夫,詹姆斯·汉密尔顿(James Cox Hamilton; 1937-2014),五十年代末玛格丽特毕业后两人结婚,育有一个女儿,但二人最终离婚。