Diskussion:Interpreter
aus Wikipedia, der freien Enzyklopädie
In der Theorie, mit ihren einfachen, aber dafür noch exakt analysierbaren Modellen, findet man den Interpreter in Gestalt der universellen Funktion der Standardnummerierung
der berechenbaren Funktionen wieder, wobei
gilt. Siehe auch utm-Theorem.
Warum ist diese 2-stellige Funktion ein Interpreter? Nun, ist das Programm (siehe natürliche Zahlen), d.h.
ist in der Lage für jedes gegebene Programm, zu jedem Eingabewert x den Ausgabewert
(der per Semantik zugeordneten berechenbaren Funktion) zu berechnen.
kann somit für alle denkbaren Programme, deren Ausgabe bestimmen. Genau das ist ein Interpreter.
Ein Übersetzer macht etwas anderes, der wandelt Programme der Sprache A in Programme der Sprache B, wobei B direkt ausführbar sein kann. (Hier ist dann z.B. die CPU ein in Hardware realisierter Interpreter für B Programme).
--Marc van Woerkom 02:14, 3. Sep 2004 (CEST)
Der erste Satz dieses Artikels ergibt keinen Sinn und ist irgendwie verunglückt. --84.180.232.38 5. Jul 2005 15:54 (CEST)
- Ist jetzt ueberarbeitet. --Hullbr3ach 18:18, 23. Jul 2005 (CEST)
[Bearbeiten] Verschiebung von "Ein einfacher Interpreter"
Der Absatz "Ein einfacher Interpreter" sollte nach WikiSource verschoben und eine Referenz darauf gesetzt werden. --PhilippW 16:09, 2. Apr 2006 (CEST)
Okay, Interpreter habe ich verstanden.
Was ist denn bitte eine Interpretersprache? Für praktisch jede Programmiersprache gibt es Interpreter und Compiler. Z.B. für C gibt es Interpreter. Ist C jetzt eine Interpretersprache? Doch keine Compilersprache? Oder beides?
Der Begriff macht keinen Sinn. Nur Implementationen von Programmiersprachen sind Interpreter- und/oder Compiler-basiert. Die Programmiersprachen sind unabhänging davon, wie sie implementiert sind.
Oftmals werden Programmiersprachen, für die ein Compiler existiert, der Code für eine Virtual Machine erzeugt, Interpretersprache genannt. Auch das ist falsch. Ein typisches Beispiel ist Java.
Oftmals glaubt man auch, Interpretersprachen würden sich dadurch auszeichnen, dass sie interaktiv benutzt werden können. Das ist auch nicht richtig - den gleichen Effekt erzielt man mit inkrementellen Compilern.
Viellecht ist eine Interpretersprache eine Programmiersprache, für die es nur Interpreter-basierte Implementationen gibt? Das kann sich aber leicht ändern, in dem jemand einen Compiler für die Programmiersprache schreibt. Für PHP gibt es Compiler. Für Basic gibt es reichlich Compiler. Python ist auch nicht 'interpretiert'. Für Perl 6 gibt es mindestens einen Compiler.
Viellecht ist eine Interpretersprache eine Programmiersprache, für die es jetzt eine dominierende Interpreter-basierte Implementation gibt?
Ich würde den Begriff einfach streichen.
[Bearbeiten] JIT-Compiler
Der Absatz wo der JIT-Compiler erwähnt wird ist falsch. Denn der JIT-Compiler bearbeitet Zwischencode (Bytecode) und nicht Maschinencode. Außerdem ist dieser genauso "Plattformunabhängig" wie der Interpreter.
Quellcode -> Compiler -> Zwischencode
Zwischencode -> JIT-Compiler (virtuelle Machine) -> Maschinencode/Ausgabe
[ZITAT]
Eine Kompromisslösung ist ein Just-In-Time-Compiler (JIT-Compiler), bei dem das Programm erst zur Laufzeit, jedoch direkt in Maschinencode übersetzt wird. Danach wird der übersetzte Code direkt vom Prozessor ausgeführt. Durch Zwischenspeicherung des Maschinencode müssen mehrfach durchlaufene Programmteile nur einmal übersetzt werden. Auch ermöglicht der JIT-Compiler eine stärkere Optimierung des Binärcodes. Allerdings sind solche Interpreter natürlich nur auf einer bestimmten Rechnerarchitektur lauffähig, weil sie Maschinencode für diese Architektur erzeugen.
Eine weitere Zwischenstufe sind Bytecode-Interpreter. Dabei wird der Quelltext zur Laufzeit vor seiner Ausführung in einen einfachen Zwischencode übersetzt, der dann von einem Interpreter, auch häufig als virtuelle Maschine bezeichnet, ausgeführt wird.
Und eine weitere Zwischenstufe besteht darin, Befehle zum Eingabezeitpunkt in leichter decodierbare Tokens umzuwandeln, die aber bei (List-)Ausgabe wieder in Klartext zurückgewandelt werden.
[/ZITAT]
--Obstfliege