Tugas Makalah Teknik Kompilasi
Mata Kuliah Teknik Kompilasi
Materi Kuliah Teknik Informatika
Bahan Kuliah Teknik Kompilasi
Bagi yang mau Copas,.. jangan lupa di cantumkan sumber nya di daftar pustaka, :)
enjoy
Pengertian dan Latar Belakang
TEKNIK KOMPILASI
Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran.
Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai ditemukannya komputer pada awal 1950-an
Arti kata Teknik Kompilasi
Teknik : Metode atau Cara
Kompilasi : Proses menggabungkan serta menterjermahkan sesuatu (source program) menjadi bentuk lain
Compile : To translate a program written in a high-level programming language into machine language.
Translator : Compiler & Interpreter
Translator :
Adalah suatu program dimana mengambil input sebuah program yang ditulis pada satu bahasa program (source language) ke bahasa lain (The 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.
Dalam melakukan proses penerjemahan tersebut, sudah barang 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,
- 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 atau Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber komputer besar maupun komputer super
Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah.
Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat.
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.
Pembahasan dan Kesimpulan
Sumber Perancangan Bahasa Pemrograman
Gagasan perancangan Bahasa Pemrograman bisa berasal dari bahasa Alami, matematika, dan Bahasa Pemrograman yang sudah ada. Dengan uraian sebagai berikut :
a. Konstruksi yang diturunkan dari bahasa alami berguna untuk kejelasan dan kemudahan pembacaan. Sebuah instruski akan mengerjakan mirip dengan arti instruksi tersebut.
b. Matematika telah banyak dipakai untuk aturan-aturan pada bahasa pemrograman, misalnya ekspresi aritmatika
c. Bahasa Pemrograman yang sudah ada bisa menjadi sumber yang bagus untuk perancangan bahasa pemrograman.
Tujuan Perancangan Bahasa Pemrograman
Perancangan sebuah Bahasa Pemrograman bertujuan untuk :
a. Komunikasi dengan Manusia
Jika sebuah program sulit dimengerti oleh manusia, akan terjadi kesulitan juga untuk memeriksa dan melakukan pemeliharaan/modifikasi. Masalah ini tidak bisa dipecahkan dengan sekedar menambahkan komentar atau melalui dokumentasi tersendiri. Mungkin suatu statemen bermakna agak samar bagi manusia, sementara untuk kompilator dari sebuah bahasa pemrograman sudah cukup jelas. Misalnya :
a/b/c bisa berarti a dibagi dengan b, baru hasilnya di bagi dengan c
b. Pencegahan dan deteksi kesalahan
Sebuah bahasa pemrograman yang baik perlu mengidentifikasi error yang mungkin terjadi. Sehingga mempermudah deteksi kesalahan dan menghilangkannya.
c. Usability
Bahasa pemrograman harus mudah dipelajari dan diingat. Sekali seorang pemrogram familiar dengan bahasa itu, dia tidak harus melihat manual terus-menerus.
d. Efektifitas pemrograman
Efektifitas disini berkaitan dengan pemrograman sebagai bagian dari rekayasa perangkat lunak. Hal yang menjadi perhatian besar pada rekayasa perangkat lunak adalah bagaimana mencatat keputusan yang dibuat selama pengembangan program.
e. Compilability
Pengembangan sebuah kompilator merupakan pekerjaan yang tidak sederhana. Sebuah bahasa yang terlalu kompleks akan menyulitkan pembuatan kompilator untuk bahasa tertentu.
f. Efesiensi
Efesiensi merupakan bahasan yang penting dalam sejarah pengembangan bahasa pemrograman. Dalam hal ini harus diingat pula bahwa mesin akan lebih murah, sementara program akan semakin mahal.
g. Machine Independent
Sebuah bahasa dikatakan Mechine Independent jika dan hanya jika sebuah program yang telah sukses dikompilasi dan dieksekusi pada suatu mesin, saat dipindahkan ke mesin lainnya akan berjalan dengan input dan output yang tepat sama.
Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian analisis dan bagian sintesis.
- 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.
Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree) Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan
Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu
a. Proses analisis leksikal
b. Proses analisis sintaktik
c. Proses analisis semantik
- Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis.
Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu
a. Proses yang menghasilkan kode (code generator)
b. Proses optimasi kode (code optimizer)
Sebelum Bahasa sasaran dapat dihasilkan, 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.
Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah.
Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapan-ungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti pendefinisian makro dan lain sebagainya.
Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.
Ada Beberapa Translator
1. Assembler
Source code adalah bahasa assembly, Object code adalah bahasa mesin. merupakan bentuk simbolik dari bahasa mesin. Setiap kode operasi memiliki kode simbolik, misalnya ADD untuk penjumlahan dan MUL untuk perkalian.
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
Pembuatan suatu kompilator dapat dilakukan dengan :
1) Bahasa Mesin
Tingkat kesulitannya sangat tinggi, karena bahasa mesin ini sangat dekat dengan mesin sehingga sangat tidak manusiawi dan tingkat ketergantungannya pada mesin yang tinggi.
2) Bahasa assembly
Bahasa assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan sebuah kompilator. Keuntungan menggunakan bahasa assembly adalah program hasil yang (object code) yang dimiliki ukurannya kecil.
3) Bahasa tingkat tinggi lain pada bahasa mesin yang sama
Keuntungannya adalah proses pembuatan kompilator akan lebih mudah, karena menggunakan bahasa tingkat tinggi yang lebih mudah dimengerti dan fasilitasnya lebih baik dibandingkan assembly. Kerugiannya kompilator yang dihasilkan akan memiliki ukuran yang besar.
Fase-fase proses sebuah kompilasi