Martin Jung: Was genau bedeutet "compilieren"?

Beitrag lesen

Willkommen in dieser interessanten Runde,

Hi zusammen,

und gibt dabei Maschinencode aus.
Nein. Wohin denn?

Das ist _die_ Frage, die mir zum Verständnis fehlte.

Sich der Existenz von just-in-time _Compilern_ nochmal explizit bewusst zu werden, hätte mir darüberhinaus bei der Erkenntnissuche auch nicht zum Nachteil gereicht. ;-)

Auch eine "reale CPU" ist letzten Endes nichts anderes als eine "Virtuelle Maschine", die in Microcode programmiert ist; ein Addierwerk ist ein Interpreter für Eingabesignale usw.

So verstehe ich das auch.

Die Anzahl der Indirektionen bzw. die "Position" in der Kaskade.
Ja. Aber das ist kein qualitativer Unterschied, nur ein quantitativer.

Der qualitative Unterschied wäre für mich, ob ein Automat, der als Eingabe ein Programm erhält, als Ausgabe ein anderes Programm liefert oder aber die Ergebnisse des Eingabeprogramms.
Ersteres wäre für mich ein Compiler, letzteres ein Interpreter.

Verständliche und elegante Definition (wobei Du mit "Programm" in diesem Fall eine syntaktische Einheit meinst?). Schreibst Du zufälligerweise Bücher? Wenn ja, bei welchem Verlag sind sie erhältlich?

Die VM _ist_ der Maschinencode, der vom Prozessor verarbeitet wird.
Würde sie solchen aus Bytecode erzeugen, also ein Programm ausgeben, dann würde ich sie selbst als Compiler bezeichnen ... da sie es nicht tut, stelle ich sie einer CPU gleich und nenne beide Interpreter.

Versuch einer korrekten Zusammenfassung:
Ein Compiler ist ein Programm, welches durch eine Kaskade endlich vieler Interpreter interpretiert wird und dadurch aus Programmieranweisungen Programme erzeugt.

Viele Grüße,
Martin