--> Skip to main content

Perbedaan Compiler dan Interpreter


Bagi yang berkecimpung dalam dunia pemrograman, kedua kata ini (compiler dan interpreter) sudah sering didengar.  Namun kita tidak dapat secara pasti mendeskripsikannya,karena yang terpenting bagi kita…kita dapat membuat sebuah program. Disaat ada pertanyaan dari teman atau seseorang yang baru menekuni bahasa pemrograman….barulah kita mulai mencari tahu.

Ada banyak sumber yang menjelaskan perbedaan keduanya, namun penjelasan dalam bentuk kalimat tanpa disertai contoh….tentunya tidak mudah dipahami.
Berangkat dari hal yang dikemukakan diatas….dalam ulasan perbedaan compiler dan interpreter akan diusahakan pembahasan yang lebih mudah dipahami.

Pendahuluan

Komputer hanya memahami bahasa mesin (machine language) yang disebut binary code,yaitu berupa 0 dan 1. Baik “compiler” dan “interpreter” memilki tujuan yang sama, yaitu: mengubah bahasa pemrograman ke dalam bentuk “binary code”.

Gambar.1 Konversi  machine dari Compiler dan Interpreter


Setiap komputer memiliki tipikal CPU yang berbeda, instruksi biner pada CPU akan terlihat seperti berikut:
1010010110111010
1001110110000111
0001110010110001

Instruksi bilangan biner diatas disimpan pada lokasi memori yang disebut dengan “Register” dalam CPU. Setiap CPU (microprocessor) memiliki sekumpulan register yang berbeda-beda. Hal ini dipengaruhi oleh arsitektur processor yang digunakan.
Walaupun keduanya memiliki tujuan yang sama, namun cara mengeksekusinya berbeda.

Compiler

Jika kita sedang membuat sebuah program dengan menggunakan bahasa pemrograman tingkat tinggi (High Level Language) seperti menggunakan Bahasa Pemrograman C.

Gambar.2 Program C





Description: http://pastebin.com/i/t.gif Description: http://pastebin.com/i/t.gif 




Maka untuk menjalankannya program tersebut akan diterjemahkan ke dalam bahasa mesin oleh sebuah compiler.

Native Compiler dan Cross Compiler

Compiler dibagi menjadi dua kategori berdasarkan code machine yang digenerate-nya:

1. Native Compiler
2. Cross Compiler

Untuk “Native Compiler”, jika kita mengcompile bahasa c diatas pada arsitektur processor x86 yang mengenerate file executable, maka hanya berjalan pada mesin arsitektur yang sama.


Sedangkan “Cross compiler” mengenerate kode mesin untuk arsitektur prosessor lain meskipun program bahasa c tersebut dijalankan pada mesin arsitekur prosessor yang berbeda. Cross compiler sering digunakan pada embedded device.

Prinsip kerja Compiler


Seperti contoh program bahasa C yang ditunjukkan oleh Gambar.2 diatas, ketika kita menggunakan #include <stdio.h>, compiler akan mengecek eksistensi dari file "stdio.h". File “stdio.h” berada pada folder “include” . Jika tidak ditemukan maka akan keluar pesan error dan mengakibatkan proses kompilasi gagal.

Jika ditemukan file “stdio.h” maka akan dicek fungsi “printf” yang telah didefinisikan pada file “stdio.h”. Jika fungsi tersebut tersedia, maka proses akan dilanjutkan dengan baris program berikutnya sampai dengan selesai.


Jika program dari gambar.2 berhasil setelah decompile, compiler akan menghasilkan sebuah file obj dan akan menginisiasi linker. Linker merupakan program yang menghubungkan ke semua file-file  termasuk file library yang saling berhubungan dari projek yang kita buat. Fungsi lain dari Linker menterjemahkan OS API (Application Programming Interface) call  ke alamat memori yang sesuai.


Linker mengetahui alamat memori di mana kode untuk fungsi-fungsi ini berada, dan menerjemahkan fungsi panggilan ke alamat memori yang sesuai dengan pada ruang memori sistem operasi.

Berikut ini adalah diagram prinsip kerja dari Compiler seperti yang ditunjukkan oleh Gambar.3.

Gambar.3.Prinsip Kerja Compiler






















Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar
Tutup Komentar