[Avg. reading time: 4 minutes]
Compiler vs Interpreter
Compiler
-
A compiler translates the entire source code into machine code (or an intermediate native format) before execution
-
This translation phase is called compile time
-
The generated executable runs later during runtime
-
Errors are mostly caught early, before the program runs
Languages that primarily use compilation
- C
- C++
- Rust
- Haskell
- Erlang
Implications
- Faster execution
- Stronger type and safety guarantees
- Slower edit–compile–run loop
Interpreter
- An interpreter translates and executes one statement at a time
- Translation happens during runtime
- No separate executable is produced
- Errors often appear only when the problematic line is executed
Languages that primarily use interpretation
- Python
- PHP
- Perl
- Ruby
Implications
- Faster development and experimentation
- Slower execution compared to native binaries
- More runtime flexibility
What about JAVA?
Java uses both compilation and interpretation
How it works
- Java source code is compiled into bytecode
- Bytecode runs on the Java Virtual Machine (JVM)
- The JVM interprets bytecode and may JIT-compile hot paths into native machine code
Result
- Portable across platforms
- Performance close to compiled languages for long-running applications