Apa itu Compiler?
Compiler adalah software khusus untuk menerjemahkan bahasa pemrograman tingkat tinggi (kode sumber) menjadi kode mesin yang bisa dipahami dan dijalankan oleh komputer.
Awalnya programmer menulis kode sumber di code editor atau integrated development environment (IDE) yang menyertakan editor. Kode sumber lalu disimpan ke satu atau lebih file teks. Setelahnya, compiler yang mendukung bahasa pemrograman sumber membaca file, menganalisis kode, dan menerjemahkannya ke dalam format yang sesuai untuk target perangkat.
Compiler merupakan bagian penting dari pengembangan perangkat lunak karena memastikan kode sumber dieksekusi dengan tepat dan program yang dihasilkan mudah dipahami.
Dengan compiler, programmer bisa menjalankan bahasa yang awalnya ditulis menggunakan bahasa tingkat tinggi (bisa dipahami manusia) menjadi bentuk yang hanya dapat dibaca oleh mesin.
Compiler dapat digunakan untuk menerjemahkan kode sumber yang ditulis dalam berbagai bahasa pemrograman, termasuk C, C++, dan Java.
Fungsi Compiler
Compiler memainkan peran penting dalam proses pengembangan software karena membantu mengetahui jika ada kesalahan sintaksis dan semantik dalam kode sebelum akhirnya programmer menjalankan kode tersebut.
Adanya compiler bisa menghemat waktu, mencegah terjadinya crash, sampai akhirnya menghasilkan program yang lebih cepat dan ringkas.
Geeks for Geeks juga menjelaskan beberapa manfaat dari compiler:
- Meningkatkan performa: kode yang dikompilasi cenderung berjalan lebih cepat dibandingkan kode yang ditafsirkan manual karena sudah diterjemahkan ke dalam kode mesin dan bisa langsung dieksekusi oleh prosesor komputer.
- Meningkatkan efisiensi: dengan compiler, programmer bisa menulis kode dalam bahasa pemrograman tingkat tinggi yang dengan mudah diterjemahkan ke dalam kode mesin untuk berbagai platform berbeda. Proses ini lebih mudah untuk mengembangkan software yang dapat berjalan di sistem berbeda tanpa memerlukan perubahan signifikan di kode sumber.
- Meningkatkan keamanan: compiler dapat membantu meningkatkan keamanan software dengan melakukan sejumlah pemeriksaan pada kode sumber, misalnya memeriksa kesalahan sintaks. Dengan demikian, developer bisa mencegah jika ada kesalahan tertentu.
- Dimanfaatkan untuk debugging: sebagian besar compiler sudah menyediakan tool debugging yang bisa membantu programmer menemukan dan memperbaiki kesalahan dalam kode.
- Tidak bergantung dengan sistem apa pun: perusahaan tidak memerlukan installer, interpreter, atau program pihak ketiga apa pun yang harus diinstal di sistem mereka ketika harus mengeksekusi file kode.
Jenis-jenis Compiler
Dirangkum dari Code Mentor, berikut jenis-jenis compiler:
#1 Cross compiler
Cross compiler memungkinkan developer bisa mengkompilasi dan menjalankan kode yang dibuat di berbagai platform. Compiler jenis ini berguna saat mengerjakan beberapa versi kode lalu ingin memastikan kode tersebut bisa berjalan dan didukung di semua platform target.
#2 Source-to-source compiler
Source-to-source compiler adalah tool perangkat lunak yang menerjemahkan kode sumber menjadi kode yang bisa dieksekusi. Tool ini berguna untuk menerjemahkan kode sumber yang ditulis dalam berbagai bahasa pemrograman.
Proses penerjemahan dilakukan dengan cara menerjemahkan kode sumber menjadi jenis kode mesin tertentu. Kode mesin yang dihasilkan kemudian dieksekusi oleh mesin target. Proses ini bisa dilakukan secara manual maupun otomatis.
Tools ini berguna untuk menerjemahkan kode sumber yang ditulis dalam berbagai bahasa pemrograman, seperti C++, Java, dan C#.
#3 Just-in-time (JIT) compiler
Just-in-time compiler adalah compiler yang dirancang agar bisa tetap mengkompilasi program ketika program tersebut sedang dijalankan. JIT compiler jauh lebih cepat dibandingkan compiler tradisional yang harus mengkompilasi program dari awal setiap kali dijalankan.
Kelebihan utama JIT compiler adalah mengurangi ukuran memori program dengan menghilangkan kode yang berlebihan, sehingga ukurannya menjadi lebih kecil dan efisien.
Keuntungan lain dari JIT compiler yaitu bisa mengoptimalkan program di platform berbeda. Misalnya, saat developer sedang mengembangkan mobile app, ia juga bisa mengoptimalkan kode di perangkat lain (selain mobile).
#4 Bytecode compiler
Bytecode compiler adalah software yang menerjemahkan bahasa tingkat tinggi ke dalam kode mesin dan dijalankan di perangkat yang dituju. Developer bisa menulis kode dalam bahasa tingkat tinggi yang lebih ringkas dan mudah dipahami.
Jenis compiler ini paling sering digunakan untuk mengembangkan mobile app.
Namun, bytecode compiler harus ditulis dalam bahasa tingkat tinggi dan tidak cocok untuk mengembangkan kode tingkat rendah.
#5 Hardware compiler
Hardware compiler adalah jenis compiler yang mengkompilasi kode sumber menjadi kode mesin agar bisa dijalankan oleh komputer. Hardware compiler digunakan dalam berbagai macam aplikasi, termasuk game di komputer, sistem tertanam (embedded system), dan sistem operasi.
#6 Binary compiler
Binary compiler adalah tools yang menerjemahkan file kode sumber ke dalam format biner. Format biner juga dikenal sebagai kode mesin, kode rakitan, atau bahasa mesin. Ini adalah bahasa pemrograman tingkat rendah untuk menyimpan informasi program dalam bentuk ringkas yang bisa dengan mudah dibaca dan dipahami oleh komputer.
Compiler biner sering digunakan di berbagai situasi, seperti pengembangan web, database administrasi, dan network programming.
Contoh Compiler dalam Bahasa Pemrograman
What’s insight memberikan beberapa contoh compiler yang digunakan beberapa bahasa pemrograman:
- C dan C++ menggunakan compiler GCC (GNU Compiler Collection), Clang, Microsoft Visual C++.
- Java menggunakan Java Compiler.
- Python menggunakan Python Interpreter.
FAQ (Frequently Asked Question)
Bagaimana cara kerja compiler?
Dikutip dari Tech Target, cara kerja compiler umumnya dilakukan dengan mengikuti langkah-langkah berikut:
- Tahap pertama yaitu analisis leksikal. Di sini, compiler membagi kode sumber menjadi leksem, yaitu satuan leksikal dasar abstrak yang mendasari bentuk kata. Leksem kemudian diberi token yang mewakili pola tertentu dalam kode agar bisa diproses ke analisis sintaksis dan semantik.
- Selama analisis sintaksis, compiler akan memverifikasi dan memastikan sintaks kode sudah benar sesuai aturan untuk bahasa sumber. Di tahap ini, compiler biasanya membuat pohon sintaksis abstrak yang mewakili struktur logis dari elemen kode tertentu.
- Setelah itu, compiler memverifikasi keakuratan logika kode (analisis semantik). Langkah ini melampaui keakuratan analisis sintaksis. Tipe atau definisi variabel dapat diperiksa untuk memastikan kode telah diarahkan ke tipe yang benar atau telah didefinisikan dengan tepat.
- Setelah kode melewati ketiga fase analisis, compiler menghasilkan intermediate representation (IR) dari kode sumber. Dibandingkan kode baru, kode IR memudahkan untuk mengonversi kode ke format lain. Namun, itu harus secara akurat tanpa menghilangkan fungsionalitas apa pun.
- Selanjutnya, compiler mengoptimalkan kode IR dan mempersiapkannya dalam pembuatan kode akhir. Jenis dan tingkat pengoptimalan bergantung pada compiler yang dipakai. Beberapa compiler membiarkan pengguna mengonfigurasi tingkat optimalisasi.
- Terakhir, compiler menghasilkan kode output menggunakan kode IR yang sudah dioptimalkan.