Java. Die ganze Zeit (und die Kosten), um das Programm auf anderen Computern zum Laufen zu bringen wird gespart. (Tatsächlich laufen die Dinge nicht immer so glatt.)
Programme, die in einer höheren Sprache geschrieben sind, werden niemals direkt durch den Prozessor ausgeführt. Wir haben schon eine Möglichkeit gesehen so ein Programm auszuführen: die Verwendung eines Übersetzers, um ein Maschinensprachprogramm zu erzeugen, das direkt ausgeführt werden kann.
Eine andere Möglichkeit ist die Verwendung eines Interpreters. Ein Interpreter ist ein ausführbares Programm, das direkt auf dem Prozessor läuft. Ein Interpreter liest ein Quellprogramm, das in einer höheren Sprache geschrieben wurde und führt die Aktionen durch, die das Quellprogramm verlangt.
Das ist eine ziemlich komplizierte Überlegung. Die Abbildung hilft vielleicht:
In der Abbildung, das Quellprogramm program.bas
wurde in BASIC (eine Programmiersprache) von einem Programmierer mit einem Texteditor geschrieben. Das Programm wird vom BASIC Interpreter interpretiert, der ein ausführbares Programm ist, das auf dem Prozessor läuft.
Der Basic Interpreter arbeitet, in dem er die Befehle des BASIC Quellprogramms einen nach dem anderen liest. Jedes Mal, wenn er einen Befehl liest, tut der Interpreter, was der Befehl verlangt. Ein BASIC Befehl könnte verlangen zwei Zahlen zu addieren. Das ist ausgezeichnet. Der Basic Interpreter ist ein Programm, und Programme können leicht zwei Zahlen addieren. Das BASIC Programm könnte dann verlangen die Summe auf dem Bildschirm auszugeben. Auch das ist okay. Der BASIC Interpreter kann das leicht tun.
Der Basic Interpreter verwendet die fundamentalen Operationen des Prozessors um die verlangte Aktion des BASIC Quellprogramms auszuführen.
Aber das Quellprogramm wird nicht in Maschinensprache übersetzt.
Das ist vergleichbar mit einem Koch, der keine Rezepte lesen kann. Der Koch stellt einen Assistenten ein, der die Rezepte lesen kann. Der Assistent liest dem Koch die Anweisungen eines Rezepts eine nach der anderen vor, der sie dann eine nach der anderen ausführt.
Ihr habt das vermutlich viele Male getan, ohne es zu bemerken. Es ist vollkommen präzise (wenn auch eine ungebräuchliche Wortwahl) zu sagen, dass z.B. das Computerspiel Solitär (oder jedes andere Computerspiel) ein Interpreter für die Befehle ist, die der Anwender mit Maus und Tastatur eingibt. Die Befehle für das Spiel Solitär sind nicht die übliche Art von Befehlen, wie sie in einer Mehrzweck-Programmiersprache verwendet werden, aber nichtsdestotrotz sind es Befehle. Der Befehlssatz und die Regeln, wie sie korrekt zu verwenden sind, bilden die Programmiersprache für den Solitär-Interpreter.
Indem Ihr ein Computerspiel spielt, schreibt Ihr ein Programm, das ein Problem löst. (Üblicherweise besteht das Problem darin das Spiel zu beenden.)
Wenn Ihr jeden Schritt den Ihr tut, aufzeichnen würdet, hättet Ihr ein Programm, dass das Spiel, das als Interpreter handelt, ausführen könnte, um das Problem zu lösen.
(Natürlich, jedes Mal, wenn wir Solitär spielen ist das Problem eine zufällig ausgewählte Anordnung von Karten, so dass wir für jedes Problem ein anderes Programm brauchen.)
Ein Interpreter läuft direkt im Prozessor. Aus welcher Art von Befehlen muss ein Interpreter bestehen?