Margaret Hamilton należała do pokolenia pionierów informatyki, które tworzyło oprogramowanie w czasach, gdy zawody takie jak programista, informatyk czy inżynier oprogramowania nie były jeszcze powszechnie rozpoznawane. Jej praca stała się szczególnie ważna podczas misji Apollo 11, ponieważ oprogramowanie pokładowe nie służyło wyłącznie do wykonywania zaplanowanych poleceń. Musiało także rozpoznać sytuację awaryjną, ustalić, które zadania są najważniejsze, i utrzymać działanie systemu w krytycznym momencie lądowania.
Hamilton zmarła 30 września w wieku 90 lat. Massachusetts Institute of Technology, z którym była związana przez większą część kariery, przypomniał ją jako pionierkę inżynierii oprogramowania. W 2016 roku otrzymała z rąk prezydenta Baracka Obamy Prezydencki Medal Wolności za wkład w rozwój nauki i eksplorację kosmosu.
Od matematyki do programowania
Hamilton urodziła się w stanie Indiana. W 1955 roku rozpoczęła studia matematyczne na University of Michigan, a w 1958 roku uzyskała licencjat z matematyki w Earlham College. Rok później rozpoczęła pracę w MIT. Tam uczyła się programowania pod kierunkiem meteorologa i rozwijała umiejętności w laboratorium instytutu.
Jednym z jej pierwszych zadań było tworzenie oprogramowania służącego do wykrywania wrogich samolotów. Ta praca miała znaczenie dla późniejszej kariery, ponieważ wymagała projektowania programów działających w warunkach, w których poprawne rozpoznawanie informacji i szybka reakcja systemu były istotne. W MIT Hamilton pracowała do połowy lat 70. i kierowała działem inżynierii oprogramowania.
Kiedy instytut otrzymał kontrakt NASA na opracowanie oprogramowania pokładowego dla misji Apollo, Hamilton dołączyła do projektu. Jak mówiła później w rozmowie z „Guardianem”, przyciągnęła ją zarówno sama idea, jak i fakt, że podobnego zadania wcześniej nie wykonano. Była pierwszą programistką, która dołączyła do zespołu, oraz pierwszą kobietą zatrudnioną przy tym projekcie.
Zespół Hamilton odpowiadał za tworzenie i testowanie całego pokładowego oprogramowania lotu Apollo 11. Był to etap, na którym program nie mógł być traktowany jako prosty zestaw instrukcji uruchamianych w kolejności zapisanej przez konstruktorów. Musiał również reagować na sytuacje, których nie dało się bezpiecznie pominąć podczas lotu. Właśnie ta zdolność do obsługi błędów okazała się kluczowa w czasie lądowania.
Co wydarzyło się przed lądowaniem Apollo 11
W 1969 roku, na krótko przed lądowaniem Apollo 11 na Księżycu, komputer pokładowy uruchomił alarm. Sygnalizował, że wystąpił problem związany z przeciążeniem komputera. Załoga i osoby kierujące misją musiały zmierzyć się z pytaniem, czy kontynuować lądowanie, czy je przerwać.
Alarm nie oznaczał jednak, że oprogramowanie przestało działać. System został zaprojektowany tak, aby w razie przeciążenia ograniczyć zadania wykonywane w tle i przyznać pierwszeństwo działaniom najważniejszym dla misji. W tym przypadku priorytetem było lądowanie na powierzchni Księżyca. Zadania mniej istotne mogły zostać wstrzymane, aby komputer nadal obsługiwał podstawowe funkcje potrzebne w krytycznej fazie lotu.
Mechanizm opisany przez MIT i samą Hamilton obejmował kilka powiązanych działań. Oprogramowanie wykrywało, że komputer jest przeciążony, informowało o problemie sprzętowym, a następnie ograniczało wykonywanie zadań o niższym priorytecie. System mógł także ponownie uruchomić i przywrócić zadania uznane za najważniejsze. Nie chodziło więc tylko o zasygnalizowanie awarii człowiekowi, lecz również o automatyczne uporządkowanie pracy komputera.
To rozróżnienie jest istotne dla zrozumienia roli Hamilton. Oprogramowanie nie usunęło fizycznego problemu związanego z obciążeniem komputera, ale potrafiło zareagować na jego skutki w sposób przewidziany przez projektantów. Gdy pojawiło się więcej zadań, niż system mógł w danej chwili obsłużyć, program nie traktował wszystkich poleceń jednakowo. Zachował te, które miały najwyższe znaczenie dla kontynuowania lądowania.
The Guardian opisywał ten mechanizm jako połączenie wykrywania błędów i odzyskiwania sprawności. Według relacji Hamilton komputer nie tylko informował o problemie związanym ze sprzętem, ale także kompensował jego skutki, restartując system i przywracając zadania o najwyższym priorytecie. Dzięki temu alarm nie doprowadził do automatycznego przerwania całej operacji.
Dlaczego priorytety były ważniejsze niż pełna ciągłość pracy
W sytuacji przeciążenia komputer nie może zawsze wykonywać wszystkich zadań jednocześnie. Projektanci oprogramowania muszą więc określić, które funkcje są niezbędne, a które mogą zostać odłożone. W systemie Apollo 11 zastosowano właśnie takie podejście: program miał nie tyle utrzymywać wszystkie procesy bez zmian, ile chronić najważniejszy cel misji.
W czasie lądowania oznaczało to podporządkowanie działania komputera najpilniejszym wymaganiom. Zadania pomocnicze mogły zostać czasowo wyłączone, natomiast obsługa kluczowej fazy lotu miała pozostać aktywna. Dzięki temu system był przygotowany nie tylko na prawidłowy przebieg pracy, ale również na ograniczoną awarię i próbę powrotu do działania.
Z perspektywy historii informatyki rozwiązanie to pokazuje, że oprogramowanie może pełnić funkcję mechanizmu bezpieczeństwa. Kod napisany przez zespół Hamilton nie ograniczał się do sterowania zaplanowanymi czynnościami. Zawierał także reguły postępowania w sytuacji nieprawidłowej pracy komputera. To dlatego podczas lądowania ważne było nie tylko to, że pojawił się alarm, lecz także to, jak system został zaprojektowany, by na niego odpowiedzieć.
BBC przypominało, że zespół Hamilton opracował oprogramowanie oparte na priorytetach, które w razie przeciążenia wyłączało zadania wykonywane w tle i faworyzowało najważniejsze działania. Ten sposób projektowania był częścią szerszego podejścia do inżynierii oprogramowania, rozwijanego w MIT w czasie, gdy sama dziedzina dopiero nabierała kształtu. BBC wskazywało również, że właśnie w związku z pracami zespołu Hamilton upowszechniało się określenie „software engineering”, czyli inżynieria oprogramowania.
Dziedzictwo Hamilton
Praca Hamilton była związana nie tylko z jednym alarmem podczas Apollo 11. Kierowała zespołem, który tworzył i testował oprogramowanie dla pokładowych systemów misji Apollo. Jej znaczenie polegało na potraktowaniu programu jako elementu całego systemu bezpieczeństwa: takiego, który powinien wykrywać błędy, komunikować ich wystąpienie i podejmować określone działania naprawcze.
W 2016 roku Barack Obama przyznał Hamilton Prezydencki Medal Wolności. Podczas uroczystości nawiązał do wydarzeń poprzedzających lądowanie Apollo 11, podkreślając, że astronauci mieli wtedy niewiele czasu, ale dysponowali rozwiązaniami przygotowanymi przez Hamilton i jej zespół. Wyróżnienie było uznaniem zarówno dla jej osobistego wkładu, jak i dla znaczenia pracy inżynierów tworzących oprogramowanie misji kosmicznych.
Hamilton pozostała w pamięci także jako osoba, która weszła do dziedziny na długo przed jej profesjonalizacją i pomogła nadać jej rangę odrębnej dyscypliny. Jej kariera pokazuje, że w systemach działających w warunkach wysokiego ryzyka równie ważne jak realizowanie zwykłego scenariusza jest przewidzenie błędu i zaplanowanie reakcji na jego wystąpienie. W przypadku Apollo 11 ta zasada została poddana próbie tuż przed lądowaniem i zadziałała zgodnie z założeniami.
Hamilton pozostawiła córkę, zięcia, dwóch wnuków oraz czworo prawnuków. Jej dorobek jest związany przede wszystkim z rozwojem oprogramowania pokładowego Apollo i z rozwiązaniami, które pozwoliły komputerowi zachować najważniejsze funkcje mimo przeciążenia w krytycznym momencie misji.
