Apa Itu Compiler?
Compiler adalah sebuah program yang digunakan untuk mengonversi kode yang ditulis dalam natural language processing agar dapat dipahami oleh komputer.
Technopedia menyebut bahwa proses konversi ini sebagai compilating. Pada proses ini, compiler mengeksekusi kode yang menunjukkan kapan sinyal tinggi dan rendah biner diperlukan dalam unit logika aritmatika prosesor.
Terdapat dua jenis compiler yang umum digunakan oleh web developer.
- Cross compiler yang berjalan pada mesin ‘A’ dan menghasilkan kode untuk mesin lain ‘B’. Compiler ini mampu membuat kode untuk platform berbeda selain platform yang dijalankan.
- Source-to-source compiler atau disebut juga transcompiler, yaitu compiler yang menerjemahkan kode sumber yang ditulis dalam satu bahasa pemograman menjadi kode sumber bahasa pemrograman lain.
Meskipun tugas utama compiler adalah mengonversi kode, ada beberapa tugas lain yang juga dijalankan. Berikut di antaranya.
- Memecah program sumber menjadi beberapa bagian dan menerapkan struktur tata bahasa padanya.
- Membangun program target yang diinginkan dari representasi perantara dan membuat tabel simbol.
- Mengompilasi kode sumber dan mendeteksi kesalahan di dalamnya.
- Mengelola ruang penyimpanan semua variabel dan kode.
- Melakukan dukungan untuk kompilasi terpisah.
- Membaca dan menganalisis seluruh program untuk kemudian diterjemahkan ke dalam padanan semantik.
- Menerjemahkan kode sumber ke dalam kode objek sesuai dengan jenis mesin yang digunakan.
Langkah-Langkah Language Processing System
Sebelum memahami compiler lebih jauh, kamu perlu memahami bagaimana proses hardware memahami sebuah bahasa.
Hardware dapat memahami sebuah bahasa pemograman yang disebut sebagai high-level programming language (HLL).
HLL diterapkan pada program yang berisi arahan #define atau #include seperti #include atau #define
HLL cenderung lebih dekat dengan bahasa manusia namun sulit dimengerti oleh mesin.
Sehingga, program dengan bahasa ini perlu melalui serangkaian transformasi agar dapat dengan mudah digunakan mesin.
Di sinilah peran dari language processing system.
Berikut langkah-langkahnya:
1. Pre-processor
Pada proses pre-processor, compiler akan menghapus semua kode yang berisi arahan #include dengan menambahkan file bernama file inclusion.
Selain itu, kode dengan arahan #define akan diganti dengan macro expansion.
Proses ini berhubungan dengan pemrosesan makro, augmentasi, ekstensi bahasa, dan sebagainya.
Hasil dari proses compiler ini adalah assembly language. Bahasa ini tidak dalam format biner atau HLL.
Bahasa ini merupakan perantara yang mengombinasikan instruksi mesin dan beberapa data berguna lainnya yang diperlukan untuk langkah selanjutnya.
2. Assembler
Setiap platform memiliki assembler. Sayangnya, setiap hardware dan operating system memiliki assembler yang berbeda.
Assembler menerjemahkan kode dalam assembly language menjadi sebuah bahasa yang dipahami oleh mesin.
Hasil dari assembler disebut sebagai file objek yang merupakan gabungan dari instruksi mesin serta data yang dibutuhkan untuk menyimpan instruksi tersebut dalam memori.
3. Interpreter
Interpreter mengubah HLL menjadi bahasa yang dapat dimengerti oleh mesin.
Berbeda dengan compiler, interpreter menerjemahkan program satu pernyataan pada satu waktu. Sehingga waktu yang dibutuhkan oleh interpreter jauh lebih lama jika dibandingkan dengan compiler.
4. Relocatable machine code
Relocatable machine code bisa dijalankan kapan saja. Alamat dalam program akan terbentuk sedemikian rupa untuk bekerjasama dengan pergerakan program.
5. Linker
Linker membantumu menggabungkan berbagai file objek untuk membuat file yang dapat dieksekusi.
Semua file ini mungkin telah dikompilasi dengan assembler terpisah. Tugas utama linker adalah mencari modul yang dipanggil dalam program dan menemukan lokasi memori tempat semua modul disimpan.
Fase-Fase dalam Compiler
Berikut adalah dua fase utama yang dilalui dalam proses compiler.
1. Fase analisis
Pada fase representasi, perantara dibuat dari kode sumber berikut.
- Lexical analyzer yang membagi program dalam bentuk “token”.
- Syntax analyzer, berfungsi mengenali “kalimat” dalam program menggunakan sintaks bahasa
- Semantic analyzer, bertugas memeriksa semantik statis dari setiap konstruksi.
- Intermediate code generator, yaitu generator menghasilkan kode “abstrak”.
2. Fase sintesis
Ketika memasuki fase sintesis, program target yang setara dibuat dari representasi perantara. Terdapat dua bagian dalam fase ini.
- Code optimizer, bertugas mengoptimasi kode abstrak yang dihasilkan intermediate code generator.
- Code generator, yang menerjemahkan kode dari intermediate code generator menjadi instruksi mesin yang spesifik.
Manfaat Menggunakan Compiler
Compiler adalah sebuah perangkat yang bermanfaat untuk menerjemahkan kode sehingga program dapat berjalan dengan baik.
Selain itu, kamu bisa mendapatkan keuntungan-keuntungan berikut ketika menggunakan compiler.
- Compiler memverifikasi seluruh program, jadi tidak ada kesalahan sintaks atau semantik.
- File yang dapat dieksekusi dioptimalkan oleh compiler, sehingga dieksekusi lebih cepat.
- Memungkinkanmu membuat struktur internal dalam memori.
- Kamu tidak perlu menjalankan program pada mesin yang sama dengan yang dibangunnya.
- Kamu bisa menerhemahkan seluruh program dalam bahasa lain.
- Dapat membuat file ke dalam disk.
- Menautkan file ke dalam format yang dapat dieksekusi.
- Memeriksa kesalahan sintaks dan tipe data.
- Membantumu meningkatkan pemahamanmu tentang bahasa semantik.
- Membantu menangani masalah kinerja bahasa.
- Teknik yang digunakan untuk membuat compiler dapat digunakan untuk program lain.