Interpreter: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Ein '''Interpreter''' ist ein Programm, welcher ein Programm, geschrieben in einer für ihn entwickelten Programmiersprache, einliest und versucht das Programm…“)
 
Zeile 1: Zeile 1:
Ein '''Interpreter''' ist ein Programm, welcher ein Programm, geschrieben in einer für ihn entwickelten Programmiersprache, einliest und versucht das Programm auszuführen. Dabei liegt das Programm nicht in [[Maschinensprache]] vor, sondern in menschenlesbarer Quelltextform. Somit muss das Programm nicht vom Entwickler erst compiliert werden, sondern kann einfach direkt ausgeführt werden. Dies führt meistens jedoch zu größeren Nachteilen in der Performanz und Sicherheit der Programmiersprache.
+
Ein '''Interpreter''' ist ein Programm, welches ein anderes Programm ausführen kann. Dies klingt erstmal sehr redundant, hat jedoch folgenden Hintergrund:
 +
 
 +
Für gewöhnlich wird ein menschenlesbares Programm von einem [[Compiler]] in ein von einer Maschine ausführbares Programm übersetzt. Dies limitiert die Ausführung des Programmes jedoch anschließend auf die Maschine, für die sie übersetzt wurde. Dies versucht man mit einem '''Interpreter''' zu umgehen. Ein '''Interpreter''' kann ein für ihn entwickelten Sprache geschriebenes Programm einlesen und die im Programm enthaltenen Befehle ausführen. Dies nennt man dann auch ''ein Programm interpretieren''. Nun muss nur noch der Interpreter selbst auf verschiedene Maschinen ausgeliefert werden und alle für diesen Interpreter geschriebene Programme können auf jeder Maschine ausgeführt werden, für die ein passender Interpreter existiert.
 +
 
 +
Die Sprache, die ein Interpreter interpretiert, ist meistens direkt die menschenlesbare Quellsprache. Dies hat jedoch meistens zur Folge, dass ein Interpreter sehr langsam läuft und unter umständen große Sicherheitslücken aufweist, da ein Programm in der Quellsprache zu interpretieren meist involviert, den gesamten Quelltext und all seine Abhängigkeiten gleichzeitig analysieren zu müssen, als sich auf sehr einfache Maschineninstruktionen verlassen zu können.
 +
 
 +
Dieses Problem versuchen sogenannte '''Bytecodeinterpreter''', wie z.B. die [[JVM]], zu umgehen, indem sie nicht den Code der Quellsprache direkt interpretieren, sondern eine Zwischensprache interpretieren, die wesentlich effizienter und sicherer auszuführen ist und zuerst aus dem Quellcode der Quellsprache generiert werden muss. Dies reduziert jedoch nicht die portabilität des Programmes, da man das ein mal übersetzte Programm immernoch auf allen Maschinen ausführen kann, auf denen der passende Interpreter installiert ist.

Version vom 28. Juli 2016, 15:38 Uhr

Ein Interpreter ist ein Programm, welches ein anderes Programm ausführen kann. Dies klingt erstmal sehr redundant, hat jedoch folgenden Hintergrund:

Für gewöhnlich wird ein menschenlesbares Programm von einem Compiler in ein von einer Maschine ausführbares Programm übersetzt. Dies limitiert die Ausführung des Programmes jedoch anschließend auf die Maschine, für die sie übersetzt wurde. Dies versucht man mit einem Interpreter zu umgehen. Ein Interpreter kann ein für ihn entwickelten Sprache geschriebenes Programm einlesen und die im Programm enthaltenen Befehle ausführen. Dies nennt man dann auch ein Programm interpretieren. Nun muss nur noch der Interpreter selbst auf verschiedene Maschinen ausgeliefert werden und alle für diesen Interpreter geschriebene Programme können auf jeder Maschine ausgeführt werden, für die ein passender Interpreter existiert.

Die Sprache, die ein Interpreter interpretiert, ist meistens direkt die menschenlesbare Quellsprache. Dies hat jedoch meistens zur Folge, dass ein Interpreter sehr langsam läuft und unter umständen große Sicherheitslücken aufweist, da ein Programm in der Quellsprache zu interpretieren meist involviert, den gesamten Quelltext und all seine Abhängigkeiten gleichzeitig analysieren zu müssen, als sich auf sehr einfache Maschineninstruktionen verlassen zu können.

Dieses Problem versuchen sogenannte Bytecodeinterpreter, wie z.B. die JVM, zu umgehen, indem sie nicht den Code der Quellsprache direkt interpretieren, sondern eine Zwischensprache interpretieren, die wesentlich effizienter und sicherer auszuführen ist und zuerst aus dem Quellcode der Quellsprache generiert werden muss. Dies reduziert jedoch nicht die portabilität des Programmes, da man das ein mal übersetzte Programm immernoch auf allen Maschinen ausführen kann, auf denen der passende Interpreter installiert ist.