Hacker News

Margaret Hamilton has died

마거릿 해밀턴 별세 — 아폴로 소프트웨어를 이끈 컴퓨팅 선구자

아폴로(Apollo) 우주선의 비행 소프트웨어 개발팀을 이끈 컴퓨터 과학자 마거릿 해밀턴(Margaret Hamilton)이 90세로 세상을 떠났습니다. 오류를 예상하고 우선순위를 조정하는 소프트웨어 설계로 아폴로 임무에 기여했으며, 소프트웨어 공학을 독립된 공학 분야로 인정받게 하는 데 힘썼습니다.

AI 요약

마거릿 해밀턴은 MIT 계측연구소(Instrumentation Lab)에서 NASA 아폴로 프로그램의 탑재 비행 소프트웨어 개발팀을 이끌었습니다. 9월 30일 90세로 세상을 떠났습니다. 1959년 MIT에서 프로그래밍을 시작해 기상 예측 소프트웨어와 미국 최초의 방공 체계 SAGE 프로젝트에 참여했고, 이 시기에 소프트웨어 신뢰성에 관심을 가졌습니다.

아폴로 비행 소프트웨어를 이끌다

1965년 NASA가 달 착륙 임무용 소프트웨어를 개발할 사람을 찾자 해밀턴은 아폴로 프로젝트에 합류했습니다. 무인 임무용 소프트웨어를 만든 뒤 유인 임무의 탑재 비행 소프트웨어 개발팀을 맡았습니다. 1968년에는 지휘·서비스 모듈 팀의 부책임자가 됐으며, 아폴로 소프트웨어 작업에는 400명 넘게 참여했습니다.

해밀턴은 오류를 미리 막거나 시스템이 스스로 처리하도록 하는 방어적 프로그래밍(defensive programming)을 강조했습니다. 딸 로런이 비행 시뮬레이터에서 발사 전 프로그램 P01을 실행해 시뮬레이터가 멈춘 일을 겪은 뒤, 비행 중 P01을 실행하지 말라는 경고를 기술 문서에 넣었습니다. 실제 임무에서 같은 실수가 일어나지 않도록 소프트웨어를 바꾸자고도 제안했지만, 훈련받은 우주비행사는 그런 실수를 하지 않을 것이라는 이유로 받아들여지지 않았습니다. 1968년 아폴로 8호에서 짐 러벨이 비행 중 실수로 P01을 실행해 항법 데이터가 사라지자 해밀턴 팀이 문제 해결에 나섰고, 이후 제안한 변경 사항이 프로그램에 반영됐습니다.

1969년 아폴로 11호 달 착륙 직전에는 컴퓨터가 1202 경보를 내보냈습니다. 하드웨어 스위치 오류로 컴퓨터가 과부하 상태였지만, 해밀턴 팀이 만든 우선순위 기반 소프트웨어(priority-driven software)는 불필요한 작업을 중단하고 임무에 필요한 작업을 우선 처리했습니다. 휴스턴 관제센터는 착륙을 계속하도록 승인했고, 우주비행사 두 명이 처음으로 달 표면에 발을 디뎠습니다.

소프트웨어 공학을 독립된 분야로

해밀턴은 1976년 소프트웨어 회사 Higher Order Software를 세웠고, 1980년대에는 Hamilton Technologies를 창업했습니다. 두 회사는 오류 예방과 결함 허용(fault tolerance)을 바탕으로 했습니다. Hamilton Technologies의 주요 제품인 Universal Systems Language(USL)는 복잡한 소프트웨어 시스템을 설계하는 언어이자 방법론입니다.

그는 소프트웨어를 하드웨어와 구별되는 공학 분야로 인정받도록 ‘소프트웨어 공학(software engineering)’이라는 용어를 사용하기 시작했다고 말했습니다. 당시에는 그 표현이 농담거리였지만, 소프트웨어 개발도 다른 공학 분야와 같은 존중을 받아야 한다고 주장했습니다. 2016년에는 버락 오바마 대통령에게 자유의 메달을 받았습니다. MIT는 해밀턴이 130편 넘는 출판물을 썼다고 전하며, 아폴로 소프트웨어 개발과 함께 창업가·멘토로서 이어간 활동도 소개합니다.

Hacker News 반응

  • @WarOnPrivacy — 안타깝습니다. 뛰어난 사람들이 가득한 분야에서도 두드러진 분이었습니다. 여기 사진이 많은 사람에게 첫 만남이 되곤 합니다.
  • @EvanAnderson — 컴퓨터 역사 박물관(Computer History Museum)이 만든 구술 기록이 아주 좋습니다. 레비의 《해커스(Hackers)》에는 TX-0에서 밤늦게 장난을 치다가 한 학자가 돌리던 기상 시뮬레이션 코드를 망가뜨린 이야기가 나옵니다. 이 구술 기록을 듣고 나니 프로그래머는 마거릿이었고, 코드는 에드워드 로렌츠 교수의 작업이었다고 생각합니다.
  • @bitwize — 저는 밀트 브라이스의 정보 시스템 방법론 PRIDE에 관해 자주 이야기했습니다. 상업적으로 이용할 수 있는 엄밀한 소프트웨어 개발 방법론 가운데 초기 사례였고, 기업의 정보 시스템 개발을 난해한 기술에서 검증 가능하고 반복 가능한 과학으로 바꾸려는 첫 진지한 시도였습니다. 선례가 많지 않습니다. 하지만 마거릿 해밀턴도 그 선구자 가운데 한 명입니다. 아이디어를 세상에 내놓았고, PRIDE가 이를 상용화해 기업 IT 조직에 받아들여지도록 했습니다.
  • @muunbo — 마거릿 해밀턴이 ‘소프트웨어 엔지니어’라는 말을 실제로 만든 것으로 알고 있습니다. 편히 쉬시길 바랍니다.
    • @catskull — 맞습니다. 몇 년 전에 그 출처를 찾아냈습니다. 잘 알려지지 않은 교재 인터뷰를 추적해 제 블로그에 다시 올렸습니다.
    • @srcreigh — 자료를 찾아 공개해주셔서 정말 감사합니다.
  • @schaefer — 원래 아폴로 코드 중 읽어볼 수 있는 자료가 있나요?
    • @dudewhocodes — github.com/chrislgarry/apollo-11
    • @xtajv — 질문에 직접 답하는 자료는 아니지만, 프랭크 오브라이언의 《The Apollo Guidance Computer: Architecture and Operation》을 진심으로 추천합니다. 선임 엔지니어가 신입에게 코드베이스를 설명하는 듯한 책입니다.
  • @jshier — 보통은 굳이 정정하지 않지만, 유명한 사진에서 해밀턴 옆에 있는 것은 실제 AGC나 달 착륙선 소스 코드가 아니라 아폴로 시뮬레이터 실행 결과를 출력한 종이입니다. 제가 기억하기로는 아폴로 11호 당시 달 착륙선 유도 소프트웨어를 만든 연구소의 시뮬레이션 부문에서 일했고, 1971년 연구소장이 됐습니다.
    • @dzonga — 정정해주셔서 감사합니다. 새로 알았습니다.
  • @diskzero — MIT 계측연구소와 드레이퍼 연구소(Draper Lab)에서 아폴로 시대에 일했던 분들이 세운 벤처캐피털 회사의 투자를 받은 스타트업에서 일하며 해밀턴과 다른 연구소 사람들을 만났습니다. 대화할 때 제가 감당하기 어려울 정도였습니다. 30년 전쯤 형식화된 제어 시스템에 관해 이야기하셨는데, 흥미로웠지만 당시에는 전혀 이해하지 못했습니다. 저희는 별것 아닌 멀티미디어 CD-ROM 회사였고, 그 자리에 함께한 것만으로 기뻤습니다.

원문: MIT News / 번역·요약: Trawling