Menu
CoddyTech

Apa Itu Interpreter?

Interpreter adalah program yang menjalankan source code secara langsung, mengerjakan instruksinya satu per satu sambil berjalan, alih-alih menerjemahkan seluruh program lebih dulu menjadi file kode mesin terpisah. Implementasi standar Python dan Ruby adalah interpreter.

Oleh Kevin Spektor, Co-founder & CTO

Diperbarui 24 September 2026

Source code
  1. 1print("Hello")
  2. 2total = 2 + 3
  3. 3print(total)
  4. 4print("Done")
Output
Baris yang diterjemahkan0
Jumlah run0

Setiap run menerjemahkan baris-barisnya lagi. Nyalakan salah ketiknya, dan interpreter tetap mencetak "Hello" sebelum sampai di baris 3 lalu berhenti.

Ketik python3 hello.py dan output-nya muncul, tetapi lihat isi foldernya setelah itu: tidak ada file program baru yang dibuat. Program yang sebenarnya berjalan adalah python3 itu sendiri, interpreter Python. Ia membaca hello.py, mencari tahu arti setiap pernyataan, lalu mengerjakannya. Jalankan skrip itu lagi besok, dan interpreter membaca source-nya lagi dari awal.

Cara kerja interpreter

Interpreter mengulang satu siklus sampai program selesai: ambil instruksi berikutnya, cari tahu artinya, kerjakan, lalu lanjut. Selama bekerja, ia menyimpan variabel-variabel program di memorinya sendiri, itulah sebabnya total = price * 3 bisa memakai price yang diisi beberapa baris sebelumnya.

Cara paling jelas untuk melihatnya adalah mode interaktif, yang disebut REPL (read, evaluate, print, loop). Ketik python3 tanpa nama file, dan setiap baris langsung berjalan begitu kamu menekan Enter:

>>> price = 4
>>> price * 3
12

Interpreter sungguhan menambahkan satu langkah persiapan. CPython, interpreter Python standar, lebih dulu meng-compile seluruh file-mu menjadi bytecode, yaitu daftar ringkas berisi instruksi-instruksi sederhana, lalu menjalankan sebuah loop yang mengeksekusi bytecode itu satu instruksi demi satu instruksi. Kamu bisa mencetak bytecode untuk satu baris:

Python 3.12 mencetak output berikut (versi lain berbeda di detailnya):

  0           0 RESUME                   0

  1           2 LOAD_NAME                0 (price)
              4 LOAD_CONST               0 (3)
              6 BINARY_OP                5 (*)
             10 STORE_NAME               1 (total)
             12 RETURN_CONST             1 (None)

Setiap baris itu adalah satu langkah dalam loop interpreter: ambil nilai price, ambil konstanta 3, kalikan keduanya, simpan hasilnya di total. Tidak satu pun dari itu kode mesin; interpreter, yang sendirinya adalah program C yang sudah di-compile, yang mengerjakan setiap langkah.

Error muncul saat barisnya dijalankan

Karena interpreter mengeksekusi sambil berjalan, sebuah program bisa mengerjakan sesuatu yang nyata sebelum menemui kesalahan. Jalankan ini, dan dua baris pertama tercetak sebelum crash:

Step 1: starting
Step 2: still fine
Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero

Kesalahan sintaks berperilaku lain, karena CPython meng-compile seluruh file menjadi bytecode sebelum menjalankan bagian mana pun. Ubah baris 3 menjadi print("Step 3:" 10) (komanya hilang), dan tidak ada yang tercetak sama sekali, bahkan Step 1 pun tidak:

SyntaxError: invalid syntax. Perhaps you forgot a comma?

Jadi "interpreter menjalankan kode baris demi baris" hanya separuh benar. Tata bahasa diperiksa untuk seluruh file lebih dulu; semua hal lain, seperti membagi dengan nol atau memakai nama yang tidak ada, baru ditemukan saat baris itu dieksekusi. Lihat syntax error untuk jenis yang pertama.

Compiler vs interpreter

Compiler menerjemahkan seluruh program menjadi file terpisah sebelum program berjalan. Interpreter menjalankan programnya sendiri, setiap kali. Perbedaan praktisnya berasal dari situ:

CompilerInterpreter
Kapan pekerjaannya terjadiSekali, sebelum program berjalanSetiap kali program berjalan
OutputFile terpisah (executable atau bytecode)Tidak ada file program terpisah
Yang kamu berikan ke penggunaProgram hasil compileSource code-nya, plus interpreter yang terinstal di komputer mereka
Pemeriksaan errorSintaks dan, di bahasa bertipe, error tipe untuk seluruh program sebelum berjalanSintaks biasanya diperiksa lebih dulu; error lain muncul saat baris yang salah dijalankan
Edit lalu jalankanCompile ulang setiap kali ada perubahanSimpan, lalu jalankan lagi
KecepatanLebih cepat, CPU menjalankan kode mesin secara langsungLebih lambat, setiap instruksi diuraikan saat program berjalan
PortabilitasCompile ulang untuk setiap CPU dan sistem operasiSource yang sama berjalan di mana pun interpreter-nya ada
Bahasa yang umumC, C++, Rust, GoPython, Ruby, PHP, Bash

Selisih kecepatannya nyata untuk loop aritmetika yang padat: loop yang sama bisa berjalan berkali-kali lipat lebih cepat sebagai C yang di-compile dibandingkan di CPython. Untuk program yang sebagian besar waktunya menunggu jaringan, disk, atau pengguna, perbedaannya sering terlalu kecil untuk terasa.

Di-compile atau di-interpretasikan bukan sifat bahasanya

Bahasa adalah sekumpulan aturan; compiler atau interpreter adalah program yang mengimplementasikannya. Bahasa yang sama bisa dijalankan dengan dua cara, dan sebagian besar bahasa populer mencampur keduanya:

  • Python. CPython meng-compile ke bytecode lalu meng-interpretasikannya. PyPy, implementasi lain, menambahkan compiler just-in-time (JIT) yang mengubah kode yang sering dijalankan menjadi kode mesin saat program berjalan.
  • Java. javac meng-compile source menjadi bytecode lebih dulu. Java Virtual Machine lalu meng-interpretasikan bytecode itu dan meng-compile JIT method-method yang paling sibuk menjadi kode mesin. Sejak Java 11, java Main.java menjalankan satu file source secara langsung dengan meng-compile-nya di memori lebih dulu.
  • JavaScript. Browser dan Node.js memakai engine seperti V8, yang mulai dengan meng-interpretasikan kode lalu meng-compile bagian-bagian yang paling sering dipakai menjadi kode mesin saat program berjalan.
  • C dan C++. Hampir selalu di-compile lebih dulu dengan GCC, Clang, atau MSVC.
python3 app.py            # Python: interpreter, bytecode behind the scenes
node app.js               # JavaScript: V8 interprets, then JIT-compiles
javac Main.java           # Java step 1: compile to Main.class
java Main                 # Java step 2: the JVM runs the bytecode

Apa pun jenisnya, interpreter atau mesin virtual adalah bagian dari runtime environment program: ia harus terinstal di mana pun program itu berjalan.

Kesalahpahaman yang umum

  • "Interpreter menerjemahkan setiap baris menjadi kode mesin." Interpreter klasik tidak pernah menghasilkan kode mesin untuk programmu. Ia membaca sebuah instruksi lalu mengerjakannya dengan kode yang sudah di-compile ke dalam interpreter itu. Menghasilkan kode mesin saat program berjalan adalah tugas JIT compiler.
  • "Bahasa yang di-interpretasikan tidak punya langkah compile." CPython, YARV milik Ruby, dan PHP semuanya meng-compile ke bytecode lebih dulu. Langkah itu otomatis dan tidak terlihat, jadi mudah terlewat.
  • "Di-interpretasikan berarti lambat." Kompilasi JIT sudah menutup sebagian besar selisihnya. V8 menjalankan JavaScript cukup cepat untuk aplikasi besar seperti VS Code, yang dibangun di atas Electron.
  • "Python adalah interpreter-nya." Python adalah bahasanya. CPython, PyPy, dan MicroPython adalah interpreter yang berbeda untuk bahasa itu, dan bisa berbeda dalam kecepatan maupun library yang didukung.

Lanjut ke mana

Untuk separuh lain dari perbandingan ini, baca apa itu compiler dan bagaimana compiler mengubah source code menjadi kode mesin. Halaman runtime environment menjelaskan apa lagi yang dibawa interpreter bersamanya. Untuk mencoba interpreter sendiri, jalankan skrip Python atau buka playground Python.

Pertanyaan yang sering diajukan

Apakah Python itu compiler atau interpreter?

Python adalah bahasa; program yang menjalankannya biasanya CPython, yang merupakan interpreter. CPython lebih dulu meng-compile kodemu menjadi bytecode secara otomatis, lalu meng-interpretasikan bytecode itu. Ada juga implementasi lain, seperti PyPy, yang menambahkan JIT compiler.

Apakah C++ itu interpreter atau compiler?

C++ adalah bahasa, dan hampir selalu di-compile lebih dulu dengan compiler seperti GCC, Clang, atau MSVC. Hasilnya adalah file executable native untuk satu CPU dan sistem operasi. Ada tool interaktif untuk C++, tetapi tool itu meng-compile setiap potongan kode di balik layar.

Mana yang lebih cepat, interpreter atau compiler?

Program yang di-compile biasanya berjalan lebih cepat, karena CPU menjalankan kode mesin secara langsung, bukan interpreter yang menguraikan setiap langkah. Interpreter lebih cepat dimulai, karena tidak ada proses build terpisah. JIT compiler, yang dipakai JVM dan V8, mempersempit selisihnya dengan meng-compile kode yang paling sibuk saat program berjalan.

Apa itu REPL?
REPL (read, evaluate, print, loop) adalah prompt interaktif tempat interpreter menjalankan setiap baris begitu kamu mengetiknya dan menampilkan hasilnya. Mengetik python3 atau node tanpa nama file akan membukanya. REPL berguna untuk mencoba ide kecil tanpa membuat file.
Bisakah sebuah bahasa di-compile sekaligus di-interpretasikan?
Bisa. Di-compile atau di-interpretasikan menggambarkan sebuah implementasi, bukan bahasanya. Java di-compile menjadi bytecode oleh javac, lalu di-interpretasikan dan di-compile JIT oleh JVM, dan untuk bahasa seperti Python dan JavaScript ada interpreter maupun compiler.
Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai