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,

c. Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat. Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat. Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah. yaitu pada saat mulai ditemukannya komputer pada awal 1950-an. Sejarah Compiler Sejarah perkembangan suatu kompilator sudah dimulai sejak lama. maka suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.b. 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. Struktur Compiler .

contoh: operator dengan operand yang tidak sesuai. atauoperator. Umumnya mencetak baris yang salah dengan pointer ke posisi dimana eror terjadi. yaitu : Lexical. Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree). contoh: salah dalam penulisan identifier. Proses Compiler Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian analisis dan bagian sintesis.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. Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi. 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. Syntactic. contoh: pemanggilan recursif tidak terbatas (infinitely recursive call) d. sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan . keyword. 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. contoh: persamaan aritmatika dengan tanda kurung yang kurang. Eror dibagi menjadi 4. Logical. Semantic. Bias juga di tambahi dengan penyebab terjadi eror.

Untuk tahap sintetis terdiri dari 2 bagian utama. Proses optimasi kode (code optimizer) Sebelum Bahasa sasaran dapat dihasilkan. Proses analisis sintaktik 3. dan membuat output dalam sebuah bahasa (yang umumnya adalah assembly). Proses analisis semantic Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis. maka suatu program khusus yang disebut dengan suatu praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. 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. Seperti suatu bahasa sumber dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah. yaitu : 1. Proses analisis leksikal 2. Untuk menanggulangi hal ini. . Cara Kerja Compiler Compiler membaca sebuah source code dalam bentuk teks.Secara umum proses dalam tahap analis terdiri dari 3 bagian utama. Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. e. Proses yang menghasilkan kode (code generator) 2. menyatukan karakter-karakter yang berhubungan menjadi token. lalu memeriksa apakah token-token tersebut memenuhi grammar. Jika outputnya adalah assembly maka proses berikutnya adalah assembling yang dilakukan dengan assembler untuk menghasilkan bahasa mesin. yaitu: 1. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapanungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti pendek. setelah itu compiler akan memeriksa semantik input. Proses terakhir untuk membuat executable file dilakukan oleh linker.

Sedangkan pada compiler. dimana cara menjalankannya adalah dengan perulangan baca ± evaluasi ± cetak (read ± eval ± print). sambil mengikuti logika yang terdapat di dalam kode tersebut. Interpreter membaca statement. Sedangkan pada compiler. proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama. Kode-kode bahasa tersebut tidak dalam bentuk bahasa mesin melainkan berupa source code murni. Interpreter memiliki fungsi opsional. interpreter juga harus selalu berada dalam memori. sebab yang dieksekusi adalah program yang dalam bentuk kode mesin. kode program tidak dapat dirahasiakan. kode program bisa dirahasiakan. tugas interpreter adalah mengartikan source code berisi bahasa pemprograman tersebut sehingga instruksinya dapat dimengerti dan dapat dijalankan oleh komputer. Pada interpreter. penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program. Jadi memori selalu digunakan baik untuk program maupun interpreter. Pada interpreter. Sedangkan pada compiler.II. kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu. Pada interpreter. proses eksekusi dapat berjalan dengan cepat. sebab tak ada lagi proses penerjemahan. yaitu interactive interpreter. saat program dieksekusi. Interpreter a. Interpreter mengeksekusi atau melakukan instruksi yang ditulis dalam bahasa pemprograman tertentu. Program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama sekali. . menganalisanya dan menjalankannya dengan intruksi yang sesuai di dalam mesin virtual. sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu untuk melakukan proses linking. 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.

2. . MATLAB. b. Secara eksplisit mengeksekusi kode yang telah tersimpan dan dibuat oleh kompiler sebagai bagian dari sistem interpretasi. Perl. mengartikan source code dan merepresentasikannya dalam bentuk tertentu (kode) tingkat intermediate secara efisien dan langsung mengeksekusinya. Python. Jenis Interpreter Berdasarkan jenisnya. Maksudnya saat interpreter mengartikan suatu script / kode dia akan membentuk kode-kode dalam bahasa mesin melalui kompiler khusus dan menjalankan hasil kompilasi tersebut. ASP.Contoh pemprograman yang menggunakan interpreter yaitu PHP. Perl. dan Ruby adalah contoh pemprograman yang menggunakan interpreter tipe 2 sedangkan UCSD Pascal dan JAVA menggunakan tipe 3. interpreter dibedakan menjadi 3 jenis yakni: 1. 3. interpreter yang mengeksekusi langsung source code.

2) Jika hendak menjalankan program hasil compiler dapat dilakukan tanpa butuh kode sumber. 7) Pada interpreter. proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama. ada yang dioptimasi untuk sistem dengan banyak processor. 3) Pada compiler. maka harus dilakukan proses linking / penggabungan kembali semua objek dengan library yang diperlukan. kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Sedangkan compiler. Sedangkan interpreter susah atau bahkan tidak bisa dioptimasikan. pembuatan kode yang bisa dijalankan mesin dilakukan dalam 2 tahap terpisah. saat program . 8) Pada interpreter. yaitu parsing ( pembuatan kode objek ) dan linking ( penggabungan kode objek dengan library ). ada yang supaya lebih kecil. Sedangkan interpreter membutuhkan kode sumber. Perbedaan Compiler dan Interpreter : 1) Interpreter menterjemahkan baris per baris. Sedangkan interpreter tidak membutuhkan linker untuk menggabungkan kode objek dengan berbagai macam library. Selanjutnya hasil terjemahan (setelah melalui tahapan lain) bisa dijalankan secara langsung. tanpa tergantung lagi oleh program sumber atau compilernya. 4) Compiler membutuhkan linker untuk menggabungkan kode objek dengan berbagai macam library demi menghasilkan suatu kode yang bisa dijalankan oleh mesin.III. Selain itu. penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program. Program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama sekali. sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu untuk melakukan proses linking. Sedangkan compiler agak sulit karena untuk mengubah suatu modul / kode objek kecil. menterjemahkan seluruh instruksi sekaligus. Pada interpreter tidak ada proses terpisah. 6) Pada compiler bisa dilakukan optimisasi / peningkatan kualitas kode yang bisa dijalankan. 5) Interpreter cocok untuk membuat / menguji coba modul ( sub-routine / programprogram kecil ). Ada yang dioptimasi supaya lebih cepat. Sedangkan pada compiler.

9) Pada interpreter. sebab tak ada lagi proses penerjemahan. 10) Interpreter tidak menghasilkan bentuk object code. kode program tidak dapat dirahasiakan. interpreter juga harus selalu berada dalam memori. proses eksekusi dapat berjalan dengan cepat. kode program bisa dirahasiakan. . Berbeda dengan compiler. Jadi memori selalu digunakan baik untuk program maupun interpreter. tetapi hasil translasinya hanya bentuk internal dimana program induk harus selalu ada. Sedangkan pada compiler. sebab yang dieksekusi adalah program yang dalam bentuk kode mesin. Sedangkan pada compiler.dieksekusi.

Compiler Interpreter .

Sign up to vote on this title
UsefulNot useful