Bir bilgisayarın hata vermemesi güzel. Hata verdiğinde en önemli işi bırakmaması daha da güzel. Apollo yazılımına bu gözle bakınca kâğıt yığınlarının yanındaki meşhur Margaret Hamilton fotoğrafı, yalnızca “ne kadar çok kod” fotoğrafı olmaktan çıkıyor.

Margaret Hamilton ve Apollo ekibinin yazılım listeleri; restore edilmiş arşiv fotoğrafı.
Margaret Hamilton ve Apollo ekibinin yazılım listeleri; restore edilmiş arşiv fotoğrafı. · Adam Cuerden · Public domain

Hamilton, MIT’de Apollo uçuş yazılımının geliştirilmesinde liderlik görevleri üstleniyor. Ama fotoğraftaki bütün sayfaları tek başına yazdığı söylenemez; ekip üretimi var. NASA’nın biyografisi de onun işini yazılım geliştirme ve ekip liderliği bağlamında ele alıyor. İnsanı görünür kılmak için yanındaki bütün insanları görünmez yapmaya gerek yok.

Apollo Guidance Computer’ın donanımı bugünün cihazlarından çok daha sınırlı. İşleri önceliklerine göre yürütmek, belleği yönetmek, kesinti ve yeniden başlatma durumunda önemli verileri korumak gerekiyor. 1201 ve 1202 alarmlarıyla hatırlanan iniş süreci, bilgisayarın yalnızca hızlı olmasının neden yetmediğini gösteriyor.

Apollo Guidance Computer’ın müze örneği.
Apollo Guidance Computer’ın müze örneği. · Tamorlan · CC BY-SA 3.0
  • Her görev aynı öncelikte değil.
  • Aşırı yükte önemsiz işi bırakabilmek gerekebiliyor.
  • Yeniden başlatma, her şeyi sıfırdan kaybetmek zorunda değil.

Buradan “Hamilton tek satırla Ay’a inişi kurtardı” masalı çıkarmak istemiyorum. Donanım, işletim mantığı, yazılım ekipleri ve yer kontrolündeki kararlar birlikte çalışıyor. Başarının ilginç tarafı zaten tek kişinin son saniye sihri değil; önceden düşünülmüş hata davranışının işe yaraması.

Bugün uygulama takılınca kapatıp açıyoruz. Bazı sistemlerde bu lüks yok. İyi yazılım yalnızca doğru veri geldiğinde doğru sonucu üretmek değil; beklenmeyen yükte, yanlış kullanımda ve parçalı arızada nasıl davranacağını tasarlamak. Otis’in emniyet freni mekanik dünyada benzer bir dürüstlük taşıyor: Parça bozulabilir, o zaman ne yapacağız? Mucitler kategorisinde görünmeyen talimatların da metal makineler kadar yeri var.

Öncelik vermek, yalnızca görevleri bir listeye yazmak değil. Yeni iş geldiğinde hangi işin ertelenebileceği, hangisinin kesilemeyeceği ve verinin hangi durumda korunacağı belirlenmeli. Sistem kaynakları sınırlıyken bütün talepleri aynı anda karşılamak mümkün olmayabilir. O zaman doğru davranış, her şeyi biraz yapmaya çalışmak yerine kritik işi korumak olabilir.

Kâğıt yığınlarının fotoğrafı bu açıdan bir arşiv nesnesi. Yazılımın görünmez olduğu düşüncesini bozuyor: Talimatlar yazılıyor, gözden geçiriliyor, sürümleri tutuluyor ve donanıma yerleştiriliyor. Ama fotoğrafın gösterdiği şey bir ekip ve süreç; tek kişinin iki koluyla kaldırdığı kadar kod yazıp görevi tek başına yönettiği değil.

Hata yönetiminin ilginç tarafı, çoğu zaman ancak işler ters gittiğinde görünmesi. Her şey düzgün yürürken tasarımın bu katmanı seyirciye görünmez. Çalışan sistemin arkasında, hiç yaşanmamasını umduğunuz durumlar için harcanmış büyük emek bulunabiliyor.

Apollo DSKY kumanda ve gösterge birimi.
Apollo DSKY kumanda ve gösterge birimi. · ArnoldReinhold · CC BY-SA 4.0