Thursday, May 2, 2013

Perbedaan Compiler dan Interpreter

Kembali lagi teringat tentang masa lalu.. hehe.. pas masa sekolah dulu sempat ada pernyataan yang pendek tapi padat dicerna (maklum, yang saya ingat ya pertanyaan-pertanyaan yang pendek-pendek saja :D)

"apa beda compiler dan interpreter?" kata pengajar saya pada saat itu.

 nah, berikut saya coba menuliskan kembali sedikit penjelasan tentang compiler dan interpreter.

Compiler
Nah, kalau compiler ini ada hubungannya dengan Bahasa C. Mungkin kalau pernah meng-kompile code dalam Bahasa C yang kita buat, akan ter-generate beberapa file, termasuk file exe. Kalau lihat dari katanya, yaitu compiler, berasal dari kata compile yang berarti menyusun. Nah, dari beberapa "cara bodoh" tersebut dapat kita simpulkan bahwa compiler merupakan program komputer yang digunakan untuk merubah source code menjadi bahasa yang dimengerti oleh komputer(1). Atau gampangnya, mengubah source code yang kita buat menjadi file yang executeable.


Interpreter 
Contohnya bisa kita rasakan saat menggunakan bahasa pemrograman PHP, dimana source code yang kita buat bisa langsung kita jalankan dan lihat hasilnya tanpa perlu "merubahnya" (meng-compile) terlebih dahulu menjadi file yang berbeda. Maka interpreter merupakan program komputer yang mengeksekusi instruksi yang ditulis ke dalam bahasa yang dimengerti oleh komputer(2).

Berikut perbedaan antara Compiler dan Interpreter :
  1. Jika hendak menjalankan program hasil kompilasi dapat dilakukan tanpa butuh kode sumber. Kalau interpreter butuh kode sumber.
  2. Jika dengan compiler, maka pembuatan kode yang bisa dijalankan mesin dilakukan dalam 2 tahap terpisah, yaitu parsing (pembuatan kode objek) dan linking (penggabungan kode objek dengan library). Kalau interpreter tidak ada proses terpisah.
  3. Jika compiler membutuhkan linker untuk menggabungkan kode objek dengan berbagai macam library demi menghasilkan suatu kode yang bisa dijalankan oleh mesin. Kalau interpreter tidak butuh linker untuk menggabungkan kode objek dengan berbagai macam library
  4. Interpreter cocok untuk membuat / menguji coba modul (program-program kecil). Maka compiler agak repot karena untuk mengubah suatu modul / kode objek kecil, maka harus dilakukan proses linking / penggabungan kembali semua objek dengan library yang diperlukan.
  5. Pada compiler bisa dilakukan optimisasi / peningkatan kualitas kode yang bisa dijalankan. Ada yang dioptimasi supaya lebih cepat, ada yang supaya lebih kecil, ada yang dioptimasi untuk sistem dengan banyak processor. Kalau interpreter susah atau bahkan tidak bisa dioptimasikan.
  6. Interpreter menterjemahkan baris per baris. Sedangkan compiler, menterjemahkan seluruh instruksi sekaligus. Selanjutnya hasil terjemahan (setelah melalui tahapan lain) bisa dijalankan secara langsung, tanpa tergantung lagi oleh program sumber atau compiler-nya.
  7. Pada interpreter, penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program. Sedangkan pada compiler, proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu untuk melakukan proses linking. Program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama sekali.
  8. Pada interpreter, kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu, saat program dieksekusi, interpreter juga harus selalu berada dalam memori. Jadi memori selalu digunakan baik untuk program maupun interpreter. Sedangkan pada compiler, proses eksekusi dapat berjalan dengan cepat, sebab tak ada lagi proses penerjemahan. 
  9. Pada interpreter, kode program tidak dapat dirahasiakan. Sedangkan pada compiler, kode program bisa dirahasiakan, sebab yang dieksekusi adalah program yang dalam bentuk kode mesin.
semoga catatan ini bermanfaat bagi semua..

*** Hanya Sekedar Catatan ***
***      Biar Ga Lupa     ***

 referensi :

Catatan Terkait:

No comments:

Post a Comment