AGC: komputer z 4 KB RAM, który wysłał ludzi na Księżyc
W 1969 roku komputer prowadzący moduł księżycowy Apollo 11 miał mniej pamięci RAM niż najtańszy mikrokontroler dostępny dziś za 15 złotych. Mimo to wykonał zadanie bezbłędnie i zabrał ludzi na Księżyc. To historia maszyny, która zrewolucjonizowała informatykę – i uratowała misję w ostatnich sześciu minutach lądowania.
Wyścig kosmiczny i informatyczne wyzwanie NASA
Kiedy w 1961 roku prezydent John F. Kennedy ogłosił, że Stany Zjednoczone wyślą człowieka na Księżyc przed końcem dekady, inżynierowie NASA stanęli przed problemem, którego nikt wcześniej nie rozwiązał: jak sterować statkiem kosmicznym w czasie rzeczywistym, z dala od Ziemi?
Sygnał radiowy z Houston do Księżyca potrzebuje 1,3 sekundy w jedną stronę. W przypadku krytycznych manewrów – wejścia na orbitę księżycową czy finalnego lądowania – taka opóźniona pętla sterowania oznaczała katastrofę. Komputer musiał być na pokładzie. Musiał być lekki, energooszczędny, niezawodny i zdolny do obliczeń nawigacyjnych w ułamkach sekundy.
Problem w tym, że w 1961 roku komputery zajmowały całe piętra budynków i ważyły tony. MIT Instrumentation Laboratory (dziś Draper Laboratory) podjęło się zadania pozornie niemożliwego: zminiaturyzować maszynę obliczeniową do rozmiarów szafki, zdolną przetrwać start rakietowy, próżnię, promieniowanie i ekstremalne temperatury.
Specyfikacja, która dziś śmieszy – a wtedy robiła cuda
Apollo Guidance Computer (AGC) wszedł do użytku w 1966 roku i był prawdziwym cudem miniaturyzacji jak na tamte czasy. Jego dane techniczne zestawione ze współczesnymi urządzeniami wywołują uśmiech – i szacunek zarazem:
- Pamięć RAM: zaledwie 4096 słów 16-bitowych, czyli około 4 KB
- Pamięć stała (ROM): 73 728 słów, czyli ok. 72 KB – fizycznie wpleciona w rdzenie magnetyczne
- Częstotliwość taktowania: ok. 2 MHz
- Waga: 32 kg
- Pobór mocy: 55 W
- Awaryjność podczas misji Apollo: zero krytycznych zatrzymań systemu
AGC był jednym z pierwszych komputerów zbudowanych wyłącznie z układów scalonych (IC). NASA stała się tak ogromnym odbiorcą tych komponentów, że jej zamówienia dosłownie sfinansowały rozwój całej branży półprzewodnikowej. Koszt jednego układu IC spadł z 50 dolarów w 1962 roku do poniżej 2 dolarów w 1968 roku. Bez programu Apollo rewolucja PC mogłaby nadejść dekadę później.
Oprogramowanie zapisywano w pamięci ROM metodą core rope memory. Każdy bit był dosłownie ręcznie przeplatany przez lub obok rdzenia magnetycznego przez kobiety nazywane little old ladies, które tkały kod jak gobelin. Jeden błąd w splocie oznaczał błąd w programie lecącym na Księżyc.
Margaret Hamilton: kobieta, która wymyśliła software engineering
Za oprogramowaniem AGC stała Margaret Hamilton – matematyczka z MIT, która w wieku 32 lat kierowała całym zespołem programistycznym misji Apollo. To ona ukuła i spopularyzowała termin software engineering, chcąc podkreślić, że pisanie kodu wymaga równie rygorystycznego podejścia jak inżynieria mechaniczna czy elektryczna – i zasługuje na takie samo uznanie.
Hamilton była obsesyjna w kwestii niezawodności. Pamiętała zdarzenie z okresu przygotowań, gdy jej kilkuletnia córka Lauren bawiła się symulatorem misji i przypadkowo wybrała program P01 (inicjalizacja systemu przed startem) podczas symulowanego lotu księżycowego. Doprowadziło to do całkowitego krachu systemu nawigacji.
Hamilton natychmiast zaproponowała blokadę programową uniemożliwiającą wybór programów startowych w trakcie lotu. Spotkała się z odpowiedzią: wyszkoleni astronauci nie popełniają takich błędów, zabezpieczenie nie jest potrzebne. Nie dodano go. Podczas misji Apollo 8 astronauta James Lovell zrobił dokładnie to samo co mała Lauren – i dane nawigacyjne przepadły. Misja przeżyła, bo był to lot orbitalny, nie lądowanie.
Lekcja: nie istnieje kod odporny na człowieka. Hamilton wiedziała to przed erą UX i human-computer interaction. Jej podejście do obsługi błędów i priorytetyzacji zadań systemowych stało się fundamentem nowoczesnych systemów operacyjnych czasu rzeczywistego.
Alarm 1202 – sześć minut, które mogły zmienić historię
20 lipca 1969 roku. Moduł księżycowy Eagle zbliża się do powierzchni Księżyca. Neil Armstrong i Buzz Aldrin są w trakcie finalnego podejścia do lądowania, gdy w słuchawkach rozlega się sygnał alarmowy i komunikat, którego nikt w Houston nie chciał usłyszeć: ALARM 1202.
Komputer pokładowy zgłaszał przeciążenie. Radar spotkania z modułem dowodzenia był przypadkowo włączony i zaśmiecał procesor nadmiarem danych. AGC uruchamiał alarm co kilka sekund. Astronauci byli kilkaset metrów nad powierzchnią Księżyca z coraz mniej paliwa.
W centrum kontroli w Houston 26-letni Jack Garman – świeżo upieczony inżynier – siedział przy swoim stanowisku z odręcznie napisaną listą kodów alarmowych. Kilka tygodni wcześniej sam zażądał przetestowania dokładnie tego scenariusza. Wiedział, co oznacza 1202: komputer jest przeciążony, ale wszystkie krytyczne zadania działają poprawnie. AGC odrzuca zadania niskiego priorytetu, by chronić sterowanie lotem – dokładnie tak, jak zaprojektowała Hamilton.
Garman przekazał dyrektorowi lotu Gene Kranzowi jedną odpowiedź: GO. Kontynuować lądowanie. O godzinie 20:17 UTC moduł Eagle dotknął powierzchni Księżyca. Armstrong odczytał do mikrofonu: Houston, Tranquility Base here. The Eagle has landed.
Dziedzictwo AGC: jak księżycowy komputer ukształtował współczesne IT
Apollo Guidance Computer to nie tylko ciekawostka historyczna. To fundament, na którym stoi współczesna informatyka:
- Układy scalone: masowe zamówienia NASA uruchomiły przemysłową produkcję IC i obniżyły koszty – otworzyło to drogę do rewolucji PC lat 70. i 80.
- Systemy czasu rzeczywistego (RTOS): wielozadaniowość AGC z priorytetyzacją zadań była prototypem wszystkich współczesnych systemów wbudowanych – od sterowników ABS po systemy sterowania elektrowniami
- Graceful degradation: strategia łagodnej degradacji pod obciążeniem, zastosowana przez Hamiltona, jest dziś podstawą projektowania infrastruktury chmurowej i systemów krytycznych
- Software engineering jako dyscyplina: metodologia Hamiltoon udowodniła, że kod wymaga specyfikacji, testowania i dokumentacji – dziś oczywiste, wtedy rewolucyjne
Co ciekawe, pełny kod źródłowy AGC jest dziś dostępny publicznie na GitHubie. Programiści z całego świata przeglądają go z mieszaniną podziwu i rozbawienia – komentarze w kodzie zawierają żarty i westchnienia inżynierów pracujących pod ekstremalną presją czasu.
Jeden z komentarzy w module obsługi błędów brzmi: TEMPORARY, I HOPE HOPE HOPE. Fragment ten przetrwał do wersji produkcyjnej i poleciał na Księżyc. Każdy programista w duchu rozumie jego autora.
| Parametr | AGC (1969) | Arduino Uno (2010) | Smartfon (2024) |
|---|---|---|---|
| Pamięć RAM | 4 KB | 2 KB | 8–16 GB |
| Pamięć stała | 72 KB | 32 KB | 256–512 GB |
| Taktowanie CPU | ~2 MHz | 16 MHz | ~3–4 GHz |
| Waga urządzenia | 32 kg | 25 g | ~200 g |
| Pobór mocy | 55 W | ~0,05 W | ~5 W |
| Użyty do misji krytycznej | Tak – lądowanie na Księżycu | Zależy od projektu | Nie |
Twoja infrastruktura IT jest tak niezawodna jak AGC?
Inżynierowie NASA nauczyli nas, że niezawodność systemów IT to kwestia projektu, nie szczęścia. NovaSys pomaga firmom MŚP we Wrocławiu budować bezpieczną i stabilną infrastrukturę – zanim pierwszy alarm 1202 zaskoczy Cię w krytycznym momencie.