Anda di halaman 1dari 10

Compiler dan Interpreter

I. Compiler
a. Pengertian Compiler

Compiler adalah program sistem yang juga berfungsi sebagai penterjemah kode program
ke dalam bahasa mesin agar bisa dijalankan oleh mesin. Compiler membaca suatu program
yang ditulis dalam bahasa sumber (source code) dan menerjemahkannya ke dalam bahasa
sasaran (target language). Compiler merupakan program sistem yang digunakan sebagai alat
bantu dalam pemrogaman. Perangkat lunak yang melakukan proses penterjemahan code
(yang dibuat programmer) ke dalam bahasa mesin. Hasil dari terjemahan ini adalah bahasa
mesin. Pada beberapa compiler, output berupa bahasa mesin dilaksanakan dengan proses
assembler yang berbeda. compiler mengeksekusi seluruh instruksi dalam program sekaligus.

Dalam melakukan proses penerjemahan, sudah tentu kompilator akan melaporkan adanya
keanehan-keanehan atau kesalahan yang mungkin ditemukannya. Proses penerjemahan yang
dilakukan oleh kompilator ini disebut proses kompilasi (compiling).
Bila dipandang sepintas lalu, maka akan timbul beranekaragam kompilator yang dapat dibuat
antara lain sebagai berikut :

Bahasa Sumber seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya
yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program
DBASE, SPSS dan lain sebagainya. Bahasa Sasaran dapat berupa bahasa sumber lain seperti
C, FORTRAN dan lain sebagainya.

Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber
komputer besar maupun komputer super.

Contoh bahasa pemrograman yang menggunakan compiler adalah Visual Basic, Fortran,
Cobol, Pascal, C,
b. Sejarah Compiler

Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai
ditemukannya komputer pada awal 1950-an. Sejak waktu tersebut teknik dan cara
pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan
suatu kompilator dapat dilakukan makin mudah. Demikian pula program bantu (tools) untuk
membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator
dapat dilakukan dengan cepat.

Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat
itu dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang
dilakukan oleh 18 orang. Dengan adanya program bantu dan tata cara pembentukan yang
sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, maka
suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.

c. Struktur Compiler
o Scanner : memecah program sumber menjadi Token
o Parser : memeriksa kebenaran dan urutan dari susunan Token (memenuhi
rule/grammar)
o Semantic Analyzer : melakukan analisa semantik, biasanya dalam realisasi akan
digabung dengan intermediate code generator
o Code Generator : membangkitkan kode objek
o Code Optimizer : memperkecil hasil dan mempercepat proses
o Tabel Simbol : menyimpan semua informasi yang berhubungan dengan proses
kompilasi
o Eror handler : minimal melaporkan letak eror pada source program. Umumnya
mencetak baris yang salah dengan pointer ke posisi dimana eror terjadi. Bias juga di
tambahi dengan penyebab terjadi eror.
Eror dibagi menjadi 4, yaitu :
- Lexical, contoh: salah dalam penulisan identifier, keyword, atauoperator.
- Syntactic, contoh: persamaan aritmatika dengan tanda kurung yang kurang.
- Semantic, contoh: operator dengan operand yang tidak sesuai.
- Logical, contoh: pemanggilan recursif tidak terbatas (infinitely recursive call)

d. Proses Compiler

Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama
yaitu bagian analisis dan bagian sintesis.

Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam
beberapa bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari
program sumber. Operasi-operasi yang dilakukan oleh program sumber ditentukan dan
dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax
tree). Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi, sedangkan
anak dari nodal (titik) tersebut memberikan argumen yang diperlukan
Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu :
1. Proses analisis leksikal

2. Proses analisis sintaktik

3. Proses analisis semantic

Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara
yang dihasilkan pada tahap analisis. Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu:
1. Proses yang menghasilkan kode (code generator)
2. Proses optimasi kode (code optimizer)

Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan ini tiap bagian utama akan
berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol
(symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam bahasa
sumber. Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat
dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber dapat dituliskan
dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah.
Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu
praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam
suatu program baru. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapan-
ungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti
pendek.

e. Cara Kerja Compiler

Compiler membaca sebuah source code dalam bentuk teks, menyatukan karakter-karakter
yang berhubungan menjadi token, lalu memeriksa apakah token-token tersebut memenuhi
grammar, setelah itu compiler akan memeriksa semantik input, dan membuat output dalam
sebuah bahasa (yang umumnya adalah assembly). Jika outputnya adalah assembly maka
proses berikutnya adalah assembling yang dilakukan dengan assembler untuk menghasilkan
bahasa mesin. Proses terakhir untuk membuat executable file dilakukan oleh linker.

II. Interpreter
a. Pengertian Interpreter

Interpreter adalah program sistem yang berfungsi sebagai penterjemah kode program yang
dibuat oleh programmer ke dalam bahasa mesin  Perintah-perintah yang dibuat oleh
programmer dieksekusi baris demi baris, sambil mengikuti logika yang terdapat di dalam
kode tersebut.
Interpreter mengeksekusi atau melakukan instruksi yang ditulis dalam bahasa pemprograman
tertentu. Kode-kode bahasa tersebut tidak dalam bentuk bahasa mesin melainkan berupa
source code murni. tugas interpreter adalah mengartikan source code berisi bahasa
pemprograman tersebut sehingga instruksinya dapat dimengerti dan dapat dijalankan oleh
komputer.

Interpreter membaca statement, menganalisanya dan menjalankannya dengan intruksi yang


sesuai di dalam mesin virtual. Interpreter memiliki fungsi opsional, yaitu interactive
interpreter, dimana cara menjalankannya adalah dengan perulangan baca – evaluasi – cetak
(read – eval – print).

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.

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.

Pada interpreter, kode program tidak dapat dirahasiakan. Sedangkan pada compiler, kode
program bisa dirahasiakan, sebab yang dieksekusi adalah program yang dalam bentuk kode
mesin.

Contoh pemprograman yang menggunakan interpreter yaitu PHP, ASP, Perl.

Perl, Python, MATLAB, dan Ruby adalah contoh pemprograman yang menggunakan
interpreter tipe 2 sedangkan UCSD Pascal dan JAVA menggunakan tipe 3.

b. Jenis Interpreter

Berdasarkan jenisnya, interpreter dibedakan menjadi 3 jenis yakni:


1. interpreter yang mengeksekusi langsung source code.
2. mengartikan source code dan merepresentasikannya dalam bentuk tertentu (kode) tingkat
intermediate secara efisien dan langsung mengeksekusinya.
3. Secara eksplisit mengeksekusi kode yang telah tersimpan dan dibuat oleh kompiler
sebagai bagian dari sistem interpretasi. Maksudnya saat interpreter mengartikan suatu
script / kode dia akan membentuk kode-kode dalam bahasa mesin melalui kompiler
khusus dan menjalankan hasil kompilasi tersebut.

III. Perbedaan Compiler dan Interpreter :

1) 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
compilernya.
2) Jika hendak menjalankan program hasil compiler dapat dilakukan tanpa butuh kode
sumber. Sedangkan interpreter membutuhkan kode sumber.

3) Pada compiler, pembuatan kode yang bisa dijalankan mesin dilakukan dalam 2 tahap
terpisah, yaitu parsing ( pembuatan kode objek ) dan linking ( penggabungan kode
objek dengan library ). Pada interpreter tidak ada proses terpisah.

4) Compiler membutuhkan linker untuk menggabungkan kode objek dengan berbagai


macam library demi menghasilkan suatu kode yang bisa dijalankan oleh mesin.
Sedangkan interpreter tidak membutuhkan linker untuk menggabungkan kode objek
dengan berbagai macam library.

5) Interpreter cocok untuk membuat / menguji coba modul ( sub-routine / program-


program kecil ). Sedangkan compiler agak sulit karena untuk mengubah suatu
modul / kode objek kecil, maka harus dilakukan proses linking / penggabungan
kembali semua objek dengan library yang diperlukan.

6) 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. Sedangkan interpreter susah
atau bahkan tidak bisa dioptimasikan.

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.
10) Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya hanya
bentuk internal dimana program induk harus selalu ada. Berbeda dengan compiler.

Compiler
Interpreter

Anda mungkin juga menyukai