Perbedaan Antara Kompiler dan Juru Bahasa

Sebelum Jawa dan bahasa pemrograman C # muncul, program komputer hanya dikompilasi atau ditafsirkan. Bahasa seperti Bahasa Perakitan, C, C ++, Fortran, Pascal hampir selalu dikompilasi ke dalam kode mesin. Bahasa-bahasa seperti Basic, VbScript dan JavaScript biasanya ditafsirkan.

Jadi apa perbedaan antara program yang dikompilasi dan yang ditafsirkan?

Kompilasi

Untuk menulis suatu program dibutuhkan langkah-langkah ini:

  1. Edit Program
  2. Kompilasi program ke dalam file kode mesin.
  3. Tautkan file kode Mesin ke program yang dapat dijalankan (juga dikenal sebagai exe).
  4. Debug atau Jalankan Program

Dengan beberapa bahasa seperti Turbo Pascal dan Delphi langkah 2 dan 3 digabungkan.

File kode mesin adalah modul mandiri dari kode mesin yang memerlukan tautan bersama untuk membangun program akhir. Alasan memiliki file kode mesin yang terpisah adalah efisiensi; kompiler hanya perlu mengkompilasi ulang Kode sumber itu telah berubah. File kode mesin dari modul yang tidak berubah digunakan kembali. Ini dikenal sebagai pembuatan aplikasi. Jika Anda ingin mengkompilasi ulang dan membangun kembali semua kode sumber maka itu dikenal sebagai Build.

instagram viewer

Menghubungkan adalah proses yang rumit secara teknis di mana semua panggilan fungsi antara berbagai modul dihubungkan, lokasi memori dialokasikan variabel dan semua kode diletakkan dalam memori, kemudian ditulis ke disk sebagai program yang lengkap. Ini sering merupakan langkah yang lebih lambat daripada mengkompilasi karena semua file kode mesin harus dibaca ke dalam memori dan dihubungkan bersama.

Menafsirkan

Langkah-langkah untuk menjalankan program melalui penerjemah adalah

  1. Edit Program
  2. Debug atau Jalankan Program

Ini adalah proses yang jauh lebih cepat dan membantu pemrogram pemula mengedit dan menguji kode mereka lebih cepat daripada menggunakan kompiler. Kerugiannya adalah bahwa program yang ditafsirkan berjalan jauh lebih lambat daripada program yang dikompilasi. Sebanyak 5-10 kali lebih lambat karena setiap baris kode harus dibaca ulang, lalu diproses ulang.

Masukkan Java dan C #

Kedua bahasa ini semi-dikompilasi. Mereka menghasilkan kode perantara yang dioptimalkan untuk interpretasi. Bahasa perantara ini tidak tergantung pada perangkat keras yang mendasarinya dan ini membuatnya lebih mudah untuk port program yang ditulis baik ke prosesor lain, selama penerjemah telah ditulis untuk itu perangkat keras.

Java, ketika dikompilasi, menghasilkan bytecode yang ditafsirkan pada saat runtime oleh Java Virtual Machine (JVM). Banyak JVM menggunakan kompiler Just-In-Time yang mengubah bytecode ke kode mesin asli dan kemudian menjalankan kode itu untuk meningkatkan kecepatan interpretasi. Akibatnya, kode sumber Java dikompilasi dalam proses dua tahap.

C # dikompilasi ke dalam Common Intermediate Language (CIL, yang sebelumnya dikenal sebagai Microsoft Intermediate Language MSIL). Ini dijalankan oleh Common Language Runtime (CLR), bagian dari kerangka kerja NET. Lingkungan yang menyediakan layanan dukungan seperti pengumpulan sampah dan kompilasi Just-In-Time.

Baik Java dan C # menggunakan teknik speedup sehingga kecepatan efektif hampir secepat bahasa terkompilasi murni. Jika aplikasi menghabiskan banyak waktu melakukan input dan output seperti membaca file disk atau menjalankan basis data pertanyaan maka perbedaan kecepatan hampir tidak terlihat.

Apa artinya ini untukku?

Kecuali jika Anda memiliki kebutuhan yang sangat spesifik untuk kecepatan dan harus meningkatkan kecepatan bingkai beberapa frame per detik, Anda bisa melupakan kecepatan. C, C ++ atau C # akan memberikan kecepatan yang cukup untuk gim, kompiler, dan sistem operasi.