Interpreter
An interpreter is a program that reads source code and executes it directly, translating and running instructions one at a time rather than compiling the whole program into machine code beforehand.
Definition
An interpreter is a program that reads source code and executes it directly, translating and running instructions one at a time rather than compiling the whole program into machine code beforehand.
Overview
Programming languages need some way to turn human-readable source code into actions a computer can perform. An interpreter does this by reading a program's statements, translating each one, and executing it immediately, without producing a separate standalone executable file. This is different from a compiler, which translates the entire program into machine code (or an intermediate form) ahead of time and produces a file that can be run independently afterward. Many popular languages, including Python, Ruby, and PHP, are commonly described as interpreted, though in practice most modern implementations use a hybrid approach: source code is first translated into bytecode, a compact intermediate representation, which is then interpreted by a virtual machine. This hybrid model gives interpreted languages faster startup and simpler cross-platform distribution than pure compiled languages, at some cost to raw execution speed, since translation happens at run time instead of once ahead of time. To close that performance gap, many interpreters incorporate Just-In-Time (JIT) compilation, which compiles frequently executed bytecode into native machine code while the program runs. JavaScript engines like V8, and language runtimes like PyPy, use this technique to combine the flexibility of interpretation with performance closer to compiled code, making the line between “interpreted” and “compiled” languages increasingly blurry in practice.
Key Concepts
- Reads and executes source code statement by statement
- Does not require a separate ahead-of-time compilation step to run code
- Often works from bytecode produced by an internal translation step
- Enables faster iteration during development compared to full compilation
- Typically slower at raw execution than fully compiled native code
- Frequently paired with JIT compilation to improve runtime performance
- Powers dynamic languages such as Python, Ruby, and JavaScript