SESI 4 - COMPILER VS INTERPRETER

September 04, 2018 by

Pada sesi 3 kita membahas source code
Sekarang ini kita  membahas bagaiman eksekusi source code.

Ada 3 metode untuk mengeksekusi source code untuk menjalankan source code yang telah dibuat :
1. Metode Compiler
2. Metode Interpreter
3. Metode Hybrid (Compiler-Interpreter)
Pengertian Compiler
Compiler adalah suatu program yang menerjemahkan bahasa program ( source code) kedalam bahasa objek (obyek code). Compiler menggabungkan keseluruhan bahasa program, mengumpulkannya dan kemudian menyusunnya kembali.

Komplier memerlukan waktu untuk membuat suatu program dapat di eksekusi oleh computer, program yang dieksekusi oleh compiler adalah dapat berjalan lebih cepat disbanding program yang diperoduksi oleh interpreter, disamping itu juga bersifat independen. Contoh program yang menggunakan compiler adalah Visual Basic, Visual Delvi, dan Pascal.

Tahap Kompilasi:
  • Pertama source code (program yang ditulis) dibaca kememori computer).
  • Source code tersebut diubah menjadi objek code (bahasa Assembly).
  • Objek code di hubungkan dengan liberary yang dibutuhkan untuk membentuk file yang bisa dieksekusi.

Pengertian Interpreter
Interpreter adalah Perangkat lunak yang mampu mengeksekusi code program (yang ditulis oleh programmer) lalu menterjemahkannya ke dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh programmer tersebut. Perintah-perintah yang dibuat oleh programmer tersebut dieksekusi baris demi baris, sambil mengikuti logika yang terdapat di dalam kode tersebut.

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.

Interpreter atau dalam bahasa Indonesia dikenal sebagai Juru Bahasa berbeda dengan Translator atau penterjemah dalam segi media yang dipakai untuk menerjemahkan. Interpreter akan menterjemahkan bahasa sumber ke dalam bahasa sasaran secara langsung atau orally sementara translator akan menerjemahkan bahasa sumber ke bahasa sasaran secara tertulis.

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.

Pengertian Assambler
Bahasa assembly adalah sebuah program yang 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” yang dalam bahasa assembly dapat dibuat dalam instruksi mnemonik ADD, sehingga mudah diingat dibandingkan dengan angka 0 dan 1, dalam setiap instruksi membutuhkan suatu operand baik berupa data langsung maupun suatu lokasi memori yang menyimpan data yang bersangkutan. Bahasa assembly sering juga disebut kode sumber atau kode simbolik 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.

Pengertian Linker
Linker adalah suatu program yang menterjemahkanprogram objek (bereksention OBJ) ke bentukprogram eksekusi (berekstension EXE atau COM).Sedangkan untuk membuat file object ke bentuk fileyang dapat dieksekusi(berekstension.COM atau.EXE) bisa anda gunakan file TLINK.EXE.

Penggambaran sederhana untuk compiler 
+ Ceritanya Si A membuat program dan nanti programnya akan diberikan kepada B.
+ Si A membuat source code.
+ Si A mengkompilasi source code dengan compiler tergantung dari bahasa pemrograman yang dibuat apa.
+ Setelah dikompilasi akan menghasilkan file baru.
+ File hasil kompilasi akan diberikan kepada si B (hasil kompilasi bentuknya file executable (exe) atau program yang sudah bisa dieksekusi).
+ Nanti programmnya bisa dilihat oleh si B dan si B tidak perlu memiliki compiler lagi dan tidak pernah melihat source code dari si A. Jadi si B hanya bisa running program dari si A, source codenya tetap ada di Si A.

Penggambaran sederhana untuk interpreter
+ Ceritanya sama dengan compiler tetapi si A, pembuat source code, tidak mengkompilasi source codenya, akan tetapi diduplikasi untuk diberikan kepada Si B.
+ Nanti si B harus menggunakan interpreter untuk menerjemahkan program si A.
+ Lalu menjalankan interpreter sekaligus programnya.
+ Interpreter ini berjalan real-time pada saat menerjemahkan source codenya baris per baris.
Contoh: Website ada source code javascriptnya, ketika web diakses ada sebuah interpreter yang ada di web browser untuk menerjemahkan kode-kode javascript.


Penggambaran sederhana untuk metode Hybrid
+ Si A membuat source code
+ Kemudian si A mengkompilasi source code
+ File yang di hasilkan adalah sebuah intermediate language (IL)/byte code. IL ini sudah teroptimasi ke dalam bahasa mesin dan umumnya lintas platform.
+ Kemudian diberikan kepada si B.
+ Si B melakukan compile sambil menjalankan program tersebut atau yang disebut Just In-Time Compilation (JIT Compilation).

Perbedaan Compiler dan Interpreter 

Compiler :
+ Lebih cepat karena sudah teroptimasi ke dalam bahasa mesin.
+ Source code tidak ada karena yang dilihat user adalah hasil kompilasi.
+ Tidak lintas platform artinya harus memakai OS tertentu, atau CPU tertentu, atau spesifikasi lainnya.
+ Tidak fleksibel karena editing source code harus dikompilasi lagi sebagai langkah tambahan.

Interpreter:
+ Mudah dimodifikasi source code sehingga fleksibel
+ Butuh interpreter, contohnya web browser untuk interpretasi javascript
+ Lebih lambat karena eksekusi kode-kodenya baris per baris 
+ Akses dari orang lain lebih mudah karena source code yang ada tertanam di web browser.

Secara teori semua bahasa pemrograman bisa menggunakan 3 metode di atas (compiler, interpreter dan hybrid), tetapi biasanya tiap bahasa pemrograman hanya memiliki satu metode.
Contoh :
+ Bahasa yang menggunakan compiler : C, C++, Objective-C.
+ Bahasa yang menggunakan interpreter : Javascript, PHP. 
+ Bahasa yang menggunakan hybrid : JAVA, VB.net, Python.

Bahasa yang harus dipilih apa? Intinya sesuai dengan kebutuhan, jika ingin bahasa yang cepat dan langsung teroptimasi dengan bahasa mesin/komputer pilih bahasa yang mempunyai compiler, jika ingin fleksibel cari bahasa yang ada interpreter.
Akan tetapi diri Anda sendiri ingin membuat apa ?
+ Web Development : PHP, C, Javascript, C++, JAVA, Python, Ruby.
+ Game Development : C#, C++, C, JAVA, Python, Ruby.
+ Mobile Apps Development : C#, C++, JAVA.
+ Data Analyst : R, Python, Matlab.
+ Embeded System Programming : C, C++, Python.

INFOGRAFIK

0 comments:

Post a Comment