MK ATLAS· 과학 아틀라스

마거릿 해밀턴 · 아폴로 비행 소프트웨어

컴퓨터가 잘못될 때 무엇을 먼저 해야 할까?

기술·공학· 1969· 케임브리지 · 마거릿 해밀턴 · 아폴로 비행 소프트웨어· 만들다

1분 분량갱신 2026-09-29

그때 그곳

1969년 7월 20일, 달 착륙선이 하강하는 중에 컴퓨터가 경보를 울렸습니다. 1202번 경보였습니다.

관제실에서는 착륙을 중단할지 판단해야 했습니다. 남은 시간은 몇 초였습니다.

왜 이 질문이었나

원인은 이랬습니다. 랑데부 레이더가 켜져 있어서 필요 없는 계산이 컴퓨터에 밀려들었고, 처리 용량이 넘쳤습니다.

보통의 컴퓨터라면 멈추거나 뒤죽박죽이 됩니다. 그런데 이 컴퓨터는 멈추지 않았습니다.

마거릿 해밀턴의 팀이 짠 소프트웨어에는 우선순위가 정해져 있었습니다. 용량이 넘치면 덜 중요한 일을 버리고, 착륙에 필요한 계산부터 합니다. 그리고 무슨 일이 있었는지 경보로 알립니다.

알아낸 것

착륙은 계속되었습니다. 컴퓨터가 스스로 무엇을 버릴지 판단했기 때문입니다.

해밀턴은 이 일을 하면서 소프트웨어 공학이라는 말을 만들어 썼습니다. 당시엔 프로그램을 짜는 일이 학문으로 여겨지지 않았고, 그 말을 쓰면 사람들이 웃었다고 합니다.

그가 밀어붙인 것은 잘 돌아가는 코드가 아니라 잘못될 때를 대비한 코드였습니다. 오류가 없는 프로그램을 만드는 것이 아니라, 오류가 나도 죽지 않는 프로그램을 만드는 것이죠.

지금 우리가 쓰는 모든 시스템이 이 사고방식 위에 있습니다.

이전 생각

프로그램은 예상대로 돌아가는 것을 목표로 짜였다

증거

용량 초과 상황에서 우선순위대로 작업을 버리고 착륙을 완수

그 뒤

소프트웨어 공학이 학문이 되었고, 장애를 견디는 설계가 표준이 되었다