Kompiler/Compiler
(Inggris: compiler) adalah sebuah program/aplikasi komputer yang dapat berguna
untuk menerjemahkan program/aplikasi komputer yang dapat ditulis di dalam
bahasa pemrograman tertentu menjadi program/aplikasi yang dapat ditulis di
dalam bahasa pemrograman lain.
Terlepas
dari pengertiannya yang dapat demikian relatif luas, istilah kompilator biasa
digunakan untuk program/aplikasi komputer yang dapat menerjemahkan
program/aplikasi yang dapat ditulis di dalam bahasa pemrograman tingkat tinggi
(semacam bahasa Pascal, C++, BASIC, FORTRAN, Visual Basic, Visual C#, Java,
xBase, atau COBOL) menjadi bahasa mesin, biasanya dengan bahasa Assembly
sebagai perantara.
Arsitektur
kompilator modern biasanya bukan lagi merupakan program/aplikasi tunggal namun
merupakan rangkaian komunikasi antar program/aplikasi dengan tugas spesifik
masing-masing. Program-program/aplikasi tersebut beserta tugasnya secara umum
terdiri dari:
Kompiler/Compiler
itu sendiri, yang dapat menerima kode sumber dan menghasilkan bahasa tingkat
rendah (assembly)
Assembler,
yang dapat menerima keluaran kompilator dan menghasilkan berkas objek di dalam
bahasa mesin
Linker,
yang dapat menerima berkas objek keluaran bahasa asembly untuk kemudian
digabungkan dengan pustaka-pustaka yang dapat diperlukan dan menghasilkan
program/aplikasi yang dapat dieksekusi (executable)
Kompiler/Compiler
yang dapat menggunakan arsitektur ini misalnya GCC, Clang dan FreeBASIC.
Beberapa
kompilator tidak menggunakan arsitektur di atas secara gamblang, dikarenakan
komunikasi antar program/aplikasi jauh lebih lambat dibandingkan jika
komunikasi dilakukan secara internal di di dalam satu program/aplikasi.
Sehingga kompilator-kompilator tersebut mengintegrasikan bahasa asembly dan
linker di di dalam kompilator. Namun, biasanya arsitektur yang dapat digunakan
pun tidak kaku dan mengizinkan penggunaan bahasa asembly maupun linker
eksternal (berguna jika bahasa asembly dan linker internal bermasalah atau
memiliki galat). Kompiler/Compiler yang dapat menggunakan arsitektur ini salah
satunya adalah Free Pascal.
Profesor
Niklaus Wirth di dalam bukunya Compiler Construction [1] menyatakan bahwa
penggunaan bahasa asembly sebagai bahasa perantara seringkali tidak memberikan
keuntungan yang dapat signifikan, sehingga dia menyarankan agar kompilator
langsung menghasilkan bahasa mesin. Kompiler/Compiler dengan arsitektur seperti
ini dapat berjalan dengan sangat cepat, seperti yang dapat ditunjukkan pada
kompilator orisinil Pascal, Modula-2 dan Oberon yang dapat dibuat oleh sang
profesor.
Kompiler/Compiler
melakukan proses kompilasi dengan cara menganalisis kode sumber secara
keseluruhan, sehingga waktu yang dapat dibutuhkan untuk melakukan kompilasi
lebih lama, namun hasilnya lebih cepat di dalam proses eksekusi daripada
program/aplikasi yang dapat dibuat dengan menggunakan teknik interpretasi
dengan interpreter.
EmoticonEmoticon