Margaret Hamilton ve 1202 alarmı: Ay'a inişi kurtaran tasarım fikri
Apollo 11 Ay'a inerken bilgisayar beş kez alarm verdi ve Houston yine de devam dedi. Margaret Hamilton'ın ekibinin yazdığı yazılımda aşırı yüklenme bir arıza değil, önceden hesaplanmış bir davranıştı.
20 Temmuz 1969, Ay yüzeyine inişin bitmek üzere olan son evresi. Eagle adlı iniş aracı süzülürken Neil Armstrong'un sesi kesik kesik geliyor. Apollo 11 iniş dökümünün NASA'da yayımlanan metnine göre, geçen uçuş süresi 102:38:26'da Armstrong "Program Alarm" diyor; birkaç saniye sonra ekliyor: "It's a 1202." Kokpitteki küçük yeşil göstergede, DSKY'de bir sayı yanıp sönüyor.
Armstrong 102:38:42'de Houston'a dönüyor: "Give us a reading on the 1202 Program Alarm." On bir saniye sonra Charlie Duke'ün karşılığı geliyor: "Roger. We got you... We're Go on that alarm." Dört dakika sonra bu kez Buzz Aldrin bir 1201 okuyor; Duke yine aynı şeyi söylüyor: "Roger. 1201 alarm. We're Go. Same type. We're Go."
O "Go" kararının arkasında bir sezgi değil, yıllar önce verilmiş bir tasarım kararı vardı. Bilgisayar bozulmamıştı; aşırı yüklendiğinde ne yapacağı önceden yazılmış olduğu için ayakta kalmıştı. O yazılımı üreten MIT ekibinin başındaki kişi Margaret Hamilton'dı. MIT'nin 7 Ekim'de yayımladığı duyuruya göre Hamilton 30 Eylül'de 90 yaşında öldü; kottke.org'un aktardığı New York Times ölüm yazısına göre Cambridge, Massachusetts'te. Geride bıraktığı asıl miras tek bir kahramanlık anı değil, bir tasarım anlayışı ve bir sözcük.
1202 tam olarak ne demekti
Apollo Güdüm Bilgisayarı'nın (AGC) içinde, aynı anda yürüyen işleri izlemek için sınırlı sayıda yer vardı. Don Eyles'ın iniş yazılımı üzerine yazdığı teknik anlatıda bu yerler sayılıyor: on ikişer yazmaçlık sekiz "core set" ve kırk üçer yazmaçlık beş "VAC area". Yeni bir iş sıraya girmek istediğinde boş yer kalmamışsa, Yürütücü (Executive) alarm yoluna sapıyordu. Boş core set yoksa 1202, boş VAC area yoksa 1201.

Peki yerler neden doldu? MIT Instrumentation Lab'den Peter Adler'in NASA'da yayımlanan açıklamasına göre, buluşma radarının (rendezvous radar) anahtarları yanlış konumda kaldığı için bilgisayar, gerçekte var olmayan radar verisini işlemek üzere durmadan yeni iş planladı; core set'ler böyle doldu ve 1202 üretildi. Eyles'ın raporuna göre radarın sayaçları en hızlı çalıştığı durumda mevcut hesaplama zamanının yaklaşık yüzde 15'ini tüketiyordu; ekip o sırada ihtiyatlı davranıp bu kaybı yüzde 13 varsaymış ve ona TLOSS adını vermişti. İnişte toplam beş alarm düştü: P63 aşamasında iki 1202, ardından P64'te bir 1201 ve iki 1202 daha.
Önemli nokta şu: her alarmda yazılım kendini yeniden başlatıyor, önemsiz işleri elinden bırakıyor ve kritik işleri kaldıkları ara noktaya yakın bir yerden devam ettiriyordu. Adler'in anlatımıyla yazılım bilgisayarı yeniden başlatıp ilklendiriyor, sonra seçtiği programları akışta bıraktıkları yere yakın bir noktadan tekrar çalıştırıyordu. Yani göstergede arıza gibi görünen şey, tasarımın çalıştığının kanıtıydı.
Apollo Flight Journal kanalının yayımladığı yukarıdaki görüntüde 1201 alarmının düştüğü anın ses kaydı, uçuş kontrol ekranıyla birlikte izlenebiliyor.
Fikir kimin: dürüst bir dipnot
Popüler anlatıda öncelikli yürütücü doğrudan Hamilton'a yazılır. Eyles'ın kendi metni daha ayrıntılı: Yürütücü ve Waitlist düzeneğinin tasarımı Hal Laning'e ait ve Eyles o metinde Hamilton'ı bu iki düzenek bağlamında anmıyor. Hamilton'ın payı, bunun üzerine kurulan şeydi: uçuş yazılımının bütünü, yeniden başlatma koruması ve düzeneğin gerçek bir inişte güvenilir biçimde davranması. Adler, Houston'daki ekibin alarmı görünce durmamasını tek bir nedene bağlıyor: MIT yeniden başlatma yeteneğini uzun uzun denemişti, bu yüzden görevin sürebileceği biliniyordu.
2016'daki Başkanlık Özgürlük Madalyası gerekçesi de Hamilton'ın katkısını tek bir işe indirmiyor. MIT'nin aktardığı metne göre ödül, "asenkron yazılım, öncelikli iş sıralaması ve öncelikli göstergeler ile insanın karar döngüsünde kalması" kavramlarına katkısı için verildi; gerekçe bunların modern, çok güvenilir yazılım tasarımının temelini kurduğunu söylüyor. Törenin tarihi 22 Kasım 2016.
Hafıza dokunuyordu, bu yüzden hata affetmiyordu
Smithsonian Ulusal Hava ve Uzay Müzesi'nin Hamilton dosyasına göre AGC'nin salt okunur hafızası gerçekten dokunuyordu: mıknatıslanmış, simit biçimli çekirdeklerin arasından tel geçiriliyordu. Tel çekirdeğin içinden geçtiyse ikili bir, dışından dolandıysa sıfır. Her bilgisayarda 4 kilobayt yazılabilir, 72 kilobayt salt okunur hafıza vardı. Bu dokuma işini yapan kadınlara laboratuvarda "LOL" (little old ladies) deniyordu; küçük kusurlara "FLT", kod listelerini bilgisayarın yerine geçerek okuma yöntemine ise "Auge Kugel" adı takılmıştı. Hamilton'ın takma adı "halat anası"ydı.
Burada teknik bir ayrıntıdan fazlası var: bir kez dokunmuş hafızaya yama geçilemez. Aynı müzenin anlatımıyla 1969-1972 arasındaki altı yolculukta uçan kod, kalkıştan önce doğru olmak zorundaydı. Düzeltme şansın yoksa tek yol, hatanın oluşmasını baştan imkânsız kılmaktır; Hamilton'ın kariyerini şekillendiren ısrar buradan besleniyor.
P01: "astronotlar böyle bir hata yapmaz"
MIT'nin aktardığı hikâye şöyle: Hamilton'ın o sırada dört yaşında olan kızı Lauren, laboratuvardaki komuta modülü benzetmecisiyle oynarken, araç uçuş halindeyken kalkış öncesi programı P01'i bir şekilde çalıştırdı ve benzetmeci tümden çöktü. Hamilton teknik belgelere uçuş sırasında P01'i çalıştırmama uyarısı ekledi; ayrıca aynı hatanın gerçek bir görevde yaşanmasını engelleyecek bir yazılım düzeltmesi önerdi. Öneri geri çevrildi; gerekçe, iyi eğitilmiş astronotların böyle bir hatayı asla yapmayacağıydı.
1968'deki Apollo 8 görevinde tam olarak o oldu. MIT'ye göre Jim Lovell uçuş sırasında istemeden P01'i çalıştırdı ve uçuş içi seyir verisi kayboldu. Hamilton ve ekibi çağrıldı, hata giderildi ve sonrasında onun önerdiği değişiklikler programa girdi. Bu, yazılım tarihinin en pahalı "kullanıcı bu hatayı yapmaz" varsayımlarından biri. Hamilton'ın 1976'da kurduğu Higher Order Software'in temeli de aynı yaklaşım, yani hata önleme ve hataya dayanıklılık oldu; sonraki şirketi Hamilton Technologies'de Universal Systems Language adlı dili geliştirdi.
"Yazılım mühendisliği" sözcüğü nereden geldi
Hamilton'ın en çok anılan cümlesi, MIT'nin aktardığı biçimiyle şu: yazılıma meşruiyet kazandırmak için uğraştı, hem yazılımın hem onu üretenlerin hak ettiği saygıyı görmesini istedi ve bu yüzden "yazılım mühendisliği" terimini kullanmaya başladı. 1959'da MIT'ye geçici bir meteoroloji işiyle giren ve 1968'de 400'den fazla kişinin çalıştığı yazılım tarafında Komuta ve Servis Modülü ekibinin yardımcı direktörlüğüne gelen biri için bu, teorik bir tartışma değildi.
Yine de terimin tek bir mucidi olduğunu söylemek fazla olur. Yazılım mühendisliğinin tarihini derleyen kaynaklara göre ACM başkanı Anthony Oettinger terimi 1965'te bir mektupta kullandı, Douglas Ross 1950'lerde MIT'deki derslerinde geçirdi ve NATO Bilim Komitesi'nin Garmisch'te 1968'de, ardından 1969'da düzenlediği iki toplantı çoğu kişiye göre mesleğin resmî başlangıcı sayılıyor. Hamilton'ın yaptığı, sözcüğü yoktan var etmekten çok onu bir iddiaya dönüştürmekti: yazılım, donanımın yanında ikinci sınıf bir uğraş değil.
Kısa künye
Aşağıdaki veriler MIT'nin duyurusundan derlendi.
| Doğum | 1936, Paoli, Indiana |
|---|---|
| Öğrenim | Michigan Üniversitesi'nde matematik (1955); Earlham College'da matematik lisansı, felsefe yan dalı (1958) |
| MIT | 1959; Apollo projesinin ilk programcısı ve projedeki ilk kadın programcı |
| 1968 | Komuta ve Servis Modülü ekibinin yardımcı direktörü; Apollo yazılımında 400'den fazla kişi |
| Yayın | 130'dan fazla |
| Ödüller | NASA Exceptional Space Act Award (2003); Başkanlık Özgürlük Madalyası (2016); Computer History Museum Fellow (2017); Intrepid Yaşam Boyu Başarı (2019); National Aviation Hall of Fame (2022) |
| Ölüm | 30 Eylül 2026, 90 yaşında |
Geriye kalan soru
Aşırı yüklendiğinde işleri öncelik sırasına göre elden bırakan, kendini güvenli bir noktadan yeniden başlatan sistemler bugün sıradan sayılıyor. Asıl tuhaf olan, P01 tartışmasının bitmemiş olması: "Kullanıcı bu hatayı yapmaz" cümlesi hâlâ her tasarım toplantısında kuruluyor.
MIT'nin 2016'daki haberine göre Apollo güdüm yazılımının kaynak kodu GitHub'a konduğunda listelerin başında şu satırlar duruyordu: "SUBMITTED: MARGARET H. HAMILTON DATE: 28 MAR 69" ve "M.H.HAMILTON, COLOSSUS PROGRAMMING LEADER". Ay'a inen yazılım, yarım yüzyıl sonra herkesin okuyabildiği bir metin; 1202'nin niçin arıza değil tasarım olduğunu görmek isteyen oradan başlayabilir.
Fotoğraf: Adam Cuerden, Public domain, Wikimedia Commons