Bahasa Pemrograman yang Ditafsirkan vs Dikompilasi: Apa Perbedaannya?

Setiap program adalah sekumpulan instruksi, baik itu menambahkan dua nomor atau mengirim permintaan melalui internet. Penyusun dan juru bahasa mengambil kode yang dapat dibaca manusia dan mengubahnya menjadi kode mesin yang dapat dibaca komputer.

Dalam bahasa yang dikompilasi, mesin target menerjemahkan program secara langsung. Dalam bahasa yang ditafsirkan, kode sumber tidak langsung diterjemahkan oleh mesin target. Sebaliknya, program yang berbeda , alias juru bahasa, membaca dan menjalankan kode tersebut.

Oke… tapi apa sebenarnya artinya itu?

Bayangkan Anda memiliki resep hummus yang ingin Anda buat, tetapi resep itu ditulis dalam bahasa Yunani kuno. Ada dua cara Anda, seorang penutur non-Yunani kuno, dapat mengikuti arahannya.

Yang pertama adalah jika seseorang telah menerjemahkannya ke dalam bahasa Inggris untuk Anda. Anda (dan siapa saja yang bisa berbahasa Inggris) bisa membaca resep versi bahasa Inggris dan membuat hummus. Pikirkan resep yang diterjemahkan ini sebagai versi yang dikompilasi .

Cara kedua adalah jika Anda memiliki teman yang tahu bahasa Yunani kuno. Saat Anda siap membuat hummus, teman Anda duduk di sebelah Anda dan menerjemahkan resep ke dalam bahasa Inggris sambil jalan, baris demi baris. Dalam hal ini, teman Anda adalah interpreter untuk ditafsirkan versi resep.

Bahasa yang Dikompilasi

Bahasa yang dikompilasi diubah langsung menjadi kode mesin yang dapat dijalankan oleh prosesor. Akibatnya, mereka cenderung lebih cepat dan lebih efisien untuk dieksekusi daripada bahasa yang ditafsirkan. Mereka juga memberi pengembang lebih banyak kendali atas aspek perangkat keras, seperti manajemen memori dan penggunaan CPU.

Bahasa yang dikompilasi membutuhkan langkah "membangun" - mereka harus dikompilasi secara manual terlebih dahulu. Anda perlu "membangun kembali" program setiap kali Anda perlu membuat perubahan. Dalam contoh hummus kami, seluruh terjemahan ditulis sebelum sampai kepada Anda. Jika penulis asli memutuskan bahwa dia ingin menggunakan jenis minyak zaitun yang berbeda, seluruh resep perlu diterjemahkan lagi dan ditujukan untuk Anda.

Contoh bahasa terkompilasi murni adalah C, C ++, Erlang, Haskell, Rust, dan Go.

Bahasa yang Ditafsirkan

Penerjemah menjalankan program baris demi baris dan menjalankan setiap perintah. Di sini, jika penulis memutuskan dia ingin menggunakan jenis minyak zaitun yang berbeda, dia dapat menggosok yang lama dan menambahkan yang baru. Teman penerjemah Anda kemudian dapat menyampaikan perubahan itu kepada Anda saat itu terjadi.

Bahasa yang ditafsirkan dulunya jauh lebih lambat daripada bahasa yang dikompilasi. Namun, dengan perkembangan kompilasi just-in-time, celah itu menyusut.

Contoh bahasa umum yang ditafsirkan adalah PHP, Ruby, Python, dan JavaScript.

Peringatan Kecil

Sebagian besar bahasa pemrograman dapat memiliki implementasi yang dikompilasi dan ditafsirkan - bahasa itu sendiri tidak harus dikompilasi atau ditafsirkan. Namun, demi kesederhanaan, mereka biasanya disebut demikian.

Python, misalnya, dapat dijalankan sebagai program yang dikompilasi atau sebagai bahasa yang ditafsirkan dalam mode interaktif. Di sisi lain, sebagian besar alat baris perintah, CLI, dan shell secara teoritis dapat diklasifikasikan sebagai bahasa yang ditafsirkan.

Keuntungan dan kerugian

Keuntungan dari bahasa yang dikompilasi

Program yang dikompilasi ke dalam kode mesin asli cenderung lebih cepat daripada kode yang ditafsirkan. Ini karena proses penerjemahan kode pada run time menambah overhead, dan dapat menyebabkan program menjadi lebih lambat secara keseluruhan.

Kekurangan dari bahasa yang dikompilasi

Kerugian yang paling menonjol adalah:

  • Waktu tambahan yang diperlukan untuk menyelesaikan seluruh langkah kompilasi sebelum pengujian
  • Ketergantungan platform dari kode biner yang dihasilkan

Keuntungan dari bahasa yang ditafsirkan

Bahasa yang ditafsirkan cenderung lebih fleksibel, dan sering kali menawarkan fitur seperti pengetikan dinamis dan ukuran program yang lebih kecil. Juga, karena interpreter mengeksekusi kode program sumber itu sendiri, kode itu sendiri adalah platform independen.

Kekurangan bahasa yang ditafsirkan

Kerugian yang paling menonjol adalah kecepatan eksekusi yang khas dibandingkan dengan bahasa yang dikompilasi.