Ada banyak cara untuk membedakan bahasa pemrograman. Sebagai permulaan, mereka jatuh ke dalam paradigma yang berbeda: fungsional, berorientasi objek, dan lebih banyak lagi.
Anda juga dapat mengklasifikasikan bahasa pemrograman berdasarkan metode terjemahannya, sesuatu yang memiliki pengaruh besar pada kinerja bahasa. Bahasa pemrograman yang dikompilasi biasanya lebih cepat daripada yang ditafsirkan. Jadi, dalam situasi seperti pengembangan game yang menuntut kecepatan, pengembang cenderung menggunakan bahasa yang dikompilasi.
Apa itu Terjemahan?
Proses penerjemahan mengubah kode yang ditulis oleh programmer menjadi kode mesin yang dapat dieksekusi oleh komputer. Kode mesin adalah jenis bahasa tingkat rendah, yang memiliki satu dan nol. Jadi, yang dilakukan penerjemah adalah mengubah kode tingkat tinggi yang Anda buat dalam bahasa pemrograman menjadi kode mesin.
Tanpa penerjemah, Anda harus membuat kode dalam bahasa mesin. Setiap bahasa pemrograman tingkat tinggi yang Anda ketahui menggunakan salah satu dari tiga metode penerjemahan: kompiler, juru bahasa, atau gabungan keduanya.
Apa itu Kompilator?
Kompilator adalah perangkat lunak yang mengubah kode sumber yang ditulis dalam bahasa tingkat tinggi menjadi kode tingkat rendah untuk dieksekusi.
Diagram di atas mewakili kompiler dalam bentuk paling dasar. Kompiler memiliki beberapa fase. Setiap fase mengubah kode dari satu keadaan ke keadaan lain. Tujuan dari setiap fase kompiler adalah untuk membuat output yang lebih mudah untuk dimanipulasi oleh fase berikutnya. Struktur umum compiler adalah sebagai berikut:
- Pemindai: fase ini mengambil aliran karakter dan mengelompokkannya ke dalam token yang mewakili pengidentifikasi, literal string, dan sebagainya.
- Parser: fase ini mengelompokkan token berdasarkan tata bahasa dari bahasa pemrograman sumber. Ini menciptakan pohon sintaksis abstrak yang merupakan kumpulan ekspresi yang membentuk program.
- Semantik: fase ini melakukan analisis semantik pada pohon sintaksis abstrak (AST). Ini menggunakan aturan bahasa sumber untuk menambahkan makna dengan menetapkan jenis ekspresi AST dan memeriksa validitasnya. AST kemudian menjadi representasi perantara.
- Representasi Menengah (IR): fase ini mengubah kode sumber program asli menjadi kode mesin. Ini menghasilkan versi kode perakitan yang disederhanakan. IR menggunakan satu atau beberapa pengoptimal untuk meningkatkan kode IR dan mengumpulkan informasi untuk mesin yang menjalankannya. Pengoptimal dapat membuat program lebih efisien, lebih cepat, atau bahkan lebih kecil.
- Generator Kode: fase ini menggunakan kode IR yang dioptimalkan dan mengubahnya menjadi kode mesin.
Bahasa Pemrograman Yang Menggunakan Kompilator?
Beberapa bahasa pemrograman terkompilasi yang populer meliputi:
- C
- C++
- Pergi
- Ada
- Fortran
- COBOL
- Pelat
- Objective-C
- Cepat
Satu keuntungan menggunakan bahasa yang dikompilasi adalah mengidentifikasi kesalahan selama kompilasi. Ini memungkinkan Anda memperbaiki bug tersebut, dan kemudian mencoba mengkompilasi program lagi. Bahasa yang dikompilasi cenderung gagal setelah mereka memulai eksekusi. Bahasa-bahasa ini bahkan tidak akan menghasilkan program untuk dijalankan jika kode sumbernya memiliki kesalahan sintaksis. Tetapi kesalahan semantik, dan bentuk bug run-time lainnya, akan melewatinya.
Bahasa yang dikompilasi juga dieksekusi dengan sangat cepat setelah dikompilasi.
Apa itu Penerjemah?
Interpreter adalah program yang menerjemahkan dan mengeksekusi satu baris kode pada suatu waktu. Proses ini berulang hingga interpreter tiba di baris kode terakhir dalam program atau skrip yang diberikan.
Seperti yang Anda lihat dari diagram di atas, seorang juru bahasa mengambil dua input. Pertama, dibutuhkan seluruh kode sumber (program). Kemudian membaca baris pertama program (sebagai input), menerjemahkan, dan mengeksekusinya. Jika baris tersebut dieksekusi dengan benar, baris tersebut akan berpindah ke baris berikutnya dalam program atau skrip.
Tidak seperti kompiler, juru bahasa tidak menerjemahkan seluruh program ke dalam kode mesin. Sebagai gantinya, ia mem-parsing dan menganalisis baris kode tertentu sebelum mengeksekusinya. Penerjemah harus mulai menjalankan program—terutama yang lebih besar—sebelum kompilator selesai menerjemahkannya.
Bahasa Pemrograman Mana yang Menggunakan Interpreter?
Beberapa bahasa pemrograman yang ditafsirkan populer meliputi:
- Python
- JavaScript
- Perl
- MATLAB
- DASAR
Meskipun juru bahasa mulai mengeksekusi kode lebih cepat, itu akan tetap gagal jika menemui kesalahan. Sebagai pemrogram, Anda perlu memperbaiki kesalahan seperti itu dan memulai ulang program. Peristiwa ini terjadi setiap kali penerjemah menemukan kesalahan baru. Beberapa kesalahan mungkin terbengkalai jika berhubungan dengan serangkaian keadaan yang jarang terjadi. Dalam beberapa kasus, pengujian lebih penting dari sebelumnya.
Interpreter biasanya lebih mudah untuk dikembangkan daripada compiler, dan program mereka lebih portabel menurut desainnya.
Apa itu Terjemahan Hibrida?
Terjemahan hibrida menggunakan kompiler dan juru bahasa. Terjemahan hibrid mengkompilasi kode sumber tingkat tinggi ke bentuk tingkat yang lebih rendah, seperti bytecode. Kemudian menggunakan juru bahasa untuk menjalankan bytecode itu.
Terjemahan hibrid mungkin berbeda dari satu bahasa pemrograman ke bahasa pemrograman lainnya, tetapi akan menggunakan struktur umum ini. Salah satu bahasa pemrograman yang lebih populer yang menggunakan terjemahan hybrid adalah Java. Kompiler Java menerjemahkan kode sumbernya menjadi Kode byte Java Virtual Machine (JVM). Interpreter kemudian menerjemahkan bytecode JVM ke kode mesin.
Bahasa Pemrograman Mana yang Menggunakan Terjemahan Hibrida?
Beberapa bahasa pemrograman hybrid yang populer meliputi:
- Jawa
- C#
- Dasar visual
- Erlang
- F#
Dengan terjemahan hibrida, Anda mendapatkan yang terbaik dari kedua dunia. Mengkompilasi kode terlebih dahulu memungkinkan Anda untuk mengatasi bug pada kesempatan paling awal. Bytecode yang dibuat oleh kompiler hibrida lebih mudah ditafsirkan daripada kode sumber program tingkat tinggi.
Nilai Mengetahui Berbagai Metode Penerjemahan
Anda harus memahami metode terjemahan khusus yang digunakan suatu bahasa, terutama jika Anda menggunakannya untuk proyek baru. Metode terjemahan bahasa adalah bagian utama dari identitas bahasa pemrograman. Ini dapat mempengaruhi bagaimana Anda mendistribusikan program Anda dan bagaimana pengguna akan menjalankannya.
Setiap pendekatan penerjemahan memiliki kelebihannya sendiri. Bahasa pemrograman teratas seperti C++, Python, dan Java semuanya menggunakan metode terjemahan yang berbeda. Di samping paradigma bahasa, metode terjemahannya adalah salah satu ciri terpenting yang harus Anda ketahui.
Ada beberapa paradigma yang dapat digunakan oleh bahasa pemrograman. Sebagian besar bahasa pemrograman teratas adalah bahasa multi-paradigma; mereka mendukung penggunaan dua atau lebih paradigma yang berbeda. Tiga dari paradigma yang paling populer adalah pemrograman imperatif, berorientasi objek, dan fungsional.