Interpreter

Executes code line by line at runtime.

An interpreter executes code directly, translating and running one statement at a time without creating a standalone executable. This enables interactive development and immediate feedback.

Characteristics:
- No compilation step: Execute immediately
- Line-by-line execution: Process as you go
- Runtime translation: Slower than compiled code
- Platform independence: Same source runs anywhere with interpreter

        graph LR
  Center["Interpreter"]:::main
  Rel_compiler["compiler"]:::related -.-> Center
  click Rel_compiler "/terms/compiler"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explain Like I'm 5

An interpreter is like a translator who reads one sentence of a foreign language, tells you what it means, then moves to the next sentence. It's slower than reading a fully translated book, but you can understand immediately!

🤓 Expert Deep Dive

Tree-walking interpreters directly execute AST nodes. Bytecode interpreters compile to intermediate form (Python's .pyc). Tracing JITs (LuaJIT, PyPy) optimize hot paths. REPL enables interactive exploration.

📚 Sources