마거릿 해밀턴 · 아폴로 비행 소프트웨어
컴퓨터가 잘못될 때 무엇을 먼저 해야 할까?
그때 그곳
1969년 7월 20일, 달 착륙선이 하강하는 중에 컴퓨터가 경보를 울렸습니다. 1202번 경보였습니다.
관제실에서는 착륙을 중단할지 판단해야 했습니다. 남은 시간은 몇 초였습니다.
왜 이 질문이었나
원인은 이랬습니다. 랑데부 레이더가 켜져 있어서 필요 없는 계산이 컴퓨터에 밀려들었고, 처리 용량이 넘쳤습니다.
보통의 컴퓨터라면 멈추거나 뒤죽박죽이 됩니다. 그런데 이 컴퓨터는 멈추지 않았습니다.
마거릿 해밀턴의 팀이 짠 소프트웨어에는 우선순위가 정해져 있었습니다. 용량이 넘치면 덜 중요한 일을 버리고, 착륙에 필요한 계산부터 합니다. 그리고 무슨 일이 있었는지 경보로 알립니다.
알아낸 것
착륙은 계속되었습니다. 컴퓨터가 스스로 무엇을 버릴지 판단했기 때문입니다.
해밀턴은 이 일을 하면서 소프트웨어 공학이라는 말을 만들어 썼습니다. 당시엔 프로그램을 짜는 일이 학문으로 여겨지지 않았고, 그 말을 쓰면 사람들이 웃었다고 합니다.
그가 밀어붙인 것은 잘 돌아가는 코드가 아니라 잘못될 때를 대비한 코드였습니다. 오류가 없는 프로그램을 만드는 것이 아니라, 오류가 나도 죽지 않는 프로그램을 만드는 것이죠.
지금 우리가 쓰는 모든 시스템이 이 사고방식 위에 있습니다.
이전 생각
프로그램은 예상대로 돌아가는 것을 목표로 짜였다
증거
용량 초과 상황에서 우선순위대로 작업을 버리고 착륙을 완수
그 뒤
소프트웨어 공학이 학문이 되었고, 장애를 견디는 설계가 표준이 되었다