Saya sedang menulis bahasa pemrograman pertama saya yang berorientasi objek dan sejauh ini bagus dengan membuat satu 'kelas'. Tapi, katakanlah saya ingin kuliah, katakan ClassA
dan ClassB
. Asalkan keduanya tidak ada hubungannya satu sama lain maka semuanya baik-baik saja. Namun, katakanlah ClassA
menciptakan ClassB
- ini menimbulkan 2 pertanyaan terkait:
-Bagaimana kompiler tahu kapan kompilasi ClassA
itu ClassB
ada, dan, jika ada, bagaimana ia tahu sifat-sifatnya?
Pikiranku sejauh ini adalah: daripada mengkompilasi setiap kelas pada satu waktu (yaitu memindai, mengurai dan menghasilkan kode) setiap "file (tidak benar-benar file, per se, tetapi" kelas ") yang saya perlukan untuk memindai + mengurai setiap pertama , lalu buat kode untuk semua?
sumber
Bahasa yang lebih tua terkadang lebih ketat; pertimbangkan apa yang mungkin di Jawa:
Saya telah melihat anti-pola di atas, dan itu benar - benar jelek (saya akan melarangnya). Kedua unit kompilasi saling menggunakan. Tetapi Ifc dapat dikompilasi ke kode tanpa Implem yang dikompilasi. Kode yang dikompilasi, .class, sebanding dengan C.obj, berisi "informasi tautan:" impor Implem, memanggil konstruktor tanpa parameter
Implem()
. Kelas Implem kemudian dapat dikompilasi tanpa masalah. Sebagian ClassLoader - melakukan inisialisasi / membangun data kelas JVM, dan sebagian Java Virtual Machine itu sendiri, bermain sedikit sebagai penghubung , mengintegrasikan semua.Misalnya mengkompilasi dengan satu versi dari perpustakaan tertentu, dan menjalankan dengan versi lain dari perpustakaan itu akan mengenali kesalahan runtime.
Jadi jawabannya: Kompilasi memberikan unit kode objek yang dikompilasi, yang harus dilihat sebagai kode + data + API untuk dihubungkan bersama.
Kompiler kemudian harus juga melakukan pengepakan bersama, dan memverifikasi tautan API; fase kedua.
Ini mungkin menjengkelkan dan terlihat tidak bagus, tetapi bukti matematis dapat beroperasi dengan cara yang sama: dalam membuktikan seluruh kebenaran seseorang mungkin sudah mempertimbangkan bagian untuk tetap benar sampai verifikasi.
sumber