Aplikasi dan situs web tentunya dibuat menggunakan serangkaian kode. Kamu tentu sudah tahu tentang hal ini, bukan? Kode tersebut bisa berubah menjadi aplikasi dan web dengan baik berkat compiler loh. Compiler menjadi tools penting yang digunakan oleh developer.
Lalu, apakah pengertian compiler dan bagaimana cara kerjanya? Simak penjelasan selengkapnya di bawah ini.
Pengertian Compiler
Compiler adalah sebuah program khusus yang dipakai untuk melakukan konversi kode ke dalam bentuk natural language processing supaya komputer dapat memahaminya. Proses konversi yang berlangsung ini dikenal dengan istilah compilation.
Dalam proses tersebut, compiler bertugas untuk mengeksekusi kode dan mengubahnya menjadi sinyal biner yang dibutuhkan dalam processor, terutama di unit logika aritmatika (ALU).
Terdapat dua jenis compiler yang umumnya dipakai oleh developer, yaitu:
- Source to source compiler atau transcompiler adalah compiler yang bertugas untuk menerjemahkan sumber kode dengan satu bahasa dan mengubahnya menjadi kode bahasa lain.
- Cross compiler digunakan untuk membuat kode baru agar bisa digunakan pada platform lain.
Di atas sudah disebutkan bahwa compiler bertugas untuk menerjemahkan kode. Namun compiler juga punya tugas lain seperti:
- Membagi program menjadi beberapa bagian terpisah dan mengaplikasikan struktur tata bahasa pada setiap bagiannya.
- Menggunakan perantara untuk membangun program target dan membuat tabel simbol.
- Kompilasi sumber kode untuk mengetahui permasalahan di dalamnya.
- Manajemen ruang penyimpanan untuk semua kode dan variabel.
- Dukungan untuk kompilasi yang terpisah.
- Membaca dan menganalisis semua program, kemudian menerjemahkannya ke padanan semantik.
- Menerjemahkan sumber kode ke dalam objek kode dan menyesuaikannya dengan jenis mesin yang dipakai.
Langkah-Langkah dalam Language Processing System
Sebelum membahas lebih jauh tentang compiler, sebaiknya kamu pahami terlebih dahulu bagaimana cara hardware memahami kode atau bahasa pemrograman.
Bahasa pemrograman disebut high level programming language (HLL). Bahasa ini cenderung lebih mudah dipahami manusia karena bahasanya lebih familiar.
Sayangnya, HLL tidak bisa dimengerti oleh komputer atau mesin. Oleh sebab itu diperlukan langkah di bawah ini supaya mesin bisa memahami kode.
Pre-Processor
Di tahap ini, compiler menghapus semua kode berisi instruksi #include kemudian menambahkan inklusi file. Setelah itu, #define juga digantikan dengan ekspansi makro. Hasil dari proses tersebut dinamakan assembly language. Bahasa ini ada di antara HLL dan biner.
Assembly language adalah perantara yang dapat mengkombinasikan perintah mesin serta beberapa data yang akan berguna di proses berikutnya.
Assembler
Semua platform hardware memiliki assembler yang berbeda. Fungsi dari assembler adalah mengubah kode assembly language menjadi bahasa mesin.
File yang dihasilkan oleh assembler disebut sebagai file objek. File tersebut adalah hasil gabungan antara instruksi mesin dengan data yang diperlukan untuk menyimpan perintah atau instruksi ke dalam memori.
Interpreter
Interpreter berguna untuk melakukan penerjemahan dari HLL menjadi bahasa mesin. Namun interpreter berbeda dengan compiler. Interpreter memerlukan waktu lebih lama untuk menerjemahkan kode karena prosesnya dilakukan pada satu waktu.
Relocatable Machine Code
Relocatable machine code dapat dijalankan kapan pun sesuai kebutuhan. Proses ini menghasilkan alamat di dalam program yang akan bekerja sama untuk menggerakkan program.
Loader atau Linker
Linker atau loader berguna untuk menggabungkan semua file objek menjadi satu file yang bisa dieksekusi. Peran linker sangat penting untuk menyatukan file yang dikompilasi oleh assembler.
Linker bertugas untuk menemukan modul, memanggilnya ke dalam program, dan menemukan lokasi untuk menyimpan semua modul tersebut.
Fase - Fase dalam Compiler
Dalam compiler terdapat dua fase utama, yaitu fase analisis dan fase sintesis.
1. Fase Analisis
- Fase analisis atau representasi, dibuat sebagai perantara dari sumber kode berikut:
- Lexical analyzer untuk membagi program menjadi token-token.
- Syntax analyzer berguna untuk mengenali kalimat di dalam program menggunakan syntax bahasa.
- Semantic analyzer berfungsi untuk memeriksa semantik statis pada masing-masing konstruksi.
- Intermediate code generator berguna untuk menghasilkan kode-kode abstrak.
2. Fase Sintesis
Ketika memasuki fase sintesis, target program yang selevel dibuat dari analisis perantara yang terbagi kedalam dua fase.
- Code optimizer yang berfungsi untuk mengoptimalkan kode abstrak yang dihasilkan dari proses terakhir fase pertama.
- Code generator menerjemahkan intermediate code generator menjadi instruksi mesin yang lebih spesifik dan siap dieksekusi.
Manfaat Compiler
Selain kegunaan utama untuk menerjemahkan HLL menjadi bahasa mesin dalam pembuatan aplikasi atau web, ada banyak manfaat lain yang bisa dirasakan saat menggunakan compiler, diantaranya:
- Compiler melakukan verifikasi semua program sehingga tidak mungkin ditemukan kesalahan semantik atau syntax.
- File dapat dieksekusi lebih cepat karena sudah dioptimalkan oleh compiler.
- Memungkinkan pembuatan struktur internal pada memori.
- Program tidak harus dijalankan pada mesin yang dipakai untuk membangunnya.
- Seluruh program bisa diubah ke bahasa lain.
- File bisa dibuat di dalam disk dan membuatnya menjadi executable.
- Membantu dalam penanganan masalah kinerja bahasa.
- GCC (GNU Compiler Collection): Compiler open-source yang dapat digunakan untuk bahasa pemrograman seperti C, C++, Objective-C, dan Fortran.
- Clang: Compiler open-source yang dikembangkan oleh Apple dan dapat digunakan untuk bahasa pemrograman seperti C, C++, dan Objective-C.
- Java Compiler: Compiler bawaan yang disediakan oleh Java Development Kit (JDK) untuk mengkompilasi kode Java.
- Python Compiler: Python memiliki beberapa compiler yang berbeda, termasuk CPython, Jython, dan PyPy.
- Visual C++: Compiler yang disediakan oleh Microsoft untuk mengkompilasi kode sumber C++ pada platform Windows.
- Swift Compiler: Compiler yang dikembangkan oleh Apple untuk mengkompilasi kode sumber Swift.
- Rust Compiler: Compiler yang dikembangkan oleh Rust Programming Language Team untuk mengkompilasi kode sumber Rust.
Kesimpulannya, dengan memahami compiler akan sangat membantu kamu dalam pengembangan aplikasi atau web. Compiler juga menjadi tools penting yang digunakan oleh developer dalam kesehariannya. Setelah mengenal tools ini dengan baik, kamu akan mengembangkan beragam aplikasi dan web dengan lebih efisien. Jadi apakah kamu sudah siap untuk menjadi developer? yuk pelajari terus skill kamu untuk menggunakan tools compiler ini ya !
👍🏻
Posting Komentar