Definition „Compiler, Interpreter, Compreter“

Der Unterschied von Compiler und Interpreter

| Autor / Redakteur: chrissikraus / Stephan Augsten

Ein Computer ist auf Hilfe angewiesen, um die Befehle des Programmierers zu verstehen.
Ein Computer ist auf Hilfe angewiesen, um die Befehle des Programmierers zu verstehen. (Bild: Boskampi - Pixabay.com / CC0)

Von allein kann ein Computer die Anweisungen des Programmierers nicht verstehen. Sie müssen entweder per Compiler in Maschinensprache übersetzt werden oder per Interpreter zur Laufzeit verarbeitet werden.

Programmiersprachen sind so aufgebaut, dass Menschen sie relativ mühelos lesen und anwenden können. Damit ein Prozessor die einzelnen Anweisungen eines Programms verstehen kann, muss der Quellcode jedoch erst in eine für die Maschine verständliche Form gebracht werden. Je nach Programmiersprache passiert das zum Beispiel mittels Compiler oder Interpreter.

Interpreter

Ein Interpreter verarbeitet den Quellcode eines Projekts zur Laufzeit. Dazu geht der Interpreter Zeile für Zeile vor: Eine Anweisung wird eingelesen, analysiert und sofort ausgeführt. Dann geht es mit der nächsten Anweisung weiter, bis schließlich das Ende des Programms erreicht ist; oder bis ein Fehler auftritt – der Interpreter stoppt seine Arbeit, sobald etwas nicht stimmt. Dadurch weiß man als Entwickler normalerweise sofort, an welcher Stelle sich der Fehler befindet, und kann das Problem so schneller beheben.

Ein Interpreter erzeugt keine Datei, die man mehrmals ausführen könnte. Er fertigt auch keine Übersetzung des Quellcodes in Maschinensprache um, sondern fungiert als eine Zwischenschicht zwischen Programmiersprache und Maschine. Der Interpreter analysiert zur Laufzeit jede einzelne Anweisung eines Programms und ruft die entsprechende Routine aus seinen internen Bibliotheken auf, die wiederum die gewünschte Aktion auf dem Prozessor des Zielsystems ausführt.

Weil also quasi live gearbeitet wird und jedes Statement einzeln verarbeitet werden muss, sind interpretierte Programme in der Regel langsamer als Kompilate. Sie führen beispielsweise auch wiederkehrende Anweisungen jeweils neu aus, wenn sie an der Reihe sind.

Python, Perl oder BASIC sind Beispiele für Sprachen, die einen Interpreter verwenden.

Compiler

Ein Compiler wandelt Quellcode in Maschinensprache um, übersetzt also das gesamte Programm von einer Programmiersprache in Maschinencode. Der Code wird vollständig übersetzt, bevor das Programm ausgeführt wird. Häufig passiert noch ein Zwischenschritt, bevor das Programm in Maschinensprache übersetzt wird: Der Quellcode wird zunächst in einen Zwischencode umgewandelt, zum Beispiel Objektcode.

Der Zwischencode hat den Vorteil, dass er in der Regel auf verschiedenen Plattformen funktioniert und oft auch von einem Interpreter verwendet werden kann. Aus diesem Zwischenergebnis übersetzt der Compiler bzw. Assembler dann Maschinencode, der vom jeweiligen Zielsystem verstanden wird. Schließlich wird per Linker eine ausführbare Datei generiert. Moderne Programmiersprachen arbeiten häufig mit Bytecode statt Maschinencode, eine Art Pseudocode für Maschinen, der intern in speziellen virtuellen Maschinen ausgeführt wird.

Der Compiler stößt also mehrere Schritte an, um aus dem vorliegenden Quellcode ein lauffähiges Programm zu erstellen. Dafür benötigt er vergleichsweise mehr Zeit und Ressourcen. Sobald das fertige Programm läuft, ist es jedoch effizienter als interpretierte Software, da alle Anweisungen bereits vollständig in Maschinencode übersetzt wurden.

Reine Compiler-Sprachen sind zum Beispiel C / C++ und Pascal.

Just-in-time-Compiler: die Hybridlösung

Es gibt auch Ansätze, die Compiler und Interpreter vereinen und so die Schwächen der jeweiligen Systeme ausgleichen. Der Compreter oder Just-in-time-Compiler übersetzt das Programm erst zur Laufzeit in Maschinencode. Einerseits bietet die Hybridlösung gute Performance kompilierter Programme, andererseits ermöglicht sie die komfortable Fehlersuche interpretierter Programme. JIT-Compiler kommen vor allem beim Erstellen plattformunabhängiger und portabler Software zum Einsatz.

Beispiele für Programmiersprachen mit JIT-Compiler sind Java, Visual Basic, C# und auch C++.NET.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Wo liegen bei DevOps die Grenzen der Agilität?

Bimodales Release-Management gegen Reibungsverluste

Wo liegen bei DevOps die Grenzen der Agilität?

Fällt das Wort DevOps, so wird per se davon ausgegangen, dass eine hochgradig automatisierte und standardisierte Software-Produktionsstraße existiert. Die Agilität der Software-Entwicklung und -Bereitstellung hängt aber noch von ganz anderen Faktoren ab. lesen

Was ist WebAssembly?

Definition „Wasm“

Was ist WebAssembly?

WebAssembly ist als Ergänzung zu Javascript im Webbrowser gedacht. Es handelt um einen Bytecode, der dabei helfen soll, die Geschwindigkeit von Webanwendungen zu erhöhen. Allerdings hat das System noch gewisse Schwachstellen. lesen

Was ist AspectJ?

Definition „AspectJ (Programmiersprache)“

Was ist AspectJ?

AspectJ ist eine nahtlos integrierbare Erweiterung für Java, um aspektorientierte Programmierung zu ermöglichen. Sie wurde im Xerox Palo Alto Research Center entwickelt und ist als autarkes Programm sowie für die Eclipse IDE erhältlich. lesen

AdaCore-Tools für Automotive-Einsatz zertifiziert

Qualifizierungen gemäß ISO 26262 and IEC 61508

AdaCore-Tools für Automotive-Einsatz zertifiziert

Mit GNAT Pro, Common Code Generator und SPARK Pro konnten sich drei Tools von AdaCore für den sicherheitsrelevante Einsatzbereiche in der Automobilindustrie qualifizieren. Beim Test durch den TÜV Süd wurden Sie nach ISO 26262 und IEC 61508 zertifiziert. lesen

C#-Programmierung mit .NET-Entwicklungstools

Einstieg in .NET, Visual Studio und Online-Compiler

C#-Programmierung mit .NET-Entwicklungstools

Um C# und .NET für die Entwicklung zu nutzen, sind zunächst keine teuren Tools notwendig. Microsoft stellt die Werkzeuge, die man zum Einstieg in die Programmierung benötigt, kostenlos zur Verfügung. Wir geben einen Überblick. lesen

Kotlin – oder doch lieber Java?

Programmiersprache mit Potenzial

Kotlin – oder doch lieber Java?

Statisch typisiert, Cloud-nativ, JVM-kompatibel: Die Softwareschmiede JetBrains möchte mit Kotlin das bessere Java erfunden haben. Tatsächlich ist Kotlin die am schnellsten wachsende Programmiersprache und (laut einer Umfrage von RedMonk) eine der 20 beliebtesten überhaupt. lesen

Was ist VBA?

Definition „Visual Basic for Applications“

Was ist VBA?

VBA steht für Visual Basic for Applications. Es handelt sich um die Programmiersprache, in der die Microsoft Office-Applikationen geschrieben sind. Durch VBA können Anwender diese Programme leistungsfähiger machen. lesen

Ausblick auf C#-Integration in .NET 5

.NET Framework und .NET Core vereint

Ausblick auf C#-Integration in .NET 5

Um mit C# zu arbeiten, sind verschiedene Zusatzlösungen notwendig, die bei der Entwicklung und Bereitstellung von Anwendungen helfen. Das .NET Framework bietet hierfür einen Compiler, eine Implementierung der Kommandozeile, Klassenbibliotheken und verschiedene Tools. lesen

Development-Tool-Sammlungen von Red Hat

Betas von Software Collections und Developer Toolset erhältlich

Development-Tool-Sammlungen von Red Hat

Beta-Versionen der Red Hat Software Collections 3.4 und des Developer Toolsets 9 stehen seit Mitte November bereit. Damit kommen Entwickler auf der Linux-Plattform des Unternehmens in den Genuss verschiedener quelloffener Laufzeitsprachen und Datenbanken. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45448897 / Definitionen)