Proses pengembangan digunakan untuk kode pada misi Apollo 11?

57

Misi Apollo memiliki teknologi yang tidak lebih rumit dari kalkulator saku.

Dari tautan di sini , ada informasi tentang Apollo Guidance Computer (AGC)

Apollo Guidance Computer (AGC) on-board adalah sekitar 1 kaki kubik dengan 2K RAM 16-bit dan memori inti-kabel 36K dengan kabel tembaga berulir atau tidak dijalin melalui inti magnetik kecil. Kata-kata 16-bit umumnya 14 bit data (atau dua op-kode), 1 bit tanda, dan 1 bit paritas. Waktu siklus adalah 11,7 mikro-detik. Pemrograman dilakukan dalam bahasa assembly dan dalam bahasa interpretatif, dalam bahasa Polandia terbalik.

Jadi, saya telah menemukan beberapa kode sumber ketika saya meneliti apa yang ada di sana, dan saya telah memperhatikan komentar-komentar hebat (mis. TEMPORARY, I HOPE HOPE HOPE)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

Program aktual di pesawat ruang angkasa disimpan dalam memori tali inti , teknologi memori kuno yang dibuat oleh (secara harfiah) menenun kain / tali, di mana bit adalah cincin fisik bahan ferit. Memori "Core" tahan terhadap sinar kosmik. Keadaan bit inti tidak akan berubah ketika dibombardir oleh radiasi di Luar Angkasa.

Perangkat lunak Virtual Apollo Guidance Computer (AGC) juga ada di GITHUB!

Beberapa bagian dari dokumentasi ada di sini.

Contoh lain dari kode sumber dengan komentar hebat.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

Pertanyaan saya di sini adalah ini:

  • Bagaimana tim-tim yang menulis kode sebanyak ini dapat membuatnya berfungsi mengingat alat-alat pada saat itu?

Karena jika Anda mengkompilasi begitu banyak kode yang digunakan pada Apollo 11 ... itu akan memakan waktu berhari-hari, bahkan berminggu-minggu. Saya benar-benar ragu bahwa programmer pada saat itu meninggalkan semuanya terjadi secara kebetulan.

Josip Ivic
sumber
4
Saya memiliki suntingan yang cukup signifikan untuk menjadikan ini mudah-mudahan lebih pada topik. Saya pikir ini adalah pertanyaan yang menarik dan saya harap orang-orang dapat menjawab dengan efektif!
enderland
3
Baca Hacker dan Bulan Mythical Man . Ada cukup banyak materi di sana - saya tidak yakin itu akan cocok dengan jawaban di sini.
2
Judul pertanyaan gaya "Pertanyaan Tag" tidak disarankan di Stack Exchange. Silakan tinggalkan judulnya apa adanya.
4
Tidak ada siklus kompilasi / perbaiki seperti yang disarankan pertanyaan Anda. Anda tidak membuat memori tali, mengujinya dan kemudian mengulanginya jika itu tidak berhasil; Anda melakukannya dengan benar pada kali pertama.
Robert Harvey
7
@RobertHarvey, Anda HOPE HOPE HOPEmelakukannya dengan benar pada kali pertama.

Jawaban:

13

Ada sebuah film dokumenter yang indah yang saya coba kejar tentang John 'Jack' Garman yang harus "menciptakan" sebuah "sistem operasi multiprogram yang dijadwalkan prioritas". Ini mungkin terkait dengan modul pendarat. Ceritanya adalah ketika Anda mendarat pendarat, Anda lebih baik memberikan prioritas untuk bimbingan karena hal-hal lain, seperti suhu di kabin selama 15 detik berikutnya, tidak masalah jika Anda jatuh dan terbakar. Pada tembakan pertama mereka membebani komputer dan alarm mulai terjadi karena beberapa subrutin tidak dieksekusi. Ada terlalu banyak dimuat, tetapi berkat konsep prioritas, yang diramalkan Garman dan dibangun karena dia pikir itu ide yang bagus, rutinitas prioritas rendah tidak menghalangi rutinitas pendaratan prioritas yang lebih tinggi.

Menonton film dokumenter pada saat itu, saya terkejut tentang bagaimana rasanya melakukan refactoring besar pada kode tanpa memberitahu manajemen dan hampir dipecat karena Anda terlambat pada apa yang seharusnya Anda kerjakan. Namun dalam kasus ini, refactoring terungkap ketika alasan untuk alarm diselidiki. (Dan manajemen masih kesal! :-)

Beberapa tautan:

Tidak, "kesalahan daftar periksa" hampir tidak menggagalkan pendaratan di bulan pertama

TALES DARI KOMPUTER PANDUAN MODUL bulan

Bagaimana Mereka Membangunnya: Perangkat Lunak Apollo 11

Proyek Sejarah Lisan NASA Johnson Space Center Transkrip Sejarah Lisan Diedit

Sejarah singkat Kutipan Program Apollo NASA : Lima menit setelah luka bakar turun, dan 1.800 m di atas permukaan Bulan, komputer navigasi dan panduan LM menghasilkan alarm program "1202" dan "1201" yang tak terduga. Insinyur komputer di Mission Control Center di Houston, Jack Garman, mengatakan kepada petugas pembimbing Steve Bales bahwa aman untuk melanjutkan penurunan. Alarm ini adalah indikasi "eksekutif meluap", yang berarti komputer panduan tidak dapat menyelesaikan semua tugasnya secara real time dan harus menunda beberapa di antaranya.

Mengingat Kutipan 'Lompatan Raksasa' : Kami tahu apa itu dan bahwa itu tidak boleh terjadi. Tetapi kami telah merancang sistem yang berusaha keras untuk pulih dari kondisi kelebihan beban. Jadi saya ingat mendengar [insinyur komputer NASA] Jack Garman berteriak, "Pergi, pergi!" Dan mereka pergi. Kemudian kami mendengarkan ketika Neil menerbangkan LEM dan mencoba menemukan tempat yang bagus untuk mendarat. Kekhawatiran baru kami adalah kurangnya bahan bakar yang tersisa. Tetapi akhirnya kami mendengar pemberitahuan kontak dan kemudian, "Elang telah mendarat."

Wawancara Jack Garman

EDIT: Mungkin ini film dokumenter: Apollo 11: The Untold Story (2006)

Pemeran: John R. Garman ...
Dirinya - Insinyur Komputer Apollo 11 (seperti Jack Garman)

(Diantara yang lain).

Pembaruan: Seorang Peretas Dari Afrika Selatan Baru Menyelamatkan Komputer NASA Pertama di Luar Angkasa

K.Nicholas
sumber
Saya tahu cerita itu terdengar akrab! Bagian "Apollo 11" memiliki lebih banyak tentang kisah ini di en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
hydo
31

Jika saya mengerti benar, proses pengembangan adalah peer review dan eksperimen.

Tim ini terdiri dari orang-orang seperti "Dokter Matematika" - orang yang sangat berdedikasi, cerdas, bersemangat, dan berorientasi pada detail yang hidupnya didedikasikan untuk pekerjaan mereka. Jadi ketika saya mengatakan peer review, maksud saya banyak peer review selama berbulan-bulan (lebih dari setahun).

Pengembang ini "menjalankan simulasi di kepala mereka", "mendebug perangkat lunak di atas kertas" dan bekerja dalam kelompok dengan banyak pengembang melihat kode yang sama berulang-ulang sampai mereka yakin itu benar. Ada beberapa tim - masing-masing mengerjakan bagian dari keseluruhan.

Profesor Metode Numerik saya di The Ohio State University (Spring '96) menulis kode yang memutuskan kapan untuk memulai tahap roket pendorong. Dia menjelaskan bahwa cetakannya adalah ukuran buku telepon (Jadi, mungkin 2,5 hingga 3,5 inci dari kertas 8,5 x 11 inci - dia tidak menggambarkan ukuran font) dari kode Fortran.

Ketika diyakinkan, mereka meluncurkan rudal tak berawak (roket secara teknis tidak memiliki giroskop) dengan radio di papan yang mengeluarkan bunyi bip secara berkala. Mereka mendengarkan bunyi bip hingga ke titik yang mereka harapkan radio berdampak pada bulan (menabraknya dan menghancurkan dirinya sendiri) dan berhenti berbunyi. Mereka tahu bahwa jika mereka meleset, radio akan terus berbunyi melewati waktu dampak yang diperhitungkan. Dampak terjadi 15 detik setelah waktu yang dihitung.

Kisah anekdot yang diakui ini adalah kenangan saya dari kunjungan kantor dengan dokter. Dia sudah sangat tua, dan itu sudah lama sekali. Ini adalah ingatan terbaik saya.

Lyle S.
sumber
2
Dia menggambarkan hasil cetakan itu seukuran buku telepon (Jadi, mungkin tebal 2,5 hingga 3,5 inci dari kertas 8,5 x 11 inci. Umumnya, kode itu dicetak dalam mode landscape dengan sekitar 55 - 60 baris per halaman. Satu rim (100 lembar) kertas cetakan tebal sekitar 1,75 inci
Gilbert Le Blanc
@GilbertLeBlanc Rim biasanya 500 lembar. (terkadang 480)
joshp
@ joshp: Anda benar. 500 lembar kertas cetakan tebal sekitar 1,75 inci.
Gilbert Le Blanc
15

AGC dikendalikan dengan kata kerja dan kata benda

Perangkat lunak perintah Apollo tidak ditulis dalam sintaksis apa pun yang dikenali pengguna saat ini. Perintah input astronot secara numerik, dengan masing-masing angka dua digit mewakili kata kerja atau kata benda. Kata kerja menggambarkan tindakan yang harus dilakukan, dan kata benda menentukan data yang akan dipengaruhi oleh tindakan kata kerja.

Astronot membenci pengaturan kata kerja dan kata benda

Ramón Alonso, salah satu pengembang perangkat keras AGC asli, mengatakan antarmuka telah diciptakan untuk mengesankan pengunjung ke lab mereka, tetapi tetap bertahan untuk penerbangan ketika tidak ada yang mengembangkan antarmuka yang lebih baik. Para kritikus mengatakan itu bukan "ilmiah," dan astronot pertama — semua pilot jet elit — lebih memilih tombol dan saklar, mirip dengan panel kontrol pesawat.

"AGC sangat lambat, tetapi sangat dapat diandalkan dan sangat kecil untuk saat itu dalam sejarah komputer digital. Itu yang paling awal untuk menggunakan sirkuit terintegrasi."

Perangkat lunak seperti yang dirancang pada dasarnya dibangun dari awal oleh MIT.

Anda dapat mengunduh dan menginstal program emulator Apollo Guidance Computer di komputer pribadi Anda, tidak masalah. Begini tampilannya di Mac OS X.

masukkan deskripsi gambar di sini

Josip Ivic
sumber
8

Seperti hampir semua proyek perangkat lunak lain, itu dilakukan di bawah tenggat waktu yang agresif dan tekanan kualitas. Untungnya arsip materi besar dari manajer proyek perangkat lunak Howard W. "Bill" Tindall, Jr. tersedia di sini .

Jika Anda mencicipi memo, Anda bisa merasakan konflik normal antara waktu, fitur, dan cacat yang sangat baik. Perlu dicatat bahwa pengembangan berlangsung selama beberapa tahun seperti sisa proyek.

Desain sistem dimulai pada kuartal kedua 1961, dan NASA memasang versi Blok I di pesawat ruang angkasa pada 22 September 1965. Rilis perangkat lunak asli (bernama CORONA) adalah pada Januari 1966, dengan penerbangan pertama pada 25 Agustus, 1966. Kurang dari 3 tahun setelah itu, desainer mencapai tujuan program akhir ( http://history.nasa.gov/computers/Ch2-5.html )

Saya tidak dapat menemukan referensi spesifik tentang bagaimana perangkat lunak itu dibuat, tetapi mengingat tanggalnya saya hanya dapat berasumsi bahwa sebagian besar dilakukan pada pena dan kertas, dengan "simulasi" dilakukan secara manual. Tampaknya ada sistem untuk memuat program ke AGC dengan kartu punch, mungkin untuk pengujian "cepat" di tanah tanpa perlu membuat memori tali.

pjc50
sumber