Will man für eine moderne Programmiersprache Code erzeugen, wird man schnell feststellen, dass man bei der Übersetzung gerne Befehle verwenden würde, die so von einer konkreten Maschine nicht bereit gestellt werden. Andererseits ändern sich die Instruktionssätze moderner Rechner so schnell, dass es auch gar nicht sinnvoll erscheint, den Compiler zu sehr auf zufälligerweise bereitgestellte Operationen festzulegen. Eine solche Festlegung könnte nämlich bedeuten, dass man nach wenigen Jahren den Compiler gänzlich neu schreiben müsste.
Um dieses zu vermeiden wird ein Code für eine idealisierte Maschine erzeugt, deren Befehle dann jeweils nur noch auf den verschiedenen konkreten Zielrechnern zu implementieren sind. Einerseits erleichtert dieses Vorgehen die Portierbarkeit des Compilers. Andererseits vereinfacht dies auch die Übersetzung selbst, da man den Befehlssatz entsprechend der jeweiligen zu übersetzenden Programmiersprache geeignet wählen kann.
In dem Buch werden solche virtuellen Maschinen für imperative, funktionale, logische und objekt-orientierte Programmiersprachen vorgestellt. Dabei wird insbesonds auf die Übersetzungsschemata eingegangen, wie man für die jeweiligen konkreten Programmkonstrukte der Programmiersprache die Befehlsfolgen für die zugehörige virtuelle Maschine konstruiert. Neben einer vertieften Einsicht in allgemeine Konzepte von Programmiersprachen vermittelt unser Buch darum grundlegende Techniken zur Implementierung moderner Übersetzer.
Um dieses zu vermeiden wird ein Code für eine idealisierte Maschine erzeugt, deren Befehle dann jeweils nur noch auf den verschiedenen konkreten Zielrechnern zu implementieren sind. Einerseits erleichtert dieses Vorgehen die Portierbarkeit des Compilers. Andererseits vereinfacht dies auch die Übersetzung selbst, da man den Befehlssatz entsprechend der jeweiligen zu übersetzenden Programmiersprache geeignet wählen kann.
In dem Buch werden solche virtuellen Maschinen für imperative, funktionale, logische und objekt-orientierte Programmiersprachen vorgestellt. Dabei wird insbesonds auf die Übersetzungsschemata eingegangen, wie man für die jeweiligen konkreten Programmkonstrukte der Programmiersprache die Befehlsfolgen für die zugehörige virtuelle Maschine konstruiert. Neben einer vertieften Einsicht in allgemeine Konzepte von Programmiersprachen vermittelt unser Buch darum grundlegende Techniken zur Implementierung moderner Übersetzer.
Aus den Rezensionen:
"Ein Übersetzer ... ist ein Programm, das einen in einer Quellsprache geschriebenen Programmcode in eine Zielsprache transformiert. ... R. Güting ... hat sich intensive mit dem Bau von Übersetzern beschäftigt. Das vorliegende Buch ist eine interessante Alternative mit teilweise anderen Akzenten. ... Eine ausführliche Erläuterung erfolgt jeweils am Beispiel einer imperativen, einer funktionalen, einer logischen und einer objektorientierten Programmiersprache. Ziel ist die Automatisierung von Vorgängen. - Angesprochen werden Fortgeschrittene, die gute Kenntnisse zumindest in einer imperativen Programmiersprache haben sollten." (Klaus Barckow, in: ekz-Informationsdienst Einkaufszentrale für öffentliche Bibliotheken, 2007, Issue 28)
"Ein Übersetzer ... ist ein Programm, das einen in einer Quellsprache geschriebenen Programmcode in eine Zielsprache transformiert. ... R. Güting ... hat sich intensive mit dem Bau von Übersetzern beschäftigt. Das vorliegende Buch ist eine interessante Alternative mit teilweise anderen Akzenten. ... Eine ausführliche Erläuterung erfolgt jeweils am Beispiel einer imperativen, einer funktionalen, einer logischen und einer objektorientierten Programmiersprache. Ziel ist die Automatisierung von Vorgängen. - Angesprochen werden Fortgeschrittene, die gute Kenntnisse zumindest in einer imperativen Programmiersprache haben sollten." (Klaus Barckow, in: ekz-Informationsdienst Einkaufszentrale für öffentliche Bibliotheken, 2007, Issue 28)