Compiler dan Interpreter – Pada dasarnya komputer hanya memahami bahasa mesin yang identik dengan angka 0 dan 1. Untuk berkomunikasi dengan komputer yaitu menggunakan bahasa pemrograman. Setelah itu instruksi yang diberikan akan diproses oleh sebuah hardware komputer yaitu CPU (Central Processing Unit) sebelum bisa dipahami oleh komputer.
Saat seorang programmer menuliskan kode program atau source code kemudian menjalankannya, maka akan terjadi proses konversi. Ada dua cara untuk mengonversi atau menerjemahkan program yang dibuat dalam high-level programming language (bahasa tingkat tinggi) ke bahasa mesin, yaitu Compiler dan Interpreter.
Sebelum memahami compiler dan Interpreter lebih dalam, hal penting yang harus anda ketahui adalah bagaimana proses hardware memahami sebuah bahasa. Berikut penjelasannya..
High-level programming language (HLL)
Hardware bisa memahami sebuah bahasa pemograman yang disebut sebagai high-level programming language (HLL). Biasanya HLL diterapkan pada program yang berisi arahan #define atau #include seperti #include atau #define
HLL lebih dekat dengan bahasa manusia tapi sulit dimengerti oleh mesin. Sehingga, program dengan bahasa ini perlu melalui serangkaian transformasi agar mudah digunakan mesin. Hal inilah peran dari language processing system yang digambarkan sebagai berikut :
Pre-processor
Saat proses pre-processor dimulai, maka compiler akan menghapus semua kode yang berisi arahan #include dengan menambahkan file bernama file inclusion. Setelah itu, kode dengan arahan #define akan diganti dengan macro expansion. Proses ini berhubungan dengan pemrosesan makro, augmentasi, ekstensi bahasa, dan lain-lain.
Hasil dari proses compiler ini adalah assembly language yang merupakan perantara dan mengombinasikan instruksi mesin dan beberapa data berguna lainnya yang diperlukan untuk langkah selanjutnya. Bahasa assembly tidak dalam format biner atau HLL.
Compiler
Compiler adalah suatu program yang menerjemahkan bahasa program atau source code ke dalam bahasa objek (obyek code). Compiler berfungsi untuk menggabungkan keseluruhan bahasa program, mengumpulkannya serta menyusunnya kembali.
Contohnya, Sebuah website dibuat atas susunan beberapa bahasa dan kode tertentu, agar kode tersebut berubah menjadi website yang dapat berjalan dengan baik, maka developer menggunakan yang disebut compiler. compiler akan mengkonversi kode tersebut lalu menyusunnya sehingga dapat dipahami oleh komputer
Akan tetapi complier juga membutuhkan waktu untuk membuat suatu program agar dapat di eksekusi oleh komputer. Namun program yang dieksekusi oleh compiler dapat berjalan lebih cepat dibanding program yang diproduksi oleh interpreter.
Tahap Kompilasi Compiler
- Pertama source code (program yang ditulis) dibaca ke memori komputer.
- Lalu source code tersebut diubah menjadi objek code (bahasa Assembly).
- Setelah itu objek code akan di hubungkan dengan library untuk membentuk file yang bisa dieksekusi.
Ada beberapa contoh compilator dalam Bahasa pemrograman, diantaranya adalah Visual Basic, C++, Pascal, Fortran, Visual Delvi, dll.
Fungsi dan manfaat Compiler
Tugas utama dari compiler adalah mengonversi kode, namun terdapat beberapa tugas lain diantaranya.
- Memecah program sumber menjadi beberapa bagian dan menerapkan struktur tata bahasa.
- Membangun program target yang diinginkan dari representasi perantara dan membuat tabel simbol.
- Mengompilasi kode sumber dan mendeteksi kesalahan di dalamnya.
- Mengelola ruang penyimpanan semua variabel dan kode.
- Melakukan dukungan untuk kompilasi terpisah.
- Membaca dan menganalisis seluruh program untuk kemudian diterjemahkan ke dalam padanan semantik.
- Menerjemahkan kode sumber ke dalam kode objek sesuai dengan jenis mesin yang digunakan.
Adapun beberapa manfaat penting dari compiler adalah sebagai berikut:
- Membantu seseorang mendalami pemahaman mengenai bahasa semantik.
- Memeriksa dan menverifikasi keseluruhan program guna menghindar dari kesalahan sintaks dan semantik.
- Menerjemahkan program dari satu bahasa ke bahasa lainnya.
- Memeriksa kesalahan pada tipe data
- Problem solving dalam hal kinerja bahasa.
- Teknik compiler memungkinkan digunakan untuk program lainnya.
- Memudahkan untuk membuat file pada hardware.
- Proses eksekusi compiler cepat sehingga menghemat waktu
- Memudahkan developer atau programmer untuk membuat struktur internal dalam memori.
- Pengguna tidak perlu menjalankan program pada mesin yang sama dengan yang sedang dijalankan.
Assembler
Bahasa assembly atau yang disebut dengan kode sumber atau kode simbolik merupakan bahasa yang tidak dapat dijalankan oleh prosesor, sedangkan assembler adalah suatu program yang dapat menerjemahkan program bahasa assembly ke program bahasa mesin. Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Program bahasa mesin sering disebut sebagai kode objek.
Bahasa assembly terdiri dari instruksi-instruksi yang menggantikan kode-kode biner dari bahasa mesin dengan “mnemonik” yang mudah diingat. Misalnya sebuah instruksi penambahan dalam bahasa mesin dengan kode “10110011”, maka dalam bahasa assembly dapat dibuat dalam instruksi mnemonik ADD. Dalam setiap instruksi membutuhkan suatu operand baik berupa data langsung maupun suatu lokasi memori yang menyimpan data yang bersangkutan.
Setiap platform memiliki assembler. Namun, setiap hardware dan operasi sistem mempunyai assembler yang berbeda. Assembler menerjemahkan kode dalam assembly language menjadi sebuah bahasa yang dipahami oleh mesin. Hasil dari assembler disebut sebagai file objek yang merupakan gabungan dari instruksi mesin serta data yang dibutuhkan untuk menyimpan instruksi tersebut dalam memori.
Relocatable machine code
Relocatable machine code dapat dijalankan kapan saja. Alamat dalam program akan terbentuk sedemikian rupa untuk bekerjasama dengan pergerakan program.
Linker
Linker adalah suatu program yang menterjemahkan program objek (ekstensi OBJ) ke bentuk program eksekusi (ekstensi EXE atau COM). Sedangkan untuk membuat file object ke bentuk file yang dapat dieksekusi (berekstension.COM atau.EXE) bisa anda gunakan file TLINK.EXE.
Linker dapat membantu untuk menggabungkan berbagai file objek untuk membuat file yang dapat dieksekusi. Semua file ini mungkin telah dikompilasi dengan assembler yang terpisah. Tugas utama linker adalah mencari modul yang dipanggil dalam program dan menemukan lokasi memori tempat semua modul disimpan.
Interpreter
Interpreter merupakan software yang mampu mengeksekusi code lalu menterjemahkannya ke dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh programmer. Perintah yang dibuat oleh programmer tersebut dapat dieksekusi baris demi baris, sambil mengikuti logika yang terdapat di dalam kode tersebut.
Interpreter mengubah HLL menjadi bahasa yang dapat dimengerti oleh mesin. Berbeda dengan compiler, interpreter menerjemahkan program satu pernyataan pada satu waktu. Oleh sebab itulah waktu yang dibutuhkan oleh interpreter jauh lebih lama jika dibandingkan dengan compiler.
Proses ini sangat berbeda dengan compiler, dimana pada compiler, hasilnya sudah langsung berupa satu kesatuan perintah dalam bentuk bahasa mesin, dimana proses penterjemahan dilaksanakan sebelum program tersebut dieksekusi. Contohnya digambarkan sebagai berikut :
Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.
Fungsi Interpreter
Adapun fungsi utama dari interpreter diantaranya :
- Mengeksekusi kode sumber secara langsung
- Menerjemahkannya ke dalam serangkaian p-code kemudian mengeksekusinya, atau
- Mengeksekusi kode yang telah dikompilasi sebelumnya oleh kompileryang merupakan bagian dari sistem penerjemahan.
Perbedaan Compiler dan Interpreter
Baik itu compiler dan interpreter sebenarnya memiliki fungsi yang hampir sama yaitu untuk bahasa HLL (High Level Language) ke dalam bahasa mesin. Dari beberapa aspek terdapat perbedaan antara compiler dan interpreter diantaranya :
Cara Kerja
Cara kerja dari compiler adalah dengan mengonversi source code atau kode sumber menjadi machine code sebelum program tersebut dijalankan, atau dengan membuat berkas atau file executable. Sedangkan Interpreter, bekerja dengan mengonversi source code menjadi machine code secara langsung pada saat suatu program dijalankan.
Command atau Perintahnya
Seluruh perintah dalam compiler dapat diartikan sekaligus, sehingga memerlukan proses pengujian dengan waktu relatif lebih lama. Selain itu, bila terdapat kesalahan akan ditampilkan pada akhir proses. Sementara pada Interpreter, perintah diterjemahkan secara baris per baris, sehingga proses pengujian program relatif lebih cepat. Selain itu, kesalahan akan ditampilkan baris demi baris.
Linker
Kompiler memerlukan linker untuk menggabungkan kode objek dengan berbagai macam library sehingga bisa menghasilkan suatu kode yang bisa dijalankan oleh mesin. Sedangkan interpreter tidak memerlukan linker untuk menggabungkan kode objek.
Program Code
Pada compiler, program dijalankan dalam bentuk kode mesin sehingga kode program dapat dirahasiakan. Sedangkan pada interpreter, kode program tidak dapat dirahasiakan.
Bahasa Pemrograman
Bahasa pemrograman yang menggunakan compiler diantaranya adalah Visual Basic (VB), Fortran, Cobol, Pascal, dan C. Adapun bahasa pemrograman yang digunakan pada interpreter yaitu PHP, ASP, dan Perl.