EMZETT.
Login

Interpreter

Kurz: Ein Interpreter führt ein Programm direkt aus, indem er den Quelltext (oder einen Zwischencode) Schritt für Schritt liest und die Anweisungen sofort umsetzt – ohne vorher eine eigene ausführbare Datei zu erzeugen.

Genauer: Interpretierte Sprachen wie Python, Ruby, PHP, Bash oder JavaScript erlauben schnelles Ausprobieren in einer REPL (REPL) und sind plattformunabhängig, solange es den Interpreter gibt. Typfehler fallen oft erst beim Ausführen auf, und die Geschwindigkeit liegt meist unter der von kompiliertem Code.

Im Detail

python3 skript.py       # Interpreter liest und führt aus
node app.js
bash backup.sh

Wie arbeitet ein Interpreter?

Vereinfacht in einer Schleife: Anweisung lesen, auswerten, Zustand ändern, weiter. Moderne Interpreter übersetzen den Quelltext zuerst in einen kompakten Bytecode (Bytecode) und führen den in einer virtuellen Maschine aus (CPython, Ruby/YARV, Lua). Schnelle JavaScript-Engines wie V8 kombinieren das mit JIT-Compilation.

# Ein winziger Interpreter für Rechenausdrücke in Postfix-Schreibweise
def rechne(ausdruck):
    stapel = []
    for token in ausdruck.split():
        if token in "+-*/":
            b, a = stapel.pop(), stapel.pop()
            stapel.append({"+": a + b, "-": a - b, "*": a * b, "/": a / b}[token])
        else:
            stapel.append(float(token))
    return stapel.pop()
 
print(rechne("3 4 + 2 *"))    # 14.0

Vergleich

CompilerInterpreter
Übersetzungvorab, gesamtes Programmzur Laufzeit, Stück für Stück
Startschnell (Binärdatei)Interpreter muss laufen
Geschwindigkeitmeist höhermeist niedriger
Fehlerviele vor dem Startoft erst beim Ausführen

Interpreter selbst zu bauen ist eine hervorragende Übung (Beispiele in den Kursen zu Scheme und Racket).

Siehe auch: Compiler, Bytecode, REPL, JIT-Compiler