Kompiler adalah jenis program komputer yang mengubah kode dari satu bahasa pemrograman (bahasa sumber) ke bahasa pemrograman lain (bahasa target).
Kompiler digunakan untuk mengubah kode sumber tingkat tinggi menjadi kode target tingkat rendah (seperti bahasa rakitan, kode objek, atau kode mesin) sambil mempertahankan fungsionalitas program.
Alat penting untuk pemrograman komputer modern dan praktis, kompiler memungkinkan programer untuk bekerja dalam kode tingkat tinggi yang dapat dibaca manusia dan kemudian mengubah kode sumber mereka menjadi kode target yang dapat dieksekusi. Kompiler juga membantu pengembang perangkat lunak membuat program yang dapat dieksekusi secara efisien dengan keamanan, stabilitas, dan portabilitas yang lebih baik. Hal ini karena kompiler membantu mengidentifikasi dan mengatasi kesalahan, sehingga menciptakan aplikasi portabel yang dapat dieksekusi.Â
Meskipun semua kompiler mengubah kode tingkat tinggi menjadi kode tingkat rendah yang dapat dieksekusi, berbagai jenis kompiler digunakan untuk berbagai bahasa pemrograman dan aplikasi. Misalnya, kompiler silang digunakan untuk menghasilkan kode untuk jenis CPU atau sistem operasi yang berbeda dari yang menjalankannya.
Ketika kompiler ideal tidak tersedia, atau belum dibangun, kompiler bootstrap sementara digunakan untuk mengkompilasi kompiler yang lebih permanen yang lebih baik dioptimalkan untuk mengkompilasi bahasa pemrograman tertentu.
Daftar singkat perangkat lunak terkait lainnya meliputi:
Buletin industri
Ikuti perkembangan tren industri yang paling penting—dan menarik—di bidang AI, otomatisasi, data, dan lainnya dengan buletin Think. Lihat Pernyataan Privasi IBM.
Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM kami untuk informasi lebih lanjut.
Dalam praktiknya, menggunakan kompiler bisa sesederhana memasukkan perintah ke dalam baris perintah di sistem Linux (atau setara) apa pun, menentukan file eksekusi kompiler dan file sumber yang akan dikompilasi. Perintah ini menginstruksikan sistem untuk memproses kode sumber, mengkompilasinya menjadi kode mesin target dan menghasilkan file objek yang diperlukan untuk menghasilkan program yang dapat dieksekusi.Â
Kompiler sumber terbuka seperti GNU Compiler Collection (GCC) —koleksi kompiler C yang kuat yang biasa digunakan untuk mengkompilasi kode C menjadi program C—atau alternatif Clang tersedia di repositori seperti GitHub. Kompiler lain dapat diinstal atau dibeli secara bebas dari beragam distributor. Mereka juga dapat dibangun ke dalam lingkungan pengembangan terpadu (IDE) populer, yang menggabungkan berbagai utilitas untuk pengembangan perangkat lunak, termasuk editor teks, dokumentasi API, dan alat debugging.    Â
Terlepas dari kompiler tertentu yang digunakan, proses kompilasi kode melibatkan kode sumber melalui berbagai tingkat analisis, pengoptimalan, dan pada akhirnya pembuatan kode. Kode sumber melewati berbagai lapisan analisis secara berurutan dan dievaluasi melalui setiap langkah dalam proses.
Jika kompiler mengenali masalah dengan kode sumber, itu mungkin mengembalikan pesan kesalahan, meminta pengembang untuk mengatasi kesalahan yang diidentifikasi sebelum melanjutkan dengan mengkompilasi sisa kode. Umumnya, penyusun melanjutkan melalui langkah-langkah berikut:
Beberapa kompiler mungkin tidak mematuhi secara ketat struktur sebelumnya. Namun, meskipun beberapa kompiler mungkin berisi lebih banyak atau lebih sedikit langkah, semua fase kompilasi dapat dianggap sebagai salah satu dari tiga tahap: front end, middle end, dan back end.
Struktur tiga tahap ini memungkinkan kompiler untuk mengambil pendekatan modular. Hal ini memungkinkan penggabungan beberapa front end untuk bahasa yang berbeda dengan back end untuk CPU yang berbeda, sekaligus berbagi kemampuan pengoptimalan berbagai middle end yang dapat diterapkan.
Tiga tahap kompiler memerlukan distribusi berikut:
Meskipun kompiler tidak secara eksplisit diperlukan untuk menghasilkan kode yang dapat diterapkan, variasi dan kompleksitas yang luas dari pengodean dan lingkungan mesin membuat kompiler menjadi kebutuhan praktis untuk membuat perangkat lunak yang dapat dieksekusi. Ini adalah empat manfaat utama menggunakan kompiler perangkat lunak.
Bahasa pemrograman tingkat tinggi menggunakan sintaks dan kata kunci yang lebih mirip dengan bahasa lisan, sehingga lebih mudah digunakan oleh pengembang. Kompiler mengubah kode yang dapat dibaca manusia ini menjadi kode mesin yang lebih kompleks yang diperlukan untuk menjalankan aplikasi perangkat lunak yang dioptimalkan.
Beberapa contoh bahasa tingkat tinggi meliputi bahasa-bahasa berikut:
Kompiler membantu meningkatkan efisiensi dengan mengubah kode tingkat tinggi menjadi kode mesin yang dapat dieksekusi. Output kompiler disimpan dengan.exe ekstensi file, yang kemudian langsung dieksekusi oleh komputer. Karena kompiler, menulis program yang dapat dieksekusi menjadi tugas upaya satu kali.
Setelah selesai, kode yang dikompilasi dapat dieksekusi sebanyak yang diperlukan. Proses ini membantu program umumnya berjalan lebih cepat dan lebih efisien, karena aplikasi tertentu atau bagian aplikasi dapat dijalankan secara terpisah dari tugas perangkat lunak waktu proses.
Tidak semua sistem dapat menjalankan semua jenis kode pemrograman. Kompiler digunakan untuk mengubah jenis kode yang lebih disukai pengembang menjadi jenis kode yang dibutuhkan sistem untuk beroperasi. Dengan cara ini, kompiler meningkatkan portabilitas program dengan mengonversi perangkat lunak ke dalam berbagai macam bahasa yang kompatibel yang dapat dengan mudah disimpan, ditransfer, dan dieksekusi dalam berbagai sistem operasi dan arsitektur perangkat keras.
Selama proses kompilasi, kompiler dapat digunakan untuk mengidentifikasi dan mengatasi kesalahan dan kelemahan perangkat lunak, sehingga menghasilkan program yang lebih stabil dan lebih optimal. Kompiler juga dapat membantu meningkatkan keamanan perangkat lunak dengan mencegah kesalahan terkait memori, seperti luapan buffer, dan menghasilkan peringatan jika potensi masalah memori terdeteksi.Â
Sementara kompiler digunakan untuk mengonversi kode sumber menjadi kode mesin yang dapat dieksekusi, interpreter adalah jenis program lain yang dapat menyediakan fungsionalitas serupa, tetapi melalui mekanisme yang berbeda.
Alih-alih mengonversi kode sumber, interpreter dapat secara langsung mengeksekusi kode sumber atau menggunakan kode perantara yang dikenal sebagai bytecode, representasi kode sumber yang tidak bergantung pada platform. Bytecode berfungsi sebagai perantara antara kode sumber yang dapat dibaca manusia dan kode mesin, dirancang untuk dieksekusi oleh mesin virtual (VM) alih-alih langsung pada perangkat keras komputer.Â
Secara teoritis, bahasa pemrograman apa pun dapat dieksekusi dengan kompiler atau interpreter. Namun, bahasa pemrograman individu cenderung lebih cocok untuk kompilasi atau interpretasi.
Dalam praktiknya, perbedaan antara bahasa kompiler dan bahasa interpreter terkadang bisa kabur—seperti halnya perbedaan antara kompiler dan interpreter itu sendiri—karena kedua jenis program ini dapat memiliki fitur yang tumpang tindih. Meskipun beberapa bahasa lebih sering dikompilasi dan beberapa bahasa lebih sering diinterpretasikan, Anda dapat menulis kompiler untuk bahasa yang lebih sering diinterpretasikan dan sebaliknya.
Bahasa tingkat tinggi biasanya dibuat dengan jenis konversi (baik kompilasi atau interpretasi) dalam pikiran, tetapi ini lebih merupakan saran daripada batasan yang keras. Sebagai contoh, BASIC sering disebut sebagai bahasa yang diinterpretasikan dan C sebagai bahasa yang dikompilasi, tetapi ada kompiler untuk BASIC seperti halnya interpreter C.Â
Perbedaan utama antara interpreter dan kompiler terletak pada pengaturan waktu dan pengoptimalan. Kedua jenis program mencoba mengubah kode sumber menjadi kode target yang pertama-tama fungsional dan kemudian dioptimalkan.
Tergantung pada lingkungan operasi, kode yang dikompilasi atau ditafsirkan mungkin lebih cocok untuk dijalankan secara efisien dengan pertimbangan yang dibuat untuk kemampuan perangkat keras, memori, dan kapasitas penyimpanan. Tergantung pada kendala program, aplikasi, dan perangkat keras tertentu, baik kompilasi, interpretasi atau kombinasi keduanya dapat menghasilkan hasil terbaik.Â
Dengan demikian, penerjemahan tidak dapat menggantikan kompilasi sepenuhnya, tetapi dapat pindah tugas kompilasi ke latar belakang melalui proses konversi bertahap. Kompiler menggunakan strategi konversi ahead-of-time (AOT) yang mengubah kode sumber menjadi kode target sepenuhnya sebelum membuat file yang dapat dieksekusi.
Interpreter, sebagai alternatif, menjalankan kode secara langsung saat aplikasi membutuhkannya atau menggunakan bytecode sebagai perantara untuk mengeluarkan kode sumber yang dapat dieksekusi oleh mesin virtual. Dengan cara ini, interpreter dapat memberikan beberapa kecepatan atau fleksibilitas, tetapi pada titik tertentu, satu set instruksi mesin yang dieksekusi secara langsung harus disediakan di akhir tumpukan eksekusi.
Dalam beberapa kasus, ketika efisiensi ringan menjadi prioritas, interpreter khusus dapat lebih disukai daripada kompiler karena kemampuannya untuk melakukan konversi tepat waktu (JIT). JIT adalah strategi yang mengompilasi potongan kode sumber menjadi kode target ke dalam buffer memori untuk eksekusi segera. Interpretasi JIT mengkompilasi kode sesuai permintaan, menggabungkan efisiensi kompilasi satu kali dari kompiler tradisional dengan fleksibilitas untuk mengeksekusi kode berulang kali—seringkali lebih cepat daripada interpreter bytecode standar.
Namun, seiring dengan meningkatnya tren modern terhadap kompilasi JIT dan interpretasi bytecode yang bergantung pada situasi, banyak kompiler yang dirancang untuk menawarkan fitur kompilasi dan interpretasi. Tumpang tindih ini makin mengaburkan garis antara kedua kategori ini.Â
IBM Cloud Infrastructure Center adalah platform perangkat lunak yang kompatibel dengan OpenStack untuk mengelola infrastruktur cloud pribadi di IBM zSystems dan IBM LinuxONE.
Temukan server, penyimpanan, dan perangkat lunak yang dirancang untuk hybrid cloud dan strategi AI perusahaan Anda.
Temukan solusi infrastruktur cloud yang tepat untuk kebutuhan bisnis Anda dan tingkatkan sumber daya sesuai permintaan.