Beberapa sistem implementasi bahasa pemrograman merupakan kompromi/kombinasi antara teknik kompilasi (compilers) dan interpretasi murni (pure interpreters); Cara kerja implementasi bahasa-bahasa tersebut adalah dengan cara menerjemahkan program/kode bahasa tingkat tinggi ke bahasa menengah/perantara yang dirancang untuk proses interpretasi yang mudah. Metode ini lebih cepat daripada interpretasi murni (pure interpretation) karena statemen-statemen bahasa sumber di-decode hanya sekali. Implementasi semacam ini disebut sistem implementasi hybrid.
Proses yang digunakan dalam sistem implementasi hybrid ditunjukkan pada gambar di bawah ini. Alih-alih menerjemahkan kode bahasa menengah/perantara ke kode mesin, proses tersebut hanya melakukan interpret kode menengah/perantara tersebut.
Cara kerja sistem hybrid antara kompilasi dan interpretasi |
Bahasa Perl diimplementasikan dengan menggunakan sistem hybrid. Program Perl sebagian dikompilasi untuk mendeteksi kesalahan sebelum dilakukan interpretasi dan untuk menyederhanakan interpreter. Implementasi awal pada Bahasa Java semuanya sistem hybrid. Bentuk bahasa menengah/perantara-nya, yang disebut dengan byte code, memberikankan portabilitas ke mesin apa pun yang memiliki interpreter untuk byte code dan sistem run-time yang terkait. Keduanya ini disebut dengan Java Virtual Machine (JVM). Sekarang ini ada sistem yang menerjemahkan byte code dari Java ke dalam kode mesin untuk proses eksekusi yang lebih cepat.
Sistem implementasi Just-in-Time (JIT) pada awalnya menerjemahkan program ke bahasa menengah/perantara. Kemudian, selama eksekusi, ia mengkompilasi bahasa menengah ke dalam kode bahasa mesin (machine code) ketika kode-kode bahasa menengah/perantara tersebut dipanggil. Versi kode bahasa mesin disimpan untuk pemanggilan-pemanggilan berikutnya. Sistem JIT sekarang banyak digunakan untuk program Java. Selain itu, bahasa-bahasa .NET semuanya diimplementasikan dengan sistem JIT.
Terkadang suatu implementor dapat menyediakan implementasi yang dikompilasi dan diinterpretasikan untuk suatu bahasa. Dalam hal ini, interpreter digunakan untuk mengembangkan dan men-debug program. Kemudian, setelah kondisi (relatif) bebas bug tercapai, program dikompilasi untuk meningkatkan kecepatan eksekusi.
Comments
Post a Comment