Entwicklung: Kompilierte Sprachen versus interpretierte Sprachen

Der Unterschied zwischen einer interpretierten und einer kompilierten Sprache liegt im Ergebnis des Prozesses des Interpretierens oder Kompilierens. Ein Interpreter erzeugt ein Ergebnis aus einem Programm, während ein Compiler ein in Assembler geschriebenes Programm erzeugt. Der Assembler der Architektur wandelt dann das resultierende Programm in Binärcode um.

Ein kompiliertes Programm ist nicht für Menschen lesbar, sondern liegt in einer architekturspezifischen Maschinensprache vor. Es ist eine, bei der das Programm, nachdem es kompiliert wurde, in den Anweisungen der Zielmaschine ausgedrückt wird. Zum Beispiel könnte eine „+“-Operation in Ihrem Quellcode direkt in die „ADD“-Anweisung im Maschinencode übersetzt werden.

Die Erstellung eines kompilierten Programms erfordert mehrere Schritte. Zunächst schreibt der Programmierer mit Hilfe eines Entwicklungswerkzeugs oder sogar eines einfachen Texteditors den Quellcode in einer gewählten Computersprache. Wenn das Programm komplex ist, können Teile davon über mehrere Dateien verteilt sein. Der Programmierer kompiliert dann das Programm, indem er die Module sortiert und verknüpft und alles in Maschinencode übersetzt, den der Computer versteht.

Die heutigen IDEs (Interface Development Environment) machen den Kompilierungsschritt sehr einfach und nahtlos, indem sie nur ein paar Klicks machen.

In einem interpretierten Programm hingegen ist der Quellcode typischerweise ein Programm. Die oft als Skripte bezeichneten Programme benötigen einen Interpreter, der die Befehle im Programm parst und dann ausführt. Der Vorteil eines Skripts ist, dass es sehr portabel ist. Die Anweisungen werden nicht direkt von der Zielmaschine ausgeführt, sondern von einem anderen Programm gelesen und ausgeführt. In Anlehnung an das vorhergehende Beispiel der Addition würde die gleiche „+“-Operation in dieser Art von Sprachen zur Laufzeit vom Interpreter erkannt werden, der dann seine eigene Funktion „add(a,b)“ mit den entsprechenden Argumenten aufrufen würde, die dann die Maschinencode-„ADD“-Anweisung ausführen würde. Jeder Computer, auf dem der entsprechende Interpreter installiert ist, kann das Programm mehr oder weniger unverändert ausführen. Das ist aber auch ein Nachteil, denn ohne Interpreter läuft das Programm überhaupt nicht. Im Allgemeinen sind interpretierte Programme langsamer als kompilierte Programme, aber sie sind leichter zu debuggen und zu überarbeiten.

Alles, was man in einer interpretierten Sprache tun kann, kann man auch in einer kompilierten Sprache tun und umgekehrt sind beide Turing-komplett. Beide haben jedoch Vor- und Nachteile bei der Implementierung und Verwendung.

Vorteile kompilierter Sprachen

Programme, die zur Kompilierzeit in nativen Code kompiliert werden, sind in der Regel schneller als solche, die zur Laufzeit übersetzt werden, da der Übersetzungsprozess einen Overhead darstellt.

Nachteile kompilierter Sprachen

Die wichtigsten Nachteile sind:

  • Zusätzliche Zeit, die benötigt wird, um den gesamten Kompilierungsschritt vor dem Testen abzuschließen.
  • Plattformabhängigkeit des erzeugten Binärcodes.

Vorteile interpretierter Sprachen

Bietet der Implementierung gegenüber kompilierten Implementierungen eine gewisse zusätzliche Flexibilität. Da Interpreter den Quellprogrammcode selbst ausführen, ist der Code selbst plattformunabhängig. Weitere Vorteile sind die dynamische Typisierung und die geringere Größe des ausführbaren Programms.

Nachteile von interpretierten Sprachen

  • Interpreter können für Code-Injection-Angriffe anfällig sein.
  • Geringere Ausführung im Vergleich zur direkten Ausführung von nativem Maschinencode. Eine Technik zur Leistungssteigerung ist die Just-in-Time-Kompilierung, bei der häufig ausgeführte Sequenzen interpretierter Befehle in Host-Maschinencode umgewandelt werden.
  • Quellcode kann gelesen und kopiert oder durch Reflexion in Anwendungen, bei denen geistiges Eigentum einen kommerziellen Vorteil darstellt, leichter zurückentwickelt werden. In einigen Fällen wird Obfuskation als teilweiser Schutz dagegen eingesetzt.

In der Wikipedia finden Sie eine Liste der kompilierten Sprachen:

In der Wikipedia finden Sie auch eine Liste der interpretierten Sprachen:

Via:

Schreibe einen Kommentar