Pengkompil (compiler) menterjemah keseluruhan program daripada bahasa aras tinggi kepada kod mesin sekali gus, sebelum program dijalankan. Jurubahasa (interpreter) menterjemah dan menjalankan program satu pernyataan pada satu masa. Soalan peperiksaan meminta anda membandingkan keduanya, selalunya melalui pelaporan ralat, kelajuan atau pengedaran.
Pelajaran ini menyusul peranan sistem pengendalian dan aplikasi dalam modul perisian dan sistem.
Mengapa program perlu diterjemah?
Pemproses hanya memahami kod mesin, iaitu arahan binari. Manusia menulis dalam bahasa aras tinggi seperti Python kerana ia mudah dibaca. Penterjemah merapatkan jurang itu.
Program yang anda tulis ialah kod sumber (source code). Apa yang dihasilkan pengkompil ialah kod objek (object code), atau fail bolehlaksana. Jurubahasa tidak menghasilkan fail berasingan.
Bagaimana kedua-duanya berkelakuan?
| Ciri | Pengkompil | Jurubahasa |
|---|---|---|
| Terjemahan | Keseluruhan program sekali gus | Satu pernyataan pada satu masa, semasa berjalan |
| Output | Fail bolehlaksana berasingan | Tiada fail dihasilkan |
| Ralat | Menyenaraikan ralat selepas mencuba keseluruhan program; tiada apa berjalan sehingga dibetulkan | Berhenti pada ralat pertama; baris sebelumnya sudah dijalankan |
| Menjalankan semula | Menjalankan fail bolehlaksana terus, penterjemah tidak diperlukan | Menterjemah semula setiap kali |
| Kelajuan berjalan | Lebih pantas | Lebih perlahan |
| Perkongsian | Pengguna menerima fail bolehlaksana dan bukan kod sumber | Pengguna memerlukan jurubahasa dan kod sumber |
Contoh berlangkah
Satu program pendek mempunyai ralat pada baris 4, kerana totl ditaip dan bukan total.
1 total ← 0
2 OUTPUT "Start"
3 total ← total + 5
4 OUTPUT totl
5 OUTPUT "Done"
Jurubahasa, dijejak:
| Langkah | Baris | Apa yang berlaku | Output skrin |
|---|---|---|---|
| 1 | 1 | total ditetapkan kepada 0 | tiada |
| 2 | 2 | Mencetak Start | Start |
| 3 | 3 | total menjadi 5 | tiada |
| 4 | 4 | totl tidak ditakrifkan: ralat dilaporkan, larian berhenti | mesej ralat |
| 5 | 5 | Tidak pernah sampai | tiada |
Pengguna melihat “Start” dan kemudian mesej ralat yang menunjuk ke baris 4.
Pengkompil: pengkompil membaca kesemua lima baris dahulu, menemui totl yang tidak ditakrifkan pada baris 4, dan melaporkannya. Tiada fail bolehlaksana dihasilkan, jadi tiada apa pun berjalan dan “Start” tidak pernah dipaparkan. Selepas anda membetulkan baris 4 dan mengkompil semula, fail bolehlaksana berjalan dan memaparkan Start, kemudian 5, kemudian Done.
Kesilapan yang perlu diawasi
Jawapan yang salah: “Pengkompil menterjemah program baris demi baris dan berhenti apabila menemui ralat.”
Itu menerangkan jurubahasa. Pengkompil bekerja pada keseluruhan program dan biasanya melaporkan ralatnya bersama, supaya anda boleh membetulkan beberapa sekali gus. Semak jawapan dengan satu soalan: adakah kod dijalankan semasa diterjemah? Jika ya, itu jurubahasa.
Kesilapan kedua ialah menyatakan “jurubahasa lebih pantas kerana ia berjalan serta-merta”. Ia bermula lebih awal, tetapi setiap larian lebih perlahan, kerana terjemahan diulang.
Semak sendiri
1. Sebuah syarikat mahu menjual permainannya tanpa membenarkan pembeli melihat kod sumber. Penterjemah yang manakah sesuai, dan mengapa?
Tunjukkan jawapan
Pengkompil. Ia menghasilkan fail bolehlaksana yang terdiri daripada kod mesin, jadi syarikat boleh mengedarkan fail itu dan merahsiakan kod sumber.
2. Seorang pelajar sedang belajar atur cara dan mahu menguji satu baris pada satu masa semasa menulis. Penterjemah yang manakah sesuai, dan mengapa?
Tunjukkan jawapan
Jurubahasa. Ia menjalankan setiap pernyataan serta-merta dan berhenti pada ralat pertama, jadi pelajar melihat serta-merta baris mana yang salah.
3. Menggunakan program di atas dengan kesalahan taip dibetulkan (OUTPUT total), apakah yang dipaparkan?
Tunjukkan jawapan
Baris 2 mencetak Start. Baris 3 menjadikan total sama dengan 0 + 5 = 5. Baris 4 mencetak 5. Baris 5 mencetak Done. Output: Start, 5, Done.
Ke mana pelajaran ini menuju seterusnya
Seterusnya, lihat bagaimana pemproses bertindak balas terhadap peristiwa semasa program berjalan, dalam terangkan sela menggunakan senario. Jika anda mahu menonton jejak gelung langkah demi langkah, cuba pelatih jejak pseudokod terhad.
Soalan perbandingan memberi ganjaran kepada perkataan kontras yang tepat seperti “keseluruhan program” dan “satu pernyataan pada satu masa”. Guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh membantu anda memperkemas frasa itu.