Dziś wiemy już, że zdecydowano się kontynuować zniżanie, a lądownik bezpiecznie osiadł na powierzchni. Neil Armstrong, a wkrótce po nim Edwin "Buzz" Aldrin, jako pierwsi ludzie na świecie postawili stopę na Księżycu. Misja Apollo 11 okazała się ogromnym sukcesem, za którym stała między innymi Margaret Hamilton. To amerykańska programistka kierująca 400-osobowym zespołem odpowiedzialnym za stworzenie oprogramowania dla komputerów pokładowych modułu księżycowego.
Prawdziwą siłą Hamilton okazała się praca u podstaw nad czymś, o czym w czasach Zimnej Wojny większość wolała nie myśleć - porażkach i czarnych scenariuszach. Przypadkach, w których z różnych względów konieczne było przerwanie misji. Jak w takim przypadku powinny zachować się komputery pokładowe? Co zrobić w sytuacji, kiedy astronauta omyłkowo ustawi jeden z przełączników w niewłaściwej pozycji? Na takie sytuacje też trzeba było się przygotować.
W 1958 roku Margaret Hamilton ukończyła studia pierwszego stopnia w Earlham College na wydziale matematyki. W 1960 roku przeniosła się do Bostonu, aby wspierać męża w 3-letnich studiach prawniczych na Harvardzie. Nie zamierzała jednak tracić czasu na, jak to sama ujęła, 'serwowanie herbaty' i podjęła pracę tymczasową w słynnym MIT (Massachusetts Institute of Technology).
Tam pod okiem dr. Edwarda N. Lorenza, matematyka, twórcy słynnego terminu "efekt motyla", zaczęła stawiać pierwsze kroki w świecie programowania, tworząc kod do systemów prognozowania pogody. W tamtym czasie priorytet stanowiła nadal inżynieria sprzętu i pracę nad nim powierzano głównie mężczyznom. Rolę oprogramowania spychano na margines, podobnie jak kobiety, którym przydzielano mniej odpowiedzialne zadania.
Margaret Hamilton w pracach nad projektem Apollo fot. Wikipedia (domena publiczna)
Tymczasem w latach 1961-1963 Hamilton pracowała już przy amerykańskim systemie obrony powietrznej SAGE. To właśnie tam pierwszy raz zainteresowała ją kwestia niezawodności oprogramowania. Badanie scenariuszy, w których komputer zawiesza się na skutek błędu w kodzie lub niewłaściwego działania użytkownika okazało się kluczowe dla rozwoju programu Apollo, zapoczątkowanego w 1961 roku przez prezydenta Kennedy’ego.
Hamilton stała się również autorką terminu “inżynieria oprogramowania”. Zaczęła go używać jako pierwsza i zwracać uwagę na rosnące znaczenie oprogramowania w procesie projektowania i tworzenia nowych produktów.
Drogi Margaret Hamilton i NASA zeszły się ze sobą w 1965 roku, kiedy 28-letniej wówczas programistce MIT przydzielono najpierw projekt bezzałogowego statku kosmicznego. Zadaniem było stworzenie oprogramowania, które zadziała na wypadek czarnego scenariusza, czyli w momencie przerwania misji. Zasugeruje komputerowi na pokładzie dalsze działania. Hamilton humorystycznie nazwała program "Forget it" (zapomnij o tym).
Oczywiście testowanie nowych rozwiązań odbywało się najpierw warunkach laboratoryjnych, na symulatorach. Dostęp do nich miała również Lauren, 4-letnia córka programistki, którą mama zabierała często do pracy w weekendy oraz na nocne zmiany.
To właśnie ona w trakcie jednej z symulacji nacisnęła przypadkowo przełącznik związany z inną fazą lotu, który spowodował awarię symulatora. Hamilton zdała sobie sprawę, że dokładnie to samo może stać się w trakcie misji. Natychmiast zasugerowała MIT oraz NASA odpowiednie poprawki, które pozwolą maszynom na pokładzie poradzić sobie z ludzką pomyłką i przywrócić sprawność wszystkich systemów.
Niestety początkowo ekipa NASA zlekceważyła zalecenia Hamilton. Tłumaczono, że astronauci są odpowiednio wyszkoleni i nie popełniają takich błędów. W trakcie misji Apollo 8 w 1968 roku, krążący po orbicie Księżyca statek kosmiczny z astronautami na pokładzie okazał się bolesną weryfikacją tej teorii. Jeden z załogantów zrobił dokładnie to samo, co 4-letnia córka Hamilton - nacisnął zły przycisk w niewłaściwym momencie. W efekcie z komputera wyparowała duża część danych nawigacyjnych potrzebna do powrotu statku na Ziemię.
Inżynierom NASA opracowanie rozwiązania tego problemu zajęło aż 9 godzin. Ostatecznie udało się wysłać brakujące dane do znajdującego się na orbicie Księżyca statku. Dopiero po tym incydencie uświadomiono sobie wagę słów Hamilton i wprowadzono do dokumentacji programu Apollo odpowiednie dodatki zabezpieczające na wypadek przyszłych błędów, zarówno ze strony człowieka, jak i samego sprzętu. W końcu jego wadliwe działanie również mogło doprowadzić do awarii.
Margaret Hamilton, a obok niej kod źródłowy programu nawigacyjnego projektu Apollo (rok 1969) fot. Wikipedia (domena publiczna)
Ostatecznie Margaret Hamilton powierzono szefowanie zespołowi 400 specjalistów zajmujących się przygotowaniem oprogramowania dla misji Apollo 11. Do historii przeszło już słynne zdjęcie ukazujące programistkę MIT obok dorównującego jej wzrostem stosu listingów kodu źródłowego dla misji programu Apollo. Przy okazji warto dodać, że w tamtym czasie taka dokumentacja powstawała w zasadzie ręcznie.
Wspomniany na wstępie błąd o kodzie 1202 pojawił się w momencie, gdy komputer pokładowy Apollo 11 został nadmiernie obciążony kalkulacjami podczas procedury lądowania na Księżycu. Źródłem problemu okazał się radar odpowiadający za komunikację między modułem lądownika a orbiterem. Program dla radaru nie został właściwie napisany i oczekiwał od głównego komputera lądownika nieustannego wykonywania 6400 operacji w ciągu sekundy (13 proc. mocy obliczeniowej).
AGC (Apollo Guidance Computer). Komputer nawigacyjny z misji Apollo 11 fot. Wikipedia (domena publiczna)
Tymczasem komputer lądownika (Apollo Guidance Computer - AGC) konsumował aż 90 proc. całkowitej mocy na wylądowanie na powierzchni Złotego Globu, co ostatecznie doprowadziło do przeładowania i wyświetlenia komunikatu o błędzie 1202.
Na szczęście ekipa programistów pod kierownictwem Margaret Hamilton zaprojektowała oprogramowanie w taki sposób, aby system przydzielał wyższe priorytety ważniejszym zadaniom, zamiast starać się wykonywać je w ustalonym porządku. Takie podejście było niespotykane w tamtych czasach. Selenonauci przestawili przełącznik radaru w pozycję manualną, a procedura lądowania była kontynuowana.
Nie ulega wątpliwości, że dorobek Margaret Hamilton dał podwaliny dla wielu współczesnych technologii i rozwoju roli oprogramowania. W 2016 roku programistka została odznaczona najwyższym wyróżnieniem cywilnym w Stanach Zjednoczonych - medalem wolności. Odebrała go z rąk ówczesnego prezydenta Baracka Obamy. Sukces Hamilton i jej zespołu przy okazji misji Apollo 11, zwieńczony lądowaniem człowieka na Księżycu oglądało na żywo ekranach telewizorów 600 mln ludzi na całym świecie (w tamtym czasie mniej więcej 1/5 ziemskiej populacji).