Penjelasan Lengkap Tentang Implementasi Bahasa Pemrograman

Penjelasan Lengkap Tentang Implementasi Bahasa Pemrograman, Sebuah implementasi bahasa pemrograman adalah suatu sistem untuk mengeksekusi program komputer . Ada dua pendekatan umum untuk implementasi bahasa pemrograman: interpretasi dan kompilasi.

Interpretasi adalah metode mengeksekusi program. Program dibaca sebagai input oleh juru bahasa , yang melakukan tindakan yang ditulis dalam program.

Kompilasi adalah proses yang berbeda, di mana kompiler membaca dalam suatu program, tetapi alih-alih menjalankan program, kompiler menerjemahkannya ke dalam beberapa bahasa lain, seperti bytecode atau kode mesin . Kode yang diterjemahkan dapat langsung dieksekusi oleh perangkat keras, atau berfungsi sebagai input ke penerjemah lain atau kompiler lain.

Sebuah interpreter terdiri dari dua bagian: parser dan evaluator . Setelah program dibaca sebagai input oleh interpreter, program tersebut diproses oleh parser. Parser memecah program menjadi komponen bahasa untuk membentuk pohon parse . Evaluator kemudian menggunakan pohon parse untuk mengeksekusi program.

Baca Juga : 5 Bahasa Pemrograman Populer di Indonesia

Mesin virtual

Sebuah mesin virtual adalah tipe khusus dari interpreter yang menafsirkan bytecode. Bytecode adalah kode tingkat rendah portabel yang mirip dengan kode mesin, meskipun umumnya dieksekusi pada mesin virtual alih-alih mesin fisik. Untuk meningkatkan efisiensinya, banyak bahasa pemrograman seperti Java , Python , dan C# dikompilasi ke bytecode sebelum diinterpretasikan.

Kompiler tepat waktu

Beberapa mesin virtual menyertakan kompiler just-in-time (JIT) untuk meningkatkan efisiensi eksekusi bytecode. Saat bytecode dieksekusi oleh mesin virtual, jika kompiler JIT menentukan bahwa sebagian dari bytecode akan digunakan berulang kali, ia mengkompilasi bagian tertentu ke kode mesin. Kompiler JIT kemudian menyimpan kode mesin dalam memori sehingga dapat digunakan oleh mesin virtual. Kompiler JIT mencoba untuk mencapai keseimbangan antara waktu kompilasi yang lebih lama dan waktu eksekusi yang lebih cepat.

Kompiler

Sebuah compiler menerjemahkan program yang ditulis dalam satu bahasa ke bahasa lain. Sebagian besar kompiler diatur ke dalam tiga tahap: ujung depan , pengoptimal , dan ujung belakang. Ujung depan bertanggung jawab untuk memahami program. Itu memastikan program valid dan mengubahnya menjadi representasi perantara , struktur data yang digunakan oleh kompiler untuk mewakili program.

Pengoptimal meningkatkan representasi perantara untuk meningkatkan kecepatan atau mengurangi ukuran yang dapat dieksekusi yang pada akhirnya dihasilkan oleh kompiler. Bagian belakang mengubah representasi perantara yang dioptimalkan ke dalam bahasa keluaran kompiler.

Jika kompiler dari bahasa tingkat tinggi yang diberikan menghasilkan bahasa tingkat tinggi lain, itu disebut transpiler. Transpiler dapat digunakan untuk memperluas bahasa yang ada atau untuk menyederhanakan pengembangan kompiler dengan mengeksploitasi implementasi portabel dan dioptimalkan dengan baik dari bahasa lain (seperti C ).

Banyak kombinasi interpretasi dan kompilasi yang mungkin, dan banyak implementasi bahasa pemrograman modern menyertakan elemen keduanya. Misalnya, bahasa pemrograman Smalltalk secara konvensional diimplementasikan dengan kompilasi ke dalam bytecode , yang kemudian diinterpretasikan atau dikompilasi oleh mesin virtual. Karena bytecode Smalltalk dijalankan pada mesin virtual, bytecode ini portabel di berbagai platform perangkat keras.

Beberapa implementasi

Bahasa pemrograman dapat memiliki beberapa implementasi. Implementasi yang berbeda dapat ditulis dalam bahasa yang berbeda dan dapat menggunakan metode yang berbeda untuk mengkompilasi atau menafsirkan kode. Misalnya, implementasi Python meliputi :

  • CPython , implementasi referensi Python

CPython adalah implementasi referensi dari bahasa pemrograman Python Sprints. Ditulis dalam C dan Python, CPython adalah implementasi bahasa default dan paling banyak digunakan.

CPython dapat didefinisikan sebagai juru bahasa dan kompiler karena mengkompilasi kode Python ke dalam bytecode sebelum menafsirkannya. Ini memiliki antarmuka fungsi asing dengan beberapa bahasa, termasuk C, di mana seseorang harus secara eksplisit menulis binding dalam bahasa selain Python.

Fitur khusus CPython adalah ia menggunakan kunci penerjemah global (GIL) pada setiap proses penerjemah CPython , yang berarti bahwa dalam satu proses, hanya satu utas yang dapat memproses bytecode Python pada satu waktu. Ini tidak berarti bahwa tidak ada gunanya multithreading; skenario multithreading yang paling umum adalah di mana sebagian besar utas menunggu proses eksternal untuk diselesaikan.

Misalnya, bayangkan ketika tiga utas melayani klien yang terpisah. Satu utas mungkin menunggu klien untuk membalas, dan utas lainnya mungkin menunggu kueri basis data untuk dieksekusi, sementara utas ketiga sebenarnya memproses kode Python.

  • IronPython , implementasi yang menargetkan .NET Framework

IronPython adalah implementasi dari bahasa pemrograman Python yang menargetkan .NET Framework dan Mono. Jim Hugunin menciptakan proyek dan secara aktif berkontribusi hingga Versi 1.0 yang dirilis pada tanggal 5 September 2006. IronPython 2.0 dirilis pada tanggal 10 Desember 2008. Setelah versi 1.0 dikelola oleh tim kecil di Microsoft hingga rilis 2.7 Beta 1.

Microsoft meninggalkan IronPython (dan proyek saudaranya IronRuby ) pada akhir 2010, setelah itu Hugunin pergi untuk bekerja di Google. Proyek saat ini dikelola oleh sekelompok sukarelawan di GitHub. Ini adalah perangkat lunak bebas dan sumber terbuka, dan dapat diimplementasikan dengan Alat Python untuk Visual Studio, yang merupakan ekstensi sumber terbuka dan gratis untuk Microsoft Visual Studio IDE.

IronPython ditulis seluruhnya dalam C# , meskipun beberapa kodenya dibuat secara otomatis oleh pembuat kode yang ditulis dengan Python.

Baca Juga : Penjelasan Fungsi OnClick di JQuery Beserta Contohnya

IronPython diimplementasikan di atas Dynamic Language Runtime (DLR), perpustakaan yang berjalan di atas Infrastruktur Bahasa Umum yang menyediakan pengetikan dinamis dan pengiriman metode dinamis, antara lain, untuk bahasa dinamis. DLR adalah bagian dari .NET Framework 4.0 dan juga merupakan bagian dari Mono sejak versi 2.4 dari 2009. DLR juga dapat digunakan sebagai pustaka pada implementasi CLI yang lebih lama.

  • Jython , implementasi yang menargetkan mesin virtual Java

Jython adalah implementasi dari bahasa pemrograman Python yang dirancang untuk berjalan di platform Java . Implementasinya sebelumnya dikenal sebagai JPython hingga 1999.

Program Jython dapat mengimpor dan menggunakan kelas Java apa pun. Kecuali untuk beberapa modul standar, program Jython menggunakan kelas Java alih-alih modul Python. Jython mencakup hampir semua modul dalam distribusi bahasa pemrograman Python standar , hanya kekurangan beberapa modul yang awalnya diimplementasikan dalam C . Misalnya, antarmuka pengguna di Jython dapat ditulis dengan Swing , AWT atau SWT . Jython mengkompilasi kode sumber Python ke Java bytecode (bahasa perantara) baik berdasarkan permintaan atau secara statis.

Jython awalnya dibuat pada akhir 1997 untuk menggantikan C dengan Java untuk kode kinerja intensif yang diakses oleh program Python, pindah ke SourceForge pada Oktober 2000. Python Software Foundation memberikan hibah pada Januari 2005. Jython 2.5 dirilis pada Juni 2009.

  • PyPy , implementasi yang dirancang untuk kecepatan (ditulis dalam RPython)

PyPy merupakan implementasi alternatif dari Python bahasa pemrograman untuk CPython (yang merupakan implementasi standar). PyPy sering berjalan lebih cepat daripada CPython karena PyPy adalah kompiler just-in-time sementara CPython adalah juru bahasa . Sebagian besar kode Python berjalan dengan baik di PyPy kecuali untuk kode yang bergantung pada ekstensi CPython, yang tidak berfungsi atau menimbulkan biaya tambahan saat dijalankan di PyPy.

Secara internal, PyPy menggunakan teknik yang dikenal sebagai meta-tracing, yang mengubah penerjemah menjadi kompiler just-in-time penelusuran. Karena interpreter biasanya lebih mudah untuk ditulis daripada compiler, tetapi berjalan lebih lambat, teknik ini dapat mempermudah untuk menghasilkan implementasi bahasa pemrograman yang efisien. Rantai alat meta-tracing PyPy disebut RPython .

PyPy tidak memiliki kompatibilitas penuh dengan versi ekosistem CPython yang lebih baru. Dengan itu hanya mengklaim kompatibilitas dengan sintaks Python 2.7 dan 3.6, dan 3.7 (kualitas beta, dengan “beberapa” fitur yang hilang); kehilangan sintaks yang lebih baru di Python 3.8, 3.9 dll. seperti ekspresi penugasan dan parameter posisi saja dan sintaks Python 3.10 yang akan datang, seperti pencocokan pola .

Spread the love

Related Post

5 Jenis Bahasa Pemrograman

5 Jenis Bahasa Pemrograman – Pemrograman adalah keterampilan yang semakin dicari di pasar kerja. Memiliki setidaknya pemahaman dasar tentang bagaimana fungsi perangkat lunak sangat membantu bagi siapa saja yang berinteraksi

Mengenal Software R dan Manfaatnya

Mengenal Software R dan Manfaatnya – Dalam bumi teknlogi terdapat beraneka ragam tipe aplikasi bahasa pemrograman, salah satunya merupakan R. Digolongan para informasi scientist bisa jadi julukan R telah tidak

Kursus C++ Terbaik Untuk Memulai Karir Anda

Kursus C++ Terbaik Untuk Memulai Karir Anda – Beberapa pekerjaan terbaik dalam pengembangan perangkat lunak membutuhkan pengetahuan dan pemahaman tentang bahasa C++. Kursus C++ Terbaik Untuk Memulai Karir Anda  Baca