마거릿 해밀턴 (과학자)

어린 시절

마거릿 히필드는 인디애나주 파올리에서 케네스 히필드와 루스 에스더 히필드(결혼 전 파팅턴) 사이에서 태어났다. 1954년 행콕 고등학교를 졸업한 후 미시간 대학교에서 수학을 전공하였고, 1958년 얼햄 대학교에서 수학 전공과 철학 부전공으로 학사 학위를 받았다. 그녀는 석사 학위 취득을 최종 목표로 하버드의 학사 학위 과정을 밟고 있는 남편을 부양하고자 졸업과 동시에 고등학교에서 잠시동안 수학과 프랑스어를 가르쳤다. 그녀는 브랜다이스 대학교 대학원에서 이론 수학을 공부하기 위해 매사추세츠주 보스턴으로 이주하였다. 마거릿은 1960년 MIT에서 임시직으로 들어가 기상학과의 에드워드 노턴 로렌즈 교수를 위해 LGP-30과 PDP-1 컴퓨터로 날씨를 예측하는 소프트웨어(마빈 민스키의 프로젝트 MAC)를 개발했다. 해밀턴은 그 당시 컴퓨터 과학과 소프트웨어 공학의 교육 과정이 제대로 정립되지 않았다고 적었다. 그 대신, 프로그래머들은 실무 경험을 통해서 일을 배워야 했다.
마거릿은 1961년부터 1963년까지 링컨 연구소의 SAGE 계획에서 적 항공기를 탐지하는 최초의 AN/FSQ-7 컴퓨터(XD-1)용 소프트웨어를 작성하는 프로그래머 중 한 명으로 일하였다. 또한, 공군 케임브리지 연구소를 위한 소프트웨어도 작성하였다.

SAGE 계획

SAGE 계획은 시뮬레이터를 통해 기상 체계를 예측하고 움직임을 추적할 수 있는 컴퓨터 시스템을 만들기 위해 MIT에서 시작한 월윈드 계획의 연장선이었다. SAGE는 냉전 시대 잠재적인 소련의 공격에 대비해 대공 방어를 위한 군사용으로 곧 개발되었다. 해밀턴은 자신이 맡은 임무를 그녀의 입장에서 다음과 같이 설명했다. 
누군가 초심자로 조직에 들어왔을 때, 그들이 해왔던 일은 아무도 이해하지 못하거나 실행에 이를 수 없었던 프로그램을 그 사람에게 할당하는 것이었다. 내가 초심자였을 때도 그들은 나에게 프로그램을 주었다. 그것은 까다로운 프로그래밍을 해야 했고, 작성한 사람이 모든 의견을 그리스어와 라틴어로 적었다는 사실이 즐거움을 주었다. 그래서 나는 이 프로그램을 할당받고 실제로 작업을 하게 되었다. 심지어 라틴어와 그리스어로 된 답변을 출력하게 하였다. 나는 그것을 작동시킨 첫 번째 사람이었다.
이 계획에 대한 해밀턴의 노력으로 인해, 미국 항공우주국에서 그녀를 아폴로 비행 소프트웨어의 선임 개발자로 지명하게 되었다.

미국 항공우주국(NASA)

해밀턴은 당시 아폴로 우주 임무에 종사하던 MIT의 찰스 스타크 드레이퍼 연구소에 들어갔고, 마침내 아폴로와 스카이랩용 소프트웨어 개발로 인정받는 팀을 이끌게 되었다. 해밀턴의 팀은 아폴로 명령 모듈 및 달 착륙선, 후속 스카이랩을 위해 다양한 선임 과학자가 설계한 알고리즘을 포함하는 기내 소프트웨어 개발을 책임졌다. 팀의 또 다른 부서에서는 해밀턴이 설계하고 개발한 디스플레이 인터페이스 루틴(일명 우선 순위 디스플레이), 재시작과 같은 오류 감지 및 복구 소프트웨어를 비롯한 시스템 소프트웨어를 설계하고 개발하였다. 해밀턴은 컴퓨터 과학 과정이 드물고 소프트웨어 공학 과정이 없었던 시기에 실무 경험을 쌓기 위해 일하였다.
그녀의 전문 분야는 시스템 설계 및 소프트웨어 개발, 엔터프라이즈 및 프로세스 모델링, 개발 패러다임, 공식 시스템 모델링 언어, 시스템 모델링 및 개발을 위한 시스템 중심 객체, 자동화 주기 환경, 소프트웨어 신뢰성 및 재사용 극대화 방법, 도메인 분석, 내장 언어 속성에 의한 정확성, 강력한 시스템을 위한 개방형 아키텍처 기술, 전체 주기 자동화, 품질 보증, 완벽한 통합, 오류 감지 및 복구 기술, 인간기계 인터페이스 시스템, 운영 체제, 종단간 시험 기술, 주기 관리 기술이 있다.

아폴로 11호

아폴로 11호 임무의 결정적 순간 중 하나는, 아폴로 가이던스 컴퓨터가 기내 비행 소프트웨어와 함께 달 착륙의 중단을 막은 것이다. 달착륙선이 달 표면에 도달하기 3분 전, 몇 대의 컴퓨터가 경보를 울렸다. 착륙선의 랑데부 레이다에 부정확한 위상 전원이 공급되자 컴퓨터가 과부하를 일으켜 일시 중단된 것이었다. 프로그램 경보는 "실행 오버플로"를 표시했는데, 이는 길잡이 컴퓨터가 모든 작업을 실시간으로 완료할 수 없고 그 중 일부를 연기해야 함을 의미했다. J. 할콤 레이닝이 설계한 비동기 실행은 작업 우선 순위를 매겨 컴퓨터가 늘어난 요구에 잘 대처할 수 있도록 해주었다. 해밀턴의 우선 순위 경보 표시는 우주비행사의 정상적인 화면 표시를 중단시키고 "우주비행사에게 실행/비실행 결정권(착륙 또는 착륙하지 않기)을 부여"하여 비상 사태를 경고하였다. 임무를 통제하는 NASA의 컴퓨터 공학자 잭 가먼은 우주비행사들에게 우선 순위 표시로 제시된 오류의 의미를 인지하여 "실행, 실행!"을 외쳤고, 그들은 계속해서 실행했다. 해밀턴을 NASA 스페이스 액트 어워드 후보로 지명한 선임 기술자 폴 커토 박사는 해밀턴의 작업을 "극단적으로 신뢰할 수 있는 소프트웨어 설계의 토대"로 칭했다.
해밀턴은 이 사건을 다음과 같이 적었다.
컴퓨터(또는 설치된 소프트웨어)는 수행해야 할 것보다 더 많은 작업을 수행하라는 요청을 받았음을 인식할 정도로 똑똑했다. 그런 다음 우주비행사에게 "나는 지금 해야 할 것보다 많은 작업으로 과부하가 걸려 더 중요한 작업만 할 것입니다." 이 작업은 즉, 착륙에 필요한 것들 ... 사실, 이 컴퓨터는 오류 상황을 인식하는 것 이상을 하도록 프로그래밍되었다. 소프트웨어 안에는 완전한 복구 프로그램 세트가 통합되어 있었다. 이 경우, 소프트웨어의 행동은 우선 순위가 낮은 작업을 제거하고 더 중요한 작업을 다시 설정하는 것이었다 ... 컴퓨터가 이 문제를 인지하지 못하고 복구 조치를 취했다면, 아폴로 11호가 성공적으로 달에 착륙했을지 의문이 든다.
— 매사추세츠 캠브리지의 MIT 드레이퍼 연구소 아폴로 비행 컴퓨터 프로그래밍 감독, 마거릿 H. 해밀턴의 편지, "Computer Got Loaded", Datamation 출판, 1971년 3월 1일

사생활

해밀턴은 얼햄 대학교에서 남편 제임스 콕스 해밀턴을 만났다. 두 사람은 히필드가 학사 학위를 받은 다음인 1950년대 후반에 결혼했다. 그들은 그들은 로렌이라는 이름의 딸을 낳았고, 딸은 자라서 억만장자이자 배우, 무용가, 안무가인 제임스 콕스 챔버스와 결혼하였다. 해밀턴은 주말 동안 주로 딸과 시간을 보내고 나중에 아폴로의 명령 모듈 컴퓨터에 추가되는 루틴을 작성하기 위해 종종 로렌을 실험실로 데려갔다. 마거릿 해밀턴과 제임스 콕스 해밀턴은 이혼하였다.