Baru-baru ini didigitalkan dan diubah menjadi repo, kode sumber komputer panduan Apollo 11 asli telah tersedia untuk dilihat di Github .
Di MAIN.agc , penulis repo berkomentar bahwa mereka
pisahkan kode sumber monolitik besar menjadi potongan yang lebih kecil dan lebih mudah dikelola - yaitu, menjadi file sumber # individu.
Beberapa saat kemudian, penulis menyatakan
Mungkin wajar ditanyakan mengapa puluhan ribu baris sumber digabungkan dengan cara inklusi, daripada hanya mengumpulkan file sumber secara individual dan kemudian menautkannya untuk membentuk executable. Jawabannya adalah bahwa tim pengembangan asli tidak memiliki tautan.
Saya tahu apa itu linker dan saya mengerti maksudnya - tetapi saya belum pernah mendengar frasa (sejauh ASM) "bergabung dengan cara inklusi".
Apa artinya ini? Mempertimbangkan bahwa penghubung adalah masalah besar dalam pemrograman, saya ingin tahu apa pengganti dari penghubung ini dengan "cara inklusi 'dan bagaimana cara kerjanya.
sumber
#include
arahan dalamC
. Dengan kata lain, alih-alih kode yang dikompilasi ke komponen yang kemudian ditautkan bersama, sepertinya$
notasi menyertakan konten file itu, untuk menghasilkan satu file sumber besar. Satu file sumber besar itu kemudian dikompilasi sebagai satu kesatuan.Jawaban:
Mereka tampaknya berarti penggabungan / penyisipan teks sederhana. Dengan kata lain, meskipun teks sumber dipecah menjadi file individual , program tidak dibagi menjadi modul .
sumber
Bagaimana inklusi sederhana dibandingkan dengan menautkan?
Jadi penyertaan sederhana dilakukan dengan menggunakan #include "someCFile.c".
Secara default, tautan akan menambahkan perpustakaan runtime. Dengan inklusi, ini harus dimasukkan.
Saya menduga bahwa penyertaan akan memakan waktu lebih sedikit karena objek tidak perlu memiliki tabel yang berisi titik masuk dan variabel yang berpotensi dengan nama. Dalam penautan dinamis, tabel titik masuk harus ada di sana. Saya tidak yakin apakah penghubung statis akan menghapusnya atau tidak, saya kira tidak.
Dalam hal kecepatan pemrosesan, inklusi mungkin sedikit lebih cepat (pasti dalam kasus perpustakaan terkait secara dinamis), namun tidak fleksibel, beberapa aplikasi tidak dapat berbagi perpustakaan yang sama.
Mempertimbangkan ukuran biner, inklusi akan lebih besar.
Mempertimbangkan waktu kompilasi, inklusi akan lebih lama.
Untuk komputer navigasi NASA, penyertaan sederhana tidak masalah karena komputer navigasi hanya menjalankan satu program.
sumber