Jumat, 18 Maret 2011

TEKNIK KOMPILASI - Kuliah I

PENGANTAR TEKNIK KOMPILASI.

Mata kuliah ini diajarkan di Teknik Informatika untuk mengenalkan cara kerja "Compiler".

Compiler menerima masukan berupa dokumen program, memprosesnya, dan menghasilkan file bahasa mesin yang siap dieksekusi komputer.

Bergantung bahasa pemrograman yang dipakai, ada compiler Pascal, compiler Fortran, compiler C, compiler C++, compiler Java, compiler C#, dan sebagainya.
Mata kuliah ini mempelajari bagaimana membuat compiler tersebut.

Mirip cara kerja compiler, ada interpreter. Interpreter melakukan semua yang dilakukan compiler, kecuali membuat file bahasa mesin. Interpreter tidak membuatnya, namun langsung menjalankannya. Misal : interpreter PHP, interpreter BASIC, dsb.

***

PROSES KOMPILASI.

Tahapan proses mengubah dari dokumen program menjadi bahasa mesin disebut kompilasi.
Kompilasi dilakukan bertahap :
1. Analisa Leksikal
2. Analisa Sintaks
3. Analisa Semantik
4. Code Optimizer
5. Code Generator.

Tahap 1, analisa leksikal, berfungsi memeriksa kebenaran kosa kata yang dipakai dalam dokumen program : apakah kata yang dipakai dikenal dalam bahasa yang bersangkutan. Kata "program" dikenal di PASCAL, mungkin tidak dikenal di bahasa yang lain. Tugas tahap 1 ini memeriksa itu. Jika ada kata yang tidak dikenal dalam bahasa yang bersangkutan, tugas modul tahap ini adalah menolaknya. Sebaliknya, jika dikenal, kata-kata yang diperoleh dari hasil analisa akan disimpan di tabel, untuk menjadi masukan di tahap berikutnya.

Tahap 2, analisa sintaks, berfungsi memeriksa tata tulis perintah program, apakah sesuai antara dokumen masukan dengan grammar bahasa yang bersangkutan. "Program P;" adalah cara menulis perintah yang benar di Pascal. "Program; P" adalah perintah yang salah di Pascal. Tugas modul ini memeriksa itu. Jika benar, perintah akan menjadi masukan tahap berikutnya. Jika salah, akan ada pesan "SYNTAX ERROR."
Jika Anda memprogram, lalu ada pesan SYNTAX ERROR, modul inilah yang memberi pesan ke Anda.

Tahap 3, analisa semantik, berfungsi memeriksaa apakah perintah yang ada di dokumen program dapat dikerjakan. "Var a : integer; a:=2.5;" adalah contoh perintah yang tidak dapat dikerjakan di Pascal, variabel a didefinisikan sebagai bilangan bulat, mengapa diberi masukan bilangan pecahan? Modul ini akan memberi tahu programmer pesan "type mismatch", tidak cocok antara data yang diberikan dan tipe datanya. Perintah-perintah yang tidak dapat dikerjakan, akan dievaluasi oleh modul ini.
Perintah yang dapat dikerjakan, akan diubah dulu ke dalam BENTUK ANTARA, sebelum diterjemahkan ke BAHASA MESIN, untuk menjadi masukan modul berikutnya.

Tahap 4, code optimizer, berfungsi untuk melakukan optimasi terhadap kodee-kode dalam BENTUK ANTARA. Misal A:= 2+3*5; dalam bentuk antara dapat dioptimasi menjadi A:=17. Kode yang sudah optimal akan menjadi masukan modul berikutnya.

Tahap 5, code generator, berfungsi untuk membuat kode mesin dari BENTUK ANTARA yang sudah optimum.

***

BAGAIMANA membuat Modul "ANALISA LEKSIKAL?"
Tunggu ceritanya di kuliah online berikutnya.

TUGAS 1 untuk Anda lakukan :
- Tulis ulang di kertas, apa yang saya tulis di sini.
- Kumpulkan di loker saya.
- Yang sudah mengumpulkan, dianggap hadir di kuliah I.

Jumat, 07 Januari 2011

SBY yang kukenal (part 2)

Saya harus meralat tulisan SBY yang kukenal sebelumnya.
SBY terakhir yang kukenal ternyata :
- takut mati
- sangat terpengaruh masukan orang-orang sekitarnya
- lamban mengambil keputusan
- tidak menghukum berat orang-orang korup di sekitarnya
- tak berani menegur Kapolri atau Jaksa Agung tentang lambannya penanganan kasus-kasus hukum
- mengkritik monarki Yogya tetapi membangun monarkinya sendiri, dengan mencalonkan istrinya menjadi calon presiden 2014