Compiler & Interpreter

dokumen-dokumen yang mirip
Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI

Pendahuluan. Kuliah online : Tekkom [2013/VI]

Pendahuluan. Tujuan Pembelajaran :

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

LANGUAGES AND TRANSLATOR

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

PENGANTAR TEKNIK KOMPILASI

TEKNIK KOMPILASI. Alamat untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

Tahap pengembangan program

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Pengantar Teknologi Informasi. Software Komputer

Materi Pelajaran : Algoritma Pemrograman. Siswa memahami tentang dasar dasar Algoritma Pemrograman

Pengenalan Pemrograman Komputer (Software)

Algoritma Pemrograman 2C

ALGORITMA DAN PEMROGRAMAN #2

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

TEKNIK KOMPILASI. Oleh. Hartono

PENDAHULUAN PEMROGRAMAN KOMPUTER. Mengapa Belajar Pemrograman Komputer?

Bab 1. Pengenalan Pemrograman C

UNIVERSITAS GUNADARMA

BAB I PENGANTAR Pendahuluan Penyajian 1.1 Latar Belakang 1.2 Algoritma dan Struktur Data

Algoritma Pemrograman I

ALGORITMA DALAM KAITANNYA DENGAN KOMPUTER

Implementasi OOP Pada Perangkat Lunak Pemrograman

A. Pemahaman Awal. Oleh : Fiftin Noviyanto

Dasar Pemrograman. Nisa ul Hafidhoh

Pemrograman dan Bahasa Pemrograman

Mengapa Belajar Pemrograman Komputer?

Pengantar Teknologi Sistem Informasi C

Fase-fase proses sebuah kompilasi

Introduction To Programming & Software Engineering. Inggriani Liem Revisi oleh: Tim Penyusun Materi KU1071/Pengantar Teknologi Informasi A

BAB I PENDAHULUAN. 1.1 Latar Belakang

Pengayaan Software/Hardware dan Pengantarmukaan

A. Pemahaman Awal. Hardware dan Software(1) Ada beberapa perangkat utama di komputer 20/01/2012

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Algoritma dan Struktur Data

KOM204 : BAHASA PEMROGRAMAN

Tujuan. Pengenalan. Pengenalan Pemrograman Komputer. Komponen Dasar pada Komputer : Hardware. Komponen Dasar pada Komputer : Hardware

Web Site :

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

Pendahuluan. Komputasi Nuklir. 29 Oktober Komputasi Nuklir Pendahuluan 29 Oktober / 41

BAB II KEGIATAN PEMBELAJARAN

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

Programming Language Bahasa Pemrograman

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

P3 Pengantar Pemrograman C

Teknik Kompiler 1. oleh: antonius rachmat c, s.kom

8/4/2011. Microprocessor & Microcontroller Programming. Bahasa Pemrograman. Bahasa Pemrograman. Bahasa Pemrograman

Pemrograman. Fery Updi,M.Kom

P - 3 Bab 2 : Pengantar Pemrograman C

BAB I PENGENALAN TEKNIK KOMPILASI

BAB II KAJIAN PUSTAKA

SEMANTIK. Int vector[10];

Fungsi Bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

Pengantar Teknologi Informasi

PEMROGRAMAN KOMPUTER DASAR. Kuliah ke-1

Algoritma dan Struktur Data

Kualitas bahasa pemrograman: Ekspresivitas : secara jelas menggambarkan algoritma yang dibuat oleh programmer

Sekilas Tentang C. Dasar Pemrograman & Algoritma

MATERI II KOMPUTER (SOFTWARE)

MATERI KULIAH ALGORITMA DAN PEMROGRAMAN I (2 SKS)

Pengenalan Pemrograman

Pengenalan Algoritma

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Dasar Pemrograman. Nisa ul Hafidhoh

TEKNIK KOMPILASI. Firrar Utdirartatmo

Gambar 1. Blok Utama Komputer

PENGANTAR ALGORITMA PEMROGRAMAN

Heru Suhartanto, PhD

TEORI BAHASA DAN OTOMATA [TBO]

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

OPERASI DASAR KOMPUTER dan PERANGKAT LUNAK DALAM SISTEM INFORMASI

Asal Mula Software Komputer

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Bahasa Pemrograman. Secara umum terdapat 4 kelompok Bahasa Pemrograman yaitu:

Pengenalan Algoritma & Pemrograman

POKOK BAHASAN - 1 ALGORITMA & PEMROGRAMAN

PENGENALAN DASAR PEMROGRAMAN

BAB I SEKILAS TENTANG C

BAHASA TINGKAT TINGGI

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

BAB V ANALISA SEMANTIK

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

PEMROGRAMAN TERSTRUKTUR

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Dasar Pemrograman C++

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

Introduction To Programming & Software Engineering

Zaenal Abidin, S.Si., M.Cs. Riza Arifudin, S.Pd., M.Cs.

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

1. Algoritma & Pemrograman

Kusnawi, S.Kom, M.Eng

Transkripsi:

Compiler & Interpreter ICT Nama Kelompok Dyah Kamiswari Sarah Apriliana Stania Ajeng IT AeU Politeknik Negeri Jakarta

KOMPILATOR Kompilator (Inggris: compiler) adalah sebuah program komputer yang berguna untuk menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu menjadi program yang ditulis dalam bahasa pemrograman lain. Terlepas dari pengertiannya yang demikian relatif luas, istilah kompilator biasa digunakan untuk program komputer yang menerjemahkan program yang ditulis dalam bahasa pemrograman tingkat tinggi (semacam bahasa Pascal, C++, BASIC, FORTRAN, Visual Basic, Visual C#, Java, xbase, atau COBOL) menjadi bahasa mesin, biasanya dengan bahasa Assembly sebagai perantara. Arsitektur kompilator modern biasanya bukan lagi merupakan program tunggal namun merupakan rangkaian komunikasi antar program dengan tugas spesifik masingmasing. Program-program tersebut beserta tugasnya secara umum terdiri dari: Kompilator itu sendiri, yang menerima kode sumber dan menghasilkan bahasa tingkat rendah (assembly) Assembler, yang menerima keluaran kompilator dan menghasilkan berkas objek dalam bahasa mesin Linker, yang menerima berkas objek keluaran assembler untuk kemudian digabungkan dengan pustaka-pustaka yang diperlukan dan menghasilkan program yang dapat dieksekusi (executable) *Kompilator yang menggunakan arsitektur ini misalnya GCC, Clang dan FreeBASIC. Beberapa kompilator tidak menggunakan arsitektur di atas secara gamblang, dikarenakan komunikasi antar program jauh lebih lambat dibandingkan jika komunikasi dilakukan secara internal di dalam satu program. Sehingga kompilator-kompilator tersebut mengintegrasikan assembler dan linker di dalam kompilator. Namun demikian, biasanya arsitektur yang digunakan pun tidak kaku dan mengizinkan penggunaan assembler maupun linker eksternal (berguna jika assembler dan linker internal bermasalah atau memiliki galat). Kompilator yang menggunakan arsitektur ini salah satunya adalah Free Pascal. Profesor Niklaus Wirth dalam bukunya Compiler Construction [1] menyatakan bahwa penggunaan assembler sebagai bahasa perantara seringkali tidak memberikan keuntungan

yang signifikan, sehingga beliau menyarankan agar kompilator langsung menghasilkan bahasa mesin. Kompilator dengan arsitektur seperti ini dapat berjalan dengan sangat cepat, seperti yang ditunjukkan pada kompilator orisinil Pascal, Modula-2 dan Oberon yang dibuat oleh sang profesor. Kompilator melakukan proses kompilasi dengan cara menganalisis kode sumber secara keseluruhan, sehingga waktu yang dibutuhkan untuk melakukan kompilasi lebih lama, namun hasilnya lebih cepat dalam proses eksekusi daripada program yang dibuat dengan menggunakan teknik interpretasi dengan interpreter. 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. Model Kompilator Sebuah kompilator memiliki dua fungsi : 1. Fungsi Analis : dekomposisi program sumber menjadi bagian-bagian dasarnya. Source Code -> Lexical Analyzer : Scanner -> Syntactic Analyzer : Parser -> Semantic Analyzer : Intermediate Code Generator 2. Fungsi Sintesis : pembangkitan dan optimasi kode. Code Generator -> Code Optimizer -> Object Code Keterangan : Scanner : memecah program sumber menjadi besaran leksik/token. Parser : memeriksa urutan kemunculan token. Analisis Semantik : biasanya digabungkan dengan intermediate code generator (bagian yang berfungsi membangkitkan kode antara). Code Generator : membangkitkan kode objek. Code Optimizer : memperkecil hasil dan mempercepat proses. Tabel Simbol : menyimpan semua informasi yang berhubungan dengan kompilasi.

Model Kompilator seperti di atas disebut Multi Pass Compiler / Separate Compiler yaitu Scanner dan Parser bekerja terpisah. Scanner menghasilkan semua token, baru diproses oleh Parser. Berbeda dengan One Pass Compiler dimana Scanner baru bekerja menghasilkan tiap token setelah mendapatkan perintah dari Parser. Token : besaran pembangun bahasa/representasi dari besaran leksik. Mutu Kompilator 1. Kecepatan dan waktu proses kompilasi. Tergantung pada : a. Penulisan algoritma kompilator, yaitu algoritma yang digunakan untuk menuliskan program kompilator tersebut. b. Kompilator pengkompilasi, sebuah program khusus yang menghasilkan kompilator tersebut. 2. Mutu program objek : ukuran dan kecepatan eksekusi dari program objek. Tergantung pada : Fungsi translasi yang digunakan (cara untuk melakukan perubahan dari source code ke object code). Integrated Environment, yaitu fasilitas-fasilitas terintegrasi yang dimiliki oleh kompilator tersebut. Misalnya untuk melakukan editing, debugging, maupun testing. Pembuatan Kompilator dapat dilakukan dengan : Bahasa mesin, kesulitan sangat tinggi. Bahasa assembly, biasa digunakan sebagai tahap awal. Keuntungan : object code berukuran kecil. Kerugian : memerlukan usaha yang besar. Bahasa tingkat tinggi lain pada mesin yang sama. Keuntungan : pemrograman mudah. Kerugian : program hasil. Bahasa tingkat tinggi yang sama pada mesin yang berbeda. Bootstrap (diperkenalkan oleh Wirth). Ide : kita bisa membangun sesuatu yang besar dengan dimulai dari bagian intinya.

Alur Kerja Kompilator

INTERPRETER Dalam ilmu komputer, penerjemah atau lebih dikenal dengan interpreter merupakan perangkat lunak yang berfungsi melakukan eksekusi sejumlah instruksi yang ditulis dalam suatu bahasa pemrograman, sebuah penerjemah dapat berarti: 1. Mengeksekusi kode sumber secara langsung, atau 2. Menerjemahkannya ke dalam serangkaian p-code kemudian mengeksekusinya 3. Mengeksekusi kode yang telah dikompilasi sebelumnya oleh kompiler yang merupakan bagian dari sistem penerjemahan. P-code atau sering pula disebut sebagai portable-code, atau precompiled-code, atau bytecode merupakan istilah yang digunakan untuk merepresentasikan sejumlah instruksi yang ditujukan untuk meningkatkan efisiensi serta unjuk kerja saat dieksekusi oleh perangkat lunak penerjemah (bahasa Inggris: interpreter) atau untuk mempermudah penerjemahan lebih lanjut menjadi kode mesin. Disebabkan instruksi-instruksi tersebut diproses oleh perangkat lunak, dan bukan oleh prosesor secara langsung, kompleksitas p-code bisa jadi lebih tinggi dari kode mesin, namun umumnya tidak lebih kompleks dari instruksi mesin secara umum. Di sisi lain, bytecode yang seringkali banyak digunakan dalam istilah pemrograman bahasa Java merupakan p-code dengan instruksi-instruksi yang diwakili oleh satu kode bita. Berbeda halnya dengan kode sumber yang umumnya digunakan oleh manusia dalam pemrograman komputer, p-code umumnya lebih bersifat kompak, dan direpresentasikan dalam bentuk serangkaian kode biner yang tampak seolah-olah seperti halnya kode mesin 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. Perl, Python, Ruby, dan MATLAB adalah beberapa contoh perangkat lunak penerjemah bertipe 2, sementara Java termasuk dalam kategori tipe 3, namun dalam beberapa kasus Java dapat digolongkan pula ke dalam kategori tipe 2. Contoh program yang menggunakan intpreter adalah Cobol, PHP, ASP, dan lain-lain.

Interpreter tidak menghasilkan object code. Hanya menghasilkan translasi internal. Input dapat berasal dari source code maupun dari inputan program dari user. Source code dan inputan data user diproses pada saat yang bersamaan. Pada interpreter, program tidak harus dianalisis seluruhnya dulu, tapi bersamaan dengan jalannya program. Keuntungan mudah bagi user, debuging cepat, penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program. Kekurangan eksekusi program lambat, tidak langsung menjadi program executable, interpreter juga harus berada dalam memori. Jadi memori selalu digunakan baik untuk program maupun interpreter. Disamping itu, program sumber (source code) yaitu program aslinya tidak dapat dirahasiakan. Alur Kerja Interpreter

PERBEDAAN COMPILER DAN INTERPRETER 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. 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. Jika hendak menjalankan program hasil kompilasi dapat dilakukan tanpa butuh kode sumber. Kalau interpreter butuh kode sumber. Jika dengan kompiler, 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. 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. Interpreter cocok untuk membuat / menguji coba modul ( sub-routine / programprogram 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.

Pada kompiler 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. Meskipun penerjemahan dan kompilasi merupakan dua jenis mekanisme implementasi pada sebuah bahasa pemrograman, keduanya tidak berarti memiliki perbedaan secara signifikan. Hal ini disebabkan cara kerja sebuah penerjemah dalam banyak hal adalah sama seperti halnya yang dilakukan oleh kompiler. Penggunaan istilah "bahasa pemrograman terjemahan" dan "bahasa pemrograman kompilatif" umumnya digunakan sebatas untuk membedakan implementasi dari bahasa tersebut menggunakan model penerjemahan atau kompilatif.

DAFTAR PUSTAKA http://id.wikipedia.org/wiki/kompilator http://id.wikipedia.org/wiki/penerjemah_(komputasi) http://kardian2011.blogspot.com/2011/03/pengertian-kompiler-dan-interpreter.html http://rob13y.wordpress.com/2010/03/26/perbedaan-compiler-dengan-interpreter/ http://ijobaraya.com/proses-kompilasi-dan-linking-program-c/ https://docs.google.com/viewer?a=v&q=cache:0_smyditli4j:dini3asa.staff.gunadarma.ac.id /Downloads/files/24729/1- PENDAHULUANKompilasi.doc+keuntungan+compiler&hl=en&gl=id&pid=bl&srcid=ADG EESiWvXuq2MR7p_s5R- WloSxGI59Keh3_21NYwnvcsRaDf1F6o_0hWutXSttO8ZNCIiVyMLJJhg2NFhqWO_B88L HMgkgL604GtiWc1-- 7g97U36oUMye166oF4hSs8zqWVf3AHcnQ&sig=AHIEtbQN1RCgrZGrk7UPg4NfoFrYs2 k3hw