Objekt-Orientierung im Compilerbau
Seit der Entwicklung der ersten Compiler wurden für sehr viele Programmiersprachen Compiler entwickelt. Jeder Informatikstudierende ist zum Beispiel der Umgang mit einem C- oder vielleicht auch Java-Compiler gewohnt. Am Anfang galten Compiler als nur sehr schwer zu implementierende Programme. Seitdem wurden aber systematische Techniken und Werkzeuge zur automatischen Erzeugung von (Teilen von) Compilern entwickelt.
Nur wenige Personen kommen allerdings in die Situation, für eine höhere Programmiersprache einen Compiler zu entwickeln. Aber auch andere "Dinge" sind wie Programme einer Sprache zu analysieren und zu verarbeiten:
Filter-Werkzeuge wie grep, sed oder awk agieren auf einem (zeilenweisen) Strom von Zeichen, analysieren die Zeichen und geben einen Strom von Zeichen aus. Applikationen lesen, untersuchen und schreiben Konfigurationsdateien. Pretty-Printer oder auch Präprozessoren erkennen Programme einer höheren Sprache und geben diese textuell abgeändert wieder aus.
Techniken des Compilerbaus finden daher in der Entwicklung von Software auch weiterhin häufig Verwendung. Allerdings ist die Entwicklung derartiger Software noch immer nicht ohne Probleme: Die Entwicklung von Übersetzer-Software ist von Hand sehr mühsam und fehleranfällig, und die entwickelten Übersetzer sind nur schwer zu erweitern. Es empfiehlt sich daher, Werkzeuge zur Generierung von Software zu verwenden. Diese sind allerdings für Anfänger nicht leicht zu erlernen und fest auf ihre Funktionalität begrenzt. Eine Erweiterung der Werkzeuge ist kaum möglich.
Xerox PARC hat, basierend auf Ideen der Sprache Simula, etwa um 1970 anhand der Programmiersprache Smalltalk die Technik der objekt-orientierten Programmierung erfunden. Objekt-orientierte Programmierung ist das Programmierkonzept der vergangenen Jahre. Viele der heute verwendeten Programmiersprachen sind entweder von Grund auf objekt-orientiert (zum Beispiel Java, C++ oder SmallTalk) oder wurden im Lauf der Zeit mit objekt-orientierten Erweiterungen versehen (zum Beispiel Basic oder Pascal). Selbst manche Skriptsprachen besitzen objekt-orientierte Eigenschaften (zum Beispiel JavaScript oder Python), und selbst nicht objekt-orientierte Sprachen wie C können objekt-orientiert verwendet werden.
Es ist daher naheliegend, die Objekt-Orientierung auf das Problem der Verarbeitung von Sprachen anzuwenden, um zu zeigen, daß ...
... durch den Einsatz der objekt-orientierten Programmierung die Entwicklung von (Teilen von) Compilern vereinfacht werden kann.
... die so entwickelten Werkzeuge und deren Resultate an Mächtigkeit gegenüber den Werkzeugen und Resultaten der gängigen Techniken gewinnen.
... auch objekt-orientiert konzipierte Software des Compilerbaus der Vorteil der leichten Erweiterbarkeit zugute kommt.
... die Wiederverwendung von Klassen und Objekten die Entwicklung und Verwendung von Scannern oder Compilern erleichtert.
... die objekt-orientierte Programmierung ein Automatismus für divide & conquer ist und auch hier gewinnbringend genutzt werden kann. Selbst komplexe Algorithmen des Compilerbaus zerfallen so in kleine, einfache Teilprobleme und sind dadurch in der Lehre für Studierende leicht zu verstehen bzw. sogar selbständig zu entdecken.
... der Einsatz verschiedener typischer Entwurfsmuster der Objekt-Orientierung die Flexibilität und Erweiterbarkeit zum Beispiel eines Scanners oder eines Compilers wesentlich erhöht.
Identifer | oai:union.ndltd.org:uni-osnabrueck.de/oai:repositorium.ub.uni-osnabrueck.de:urn:nbn:de:gbv:700-2002022510 |
Date | 25 February 2002 |
Creators | Kühl, Bernhard |
Contributors | Prof. Dr. Axel-Tobias Schreiner, Prof. Dr. Christoph Polze |
Source Sets | Universität Osnabrück |
Language | German |
Detected Language | German |
Type | doc-type:doctoralThesis |
Format | application/zip, application/pdf |
Rights | http://rightsstatements.org/vocab/InC/1.0/ |
Page generated in 0.0019 seconds