Terbukti, daya pandang manusia dan perangkat elektronik seperti komputer berbeda. Manusia dapat memahami apa saja melalui bahasa alami, tetapi komputer tidak. Komputer membutuhkan penerjemah untuk mengonversi bahasa yang ditulis dalam bentuk yang dapat dibaca manusia menjadi bentuk yang dapat dibaca komputer.
Kompiler dan interpreter adalah jenis penerjemah bahasa. Apa itu penerjemah Bahasa? Pertanyaan ini mungkin muncul di benak Anda.
Penerjemah bahasa adalah perangkat lunak yang menerjemahkan program dari bahasa sumber yang dalam bentuk yang dapat dibaca manusia menjadi program yang setara dalam bahasa objek. Bahasa sumber umumnya adalah bahasa pemrograman tingkat tinggi, dan bahasa objek biasanya adalah bahasa mesin komputer yang sebenarnya.
Grafik perbandingan
Dasar untuk perbandingan | Penyusun | Penerjemah |
---|---|---|
Memasukkan | Dibutuhkan seluruh program sekaligus. | Dibutuhkan satu baris kode atau instruksi sekaligus. |
Keluaran | Ini menghasilkan kode objek perantara. | Itu tidak menghasilkan kode objek perantara. |
Mekanisme kerja | Kompilasi dilakukan sebelum eksekusi. | Kompilasi dan eksekusi berlangsung secara bersamaan. |
Kecepatan | Relatif lebih cepat | Lebih lambat |
Ingatan | Kebutuhan memori lebih karena penciptaan kode objek. | Ini membutuhkan lebih sedikit memori karena tidak membuat kode objek perantara. |
Kesalahan | Tampilkan semua kesalahan setelah kompilasi, semuanya pada saat yang bersamaan. | Menampilkan kesalahan setiap baris satu per satu. |
Deteksi kesalahan | Sulit | Lebih mudah dibandingkan |
Mengenai bahasa pemrograman | C, C ++, C #, Scala, naskah menggunakan kompiler. | Java, PHP, Perl, Python, Ruby menggunakan seorang penerjemah. |
Definisi Kompiler
Compiler adalah program yang membaca program yang ditulis dalam bahasa tingkat tinggi dan mengubahnya menjadi mesin atau bahasa tingkat rendah dan melaporkan kesalahan yang ada dalam program. Itu mengubah seluruh kode sumber dalam sekali jalan atau bisa mengambil beberapa lintasan untuk melakukannya, tetapi pada akhirnya, pengguna mendapatkan kode yang dikompilasi yang siap dijalankan.
Kompiler beroperasi pada fase; berbagai tahapan dapat dikelompokkan menjadi dua bagian yaitu:
- Analisis Fase dari kompiler juga disebut sebagai ujung depan di mana program dibagi menjadi bagian-bagian penyusun mendasar dan memeriksa tata bahasa, semantik dan sintaksis kode setelah mana kode perantara dihasilkan. Fase analisis meliputi penganalisis leksikal, penganalisis semantik, dan penganalisis sintaksis.
- Fase sintesis dari kompiler juga dikenal sebagai ujung belakang di mana kode perantara dioptimalkan, dan kode target dihasilkan. Fase sintesis mencakup pengoptimal kode dan pembuat kode.
TAHAP KOMPILER
Sekarang mari kita memahami cara kerja setiap tahap secara terperinci.
- Lexical Analyzer : Memindai kode sebagai aliran karakter, mengelompokkan urutan karakter ke dalam leksem dan mengeluarkan urutan token dengan merujuk ke bahasa pemrograman.
- Penganalisis Sintaks : Dalam fase ini, token yang dihasilkan pada tahap sebelumnya diperiksa terhadap tata bahasa bahasa pemrograman, apakah ekspresi secara sintaksis benar atau tidak. Itu membuat pohon parse untuk melakukannya.
- Semantic Analyzer : Ini memverifikasi apakah ekspresi dan pernyataan yang dihasilkan pada fase sebelumnya mengikuti aturan bahasa pemrograman atau tidak dan itu menciptakan pohon parse beranotasi.
- Generator kode perantara : Ini menghasilkan kode perantara yang setara dari kode sumber. Ada banyak representasi kode perantara, tetapi TAC (Three Address Code) adalah yang paling banyak digunakan.
- Pengoptimal Kode : Ini meningkatkan kebutuhan ruang dan waktu program. Untuk melakukannya, ini menghilangkan kode redundan yang ada dalam program.
- Pembuat kode : Ini adalah fase terakhir dari penyusun tempat kode target untuk mesin tertentu dihasilkan. Ia melakukan operasi seperti manajemen memori, tugas Daftar, dan optimisasi khusus alat berat.
Tabel simbol adalah suatu struktur data yang mengelola pengidentifikasi bersama dengan tipe data yang relevan yang disimpannya. Penangan Kesalahan mendeteksi, melaporkan, memperbaiki kesalahan yang terjadi di antara berbagai fase kompiler.
Definisi Penerjemah
Penerjemah adalah alternatif untuk mengimplementasikan bahasa pemrograman dan melakukan pekerjaan yang sama sebagai kompiler. Interpreter melakukan lexing, parsing dan mengetikkan pemeriksaan yang mirip dengan kompiler. Tetapi interpreter memproses sintaksis pohon secara langsung untuk mengakses ekspresi dan mengeksekusi pernyataan daripada menghasilkan kode dari sintaksis pohon.
Seorang juru bahasa mungkin memerlukan pemrosesan pohon sintaksis yang sama lebih dari sekali itu adalah alasan mengapa interpretasi relatif lebih lambat daripada menjalankan program yang dikompilasi.
Kompilasi dan interpretasi mungkin digabungkan untuk mengimplementasikan bahasa pemrograman. Di mana kompiler menghasilkan kode tingkat menengah maka kode ditafsirkan daripada dikompilasi ke kode mesin.
Mempekerjakan seorang juru bahasa menguntungkan selama pengembangan program, di mana bagian terpenting adalah untuk dapat menguji modifikasi program dengan cepat daripada menjalankan program secara efisien.
Perbedaan Utama Antara Compiler dan Interpreter
Mari kita lihat perbedaan utama antara Compiler dan Interpreter.
- Kompiler mengambil suatu program secara keseluruhan dan menerjemahkannya, tetapi penerjemah menerjemahkan pernyataan program dengan pernyataan.
- Kode perantara atau kode target dihasilkan jika kompiler. Sebagai lawan penerjemah tidak membuat kode perantara.
- Kompiler secara komparatif lebih cepat daripada Interpreter karena kompiler mengambil seluruh program sekaligus, sedangkan penerjemah mengkompilasi setiap baris kode setelah yang lain.
- Kompiler membutuhkan lebih banyak memori daripada penerjemah karena pembuatan kode objek.
- Compiler menyajikan semua kesalahan secara bersamaan, dan sulit untuk mendeteksi kesalahan dalam kontras tampilan kesalahan penerjemah dari setiap pernyataan satu per satu, dan lebih mudah untuk mendeteksi kesalahan.
- Dalam kompiler ketika kesalahan terjadi dalam program, itu berhenti terjemahannya dan setelah menghapus kesalahan seluruh program diterjemahkan lagi. Sebaliknya, ketika kesalahan terjadi pada penerjemah, itu mencegah terjemahannya dan setelah menghapus kesalahan, terjemahan dilanjutkan.
- Dalam kompiler, proses membutuhkan dua langkah di mana kode sumber pertama-tama diterjemahkan ke program target kemudian dieksekusi. Sedangkan di Interpreter Ini adalah proses satu langkah di mana kode sumber dikompilasi dan dieksekusi pada saat yang sama.
- Kompiler digunakan dalam bahasa pemrograman seperti C, C ++, C #, Scala, dll. Di sisi lain, Interpreter digunakan dalam bahasa seperti Java, PHP, Ruby, Python, dll.
Kesimpulan
Compiler dan interpreter keduanya dimaksudkan untuk melakukan pekerjaan yang sama tetapi berbeda dalam prosedur operasi, Compiler mengambil kode sumber secara agregat sedangkan Interpreter mengambil bagian konstituen dari kode sumber, yaitu, pernyataan demi pernyataan.
Meskipun baik kompiler dan interpreter memiliki kelebihan dan kekurangan tertentu seperti bahasa yang diinterpretasikan dianggap sebagai lintas-platform, yaitu, kode ini portabel. Itu juga tidak perlu mengkompilasi instruksi sebelumnya tidak seperti kompiler yang menghemat waktu. Bahasa yang dikompilasi lebih cepat mengenai proses kompilasi.