Ein Interpreter ist ein Programm, das Quellcode einer Programmiersprache einliest und direkt Anweisung für Anweisung ausführt, ohne ihn vorab vollständig in Maschinencode zu übersetzen.
Während ein Compiler den gesamten Quellcode zunächst vollständig in Maschinencode übersetzt, bevor das Programm überhaupt läuft, geht ein Interpreter anders vor: Er liest den Quelltext ein und führt jede Anweisung praktisch sofort aus, sobald er an der Reihe ist. Das Programm wird also nicht im Ganzen vorübersetzt, sondern Schritt für Schritt direkt zur Laufzeit interpretiert.
Ein Interpreter analysiert eine Anweisung des Quellcodes, führt die zugehörige Operation unmittelbar aus und wendet sich anschließend der nächsten Anweisung zu. Manche Interpreter übersetzen den Quelltext dafür zunächst in eine kompaktere Zwischendarstellung, die dann Schritt für Schritt abgearbeitet wird, statt den ursprünglichen Text bei jedem Durchlauf erneut vollständig zu analysieren. In jedem Fall entfällt jedoch der separate Übersetzungsschritt, der bei einem Compiler dem eigentlichen Programmlauf vorausgeht.
Ein Python-Interpreter liest ein Skript Zeile für Zeile ein und führt jede Zeile sofort aus. Enthält das Skript erst in einer späteren Zeile einen Fehler, werden alle vorherigen, fehlerfreien Zeilen bereits ausgeführt, bevor der Fehler überhaupt bemerkt wird.
Interpreter werden eingesetzt, um Skriptsprachen plattformunabhängig auszuführen, Programme interaktiv Zeile für Zeile auszuprobieren und neue Software schneller zu testen, da auf einen separaten, oft zeitaufwendigen Übersetzungsschritt verzichtet werden kann.
Interpretierte Programme laufen in der Regel langsamer als zuvor vollständig kompilierte Programme, da die Übersetzung einzelner Anweisungen bei jedem Lauf erneut anfällt, statt nur einmal vorab zu erfolgen. Häufig wird außerdem übersehen, dass eine Programmiersprache selbst nicht grundsätzlich an eine bestimmte Ausführungsart gebunden ist: Für dieselbe Sprache können sowohl Interpreter als auch Compiler existieren, und manche Umsetzungen kombinieren beide Ansätze.
Nicht zu verwechseln mit Compiler: Ein Compiler übersetzt den gesamten Quellcode vorab vollständig in Maschinencode, der danach eigenständig ausgeführt wird, während ein Interpreter den Quellcode direkt zur Laufzeit Anweisung für Anweisung ausführt, ohne einen eigenständigen, vorab lauffähigen Maschinencode zu erzeugen.