Sabtu, 11 Juli 2020

Bahan Makalah dan Presentations Mata Kuliah Teknik Kompilasi

A.    1. PENGERTIAN TEKNIK KOMPILASI

    Teknik adalah pengetahuan dan kepandaian membuat sesuatu yang berkenaan dengan hasil industri (bangunan, mesin)

    Kompilasi adalah suatu proses penggabungan serta menterjemahkan sesuatu (source program) menjadi bentuk lain. kompilasi Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran.


2. PENGERTIAN TRANSLATOR

Translator adalah suatu program atau metode dimana program tersebut mengambil input sebuah program lain yang ditulis pada suatu bahasa program (source language) ke bahasa lain (object on target language).

Jika source language adalah high level language, seperti cobol, pascal, fortran maka object language adalah low-level language atau mesin language. Translator seperti ini disebut COMPILER

 

Ada Beberapa Translator

1.      Assembler

Source code adalah bahasa assembly, Object code adalah bahasa mesin

2.      Compiler

Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasa assembly. Source code dan data diproses berbeda

3.      Interpreter

    Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya hanya dalam bentuk internal, dimana program induk harus selalu ada-berbeda dengan compiler

 

 

3. 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.

 

4. PENGERTIAN COMPILER

Compiler adalah program sistem yang digunakan sebagai alat bantu dalam pemrogaman.Perangkat lunak yang melakukan proses penterjemahan code (yang dibuat programmer) ke dalam bahasa mesin.


Cara kerja compiler dan interpreter


Perbedaan antara Compiler dengan Interpreter :

1. Untuk menjalankan menjalankan program hasil kompilasi (hasil compiler) dapat dilakukan tanpa membutuhkan source code. Kalau interpreter membutuhkan source code.

2. 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.

3. 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.

4. Interpreter cocok untuk membuat / menguji coba modul ( sub-routine / program-program 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.

5. 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.

 

Proses kompilasi dikelompokkan ke dalam dua kelompok besar :

1. ANALISA

 program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate representation)

Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu

a.   penganalisa leksikal
membaca program sumber krakter demi karaker mengacu pada pila keentuan dalam bahasa sumber tuap token yg dihasilkan disimpan ke dalam tabel simbol karekter yang tidak mengikuti pola akan di laprkan sebagai tidak diknal

b.   penganalisa sintaks
menganalisa kesesuain pola deretan token dengan aturan yang ditentukan dalam bahasa sumber (perbaris)

c.   penganalisa semantic
memeriksa token dan ekspresi dari batasan yang di tetapkan. Batasan-batasan tersebut misalnya :

a. panjang maksimum token identifier adalah 8 karakter,

b. panjang maksimum ekspresi tunggal adalah 80 karakter,

c. nilai bilangan bulat adalah -32768 s/d 32767,

d. operasi aritmatika harus melibatkan operan-operan yang bertipe sama

 

2. SINTESA

membangun program sasaran yang diinginkan dari bentuk antara

 

Untuk tahap sintetis terdiri dari 3 bagian utama, yaitu

1.   pembangkit kode antara
=> membangkitkan kode antara berdasarkan pohon parsing , selanjutnya diterjemahkan oleh waktu penerjemah berdsarkan sintaks

2.   pengoptimal kode
Melakukan optimisi (penghemaan space dan waktu komputasi)

3.   pembangkit kode
membangkitkan kode dalam bahasa tingkat tinggi
 

Pembuatan compiler
Bahasa mesin
-Sangat sukar dan sangat sedikit kemungkinannya untuk membuat compiler dengan bahasa ini, karena manusia susah mempelajari bahasa mesin,
-Sangat tergantung pada mesin,
-Bahasa Mesin kemungkinan digunakan pada saat pembuatan Assembler

Assembly
-Hasil dari program mempunyai Ukuran yang relatif kecil
-Sulit dimengerti karena statement/perintahnya singkat-singkat, butuh usaha yang besar untuk membuat
-Fasilitas yang dimiliki terbatas

Bahasa Tingkat Tinggi (high level language)
-Lebih mudah dipelajari
-Fasilitas yang dimiliki lebih baik (banyak)
-Memiliki ukuran yang relatif besar, misal membuat compiler pascal dengan menggunakan bahasa C
-Untuk mesin yang berbeda perlu dikembangkan tahapan-tahapan tambahan.
-Misal membuat compiler C pada Dos bedasarkan compiler C pada unix

DEFINISI bahasa sumber

Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah unit terkecil komponen bahasa yang tidak bisa dipisah-pisahkan lagi.

Kalimat-kalimat : ‘Seekor kucing memakan seekor tikus. dan ‘Budi menendang sebuah bola. adalah dua contoh kalimat lengkap Bahasa Indonesia.

Dalam bahasa pemrograman kalimat lebih dikenal sebagai ekspresi sedangkan kata sebagai token  

Bahasa Tingkat Tinggi (Pemrograman )
-Bahasa yang lebih dikenal oleh manusia, maksudnya adalah statement yang digunakan menggunakan bahasa yang dipakai oleh manusia (inggris),
-Bahasa pemrograman didefinisikan dengan menentukan bentuk programnya (sintak) dan arti programnya (semantik)
-Memberikan fasilitas yang lebih banyak, seperti struktur kontrol program yang terstruktur, blok-blok  serta prosedur dan fungsi-fungsi
-Progam mudah untuk di koreksi (debug)
-Tidak tergantung pada salah satu mesin
-Kontrol struktur seperti :  kondisi (if .. Then.. Else ),
perulangan (For, while ), Struktur blok (begin.. End { .. } )

Tingkatan Bahasa Pemrograman
-4GL Language
-High level Language
-Assembly Language
-Machine Language

 

Sumber perancangan Bahasa

n  Konstruksi yang diturunkan dari bahasa alami, karena bahasa alami dapat digunakan sebagai panduan untuk perancangan sintaks

n  Matematika, misal untuk perancangan operasi aritmatika

n  Bahasa pemrograman yang sudah ada.

Tujuan perancangan bhs program

n  Komunikasi dengan manusia

n  Pencegahan dan deteksi kesalahan

n  Usability

n  Efektifitas pemrograman

n  Compilability (mengurangi kompleksitas,mis:penggunaan bracket)

n  Efisiensi dengan meminimalisir ketidakcocokan antara hardware dengan Bahasa

n  Machine independent

n  Simplicity :penyederhanaan komponen bahasa program

n  Orthogonality : kumpulan primitive yang dikombinasikan dengan berbagai cara dalam membangun kontrol dan struktur data dalam bahasa program

 

 

SKENARIO PERANCANGAN BAHASA PEMROGRAMAN
-Tentukan apa yang diinginkan.
-Tentukan feature yang mungkin
-Tentukan desain dan sesuaikan dengan featurenya
-Tentukan rincian, parsing, dan error checking.
-Tuliskan user manual dan help.
-Evaluasilah, jika salah mulai lagi dari langkah 3.
-Jika sudah benar, optimisasilah dan uji segala kemungkinan.
-Cobakan kepada pengguna, tunggu reaksinya.
-Perbaiki bug dan mulai versi baru.

Konsep dan Notasi Bahasa

n  Tata bahasa (grammar)  adalah sekumpulan dari himpunan variabel-variabel, simbol-simbol terminal, simbol non-terminal, simbol awal yang dibatasi oleh aturan-aturan produksi

n  Aturan produksi adalah pusat dari tata bahasa yang menspesifikasikan bagaimana suatu tata bahasa melakukan transformasi suatu string ke bentuk lainnya

n  Syntax : suatu aturan yang memberitahu apakah sesuatu kalimat (string) adalah valid dalam program atau tidak

n  Semantic : suatu aturan-aturan yang memberikan arti kepada program 

Sejarah Hirarki Chomsky   

    Pada tahun 1959,seorang ahli bernama Noam Chomsky melakukan penggolongan tingkatan bahasa menjadi empat,yang disebut dengan hirarki chomsky. Penggolongan tersebut bisa diketahui melalui tabel berikut.


Dalam hirarki Chomsky ada 4(empat) kelas pengelompokan suatu bahasa, yaitu: 

  • Reguler (Level/Tipe 3)

          Mesin Automata : Finate State Automata. DFA dan NFA

          Aturan: - Simbol sebelah kiri harus berupa simbol variabel.

                      - Simbol sebelah kanan maksimal hanya memiliki simbol variabel dan bila ada terletak di                                   paling kanan

 

  • Bebas konteks (Level/Tipe 2)

          Mesin Automata : Push Down Automata

          Aturan :- Simbol sebelah kiri harus simbol variabel

  • Context Sensitive (Level/Tipe1)

          Mesin Automata: Linier Bounded Automata

          Aturan: - Simbol pada ruas sebelah kiri harus minimal ada sebuah variabel

                      - |a| ≤ |b| artinya ruas sebelah kiri tidak lebih besar dari ruas sebelah kanan.

  • Unrectricted (Level/Tipe 0)

          Mesin Automata : Mesin Turing

          Aturan: - Simbol ruas sebelah kiri harus minimal ada sebuah simbol variabel

                      - Tidak ada batasan pada aturan produksi.


DAFTAR PUSTAKA

[1] Efendi.Ilham/Pengertian Kompilasi

[2] Ajis / Desember2016/Perbedaan Tranlator

[3] 22Desember2018/Pengertian Translator Compiler

[4] Dokumen /Konsep dan Notasi Bahasa

[5] Artikel Information/25April2018/Hirarki Chomsky

Previous Post
Next Post

0 komentar: