Unterschiede zwischen Compilern und Interpreten

Bevor die Programmiersprachen Java und C # erschienen, wurden Computerprogramme nur kompiliert oder interpretiert. Sprachen wie Assemblersprache, C, C ++, Fortran, Pascal wurden fast immer in Maschinencode kompiliert. Sprachen wie Basic, VbScript und JavaScript wurden normalerweise interpretiert.

Was ist also der Unterschied zwischen einem kompilierten und einem interpretierten Programm??

Kompilieren

Um ein Programm zu schreiben, gehen Sie folgendermaßen vor:

  1. Bearbeiten Sie das Programm
  2. Kompilieren Sie das Programm in Maschinencodedateien.
  3. Verknüpfen Sie die Maschinencodedateien mit einem ausführbaren Programm (auch als exe bekannt)..
  4. Debuggen Sie das Programm, oder führen Sie das Programm aus

Bei einigen Sprachen wie Turbo Pascal und Delphi werden die Schritte 2 und 3 kombiniert.

Maschinencodedateien sind in sich geschlossene Maschinencodemodule, die miteinander verknüpft werden müssen, um das endgültige Programm zu erstellen. Der Grund für separate Maschinencodedateien ist die Effizienz. Compiler müssen nur den geänderten Quellcode neu kompilieren. Die Maschinencodedateien der unveränderten Module werden wiederverwendet. Dies wird als Antragstellung bezeichnet. Wenn Sie den gesamten Quellcode neu kompilieren und erstellen möchten, wird dies als Build bezeichnet.

Das Verknüpfen ist ein technisch komplizierter Prozess, bei dem alle Funktionsaufrufe zwischen verschiedenen Modulen verknüpft, Speicherplätze für Variablen zugewiesen und der gesamte Code im Speicher abgelegt und dann als vollständiges Programm auf die Festplatte geschrieben werden. Dies ist oft ein langsamerer Schritt als das Kompilieren, da alle Maschinencodedateien in den Speicher eingelesen und miteinander verknüpft werden müssen.

Dolmetschen

Die Schritte zum Ausführen eines Programms über einen Interpreter sind:

  1. Bearbeiten Sie das Programm
  2. Debuggen Sie das Programm, oder führen Sie das Programm aus

Dies ist ein weitaus schnellerer Prozess, mit dem unerfahrene Programmierer ihren Code schneller bearbeiten und testen können als mit einem Compiler. Der Nachteil ist, dass interpretierte Programme viel langsamer ausgeführt werden als kompilierte Programme. 5-10-mal langsamer, da jede Codezeile erneut gelesen und dann erneut verarbeitet werden muss.

Java und C # eingeben

Beide Sprachen sind teilweise kompiliert. Sie generieren einen für die Interpretation optimierten Zwischencode. Diese Zwischensprache ist unabhängig von der zugrunde liegenden Hardware und erleichtert das Portieren von Programmen, die in einem anderen Prozessor geschrieben wurden, sofern für diese Hardware ein Interpreter geschrieben wurde.

Java erzeugt beim Kompilieren Bytecode, der zur Laufzeit von einer Java Virtual Machine (JVM) interpretiert wird. Viele JVMs verwenden einen Just-In-Time-Compiler, der Bytecode in systemeigenen Maschinencode konvertiert und diesen Code dann ausführt, um die Interpretationsgeschwindigkeit zu erhöhen. Tatsächlich wird der Java-Quellcode in einem zweistufigen Prozess kompiliert.

C # wird in die Common Intermediate Language (CIL) kompiliert, die zuvor als Microsoft Intermediate Language MSIL bezeichnet wurde. Diese wird von der Common Language Runtime (CLR) ausgeführt, die Teil des .NET Frameworks ist und Supportdienste wie Garbage Collection und Just bietet -In-Time-Zusammenstellung.

Sowohl Java als auch C # verwenden Beschleunigungstechniken, sodass die effektive Geschwindigkeit fast so hoch ist wie eine reine kompilierte Sprache. Wenn die Anwendung viel Zeit mit Ein- und Ausgaben wie dem Lesen von Datenträgerdateien oder dem Ausführen von Datenbankabfragen verbringt, ist der Geschwindigkeitsunterschied kaum spürbar.

Was bedeutet das für mich??

Wenn Sie keinen besonderen Geschwindigkeitsbedarf haben und die Bildrate nicht um einige Bilder pro Sekunde erhöhen müssen, können Sie die Geschwindigkeit vergessen. C, C ++ oder C # bieten ausreichend Geschwindigkeit für Spiele, Compiler und Betriebssysteme.