Compiler construction bzw. Übersetzerbau ist ein klassischer Bereich der Informatik. Der Bereich Syntaxanalyse ist inzwischen recht stabil und durch die weitgehende Deckung mit XML-Verarbeitung auch wirtschaftlich wichtig. Optimierungen sind auch weitgehend erforscht, allerdings gibt es natürlich immer noch bisschen mehr rauszuholen und es fehlt eine Theorie über die Zusammenhänge zwischen verschiedenen Algorithmen. Damit fehlt noch der abschließende Bereich Codegenerierung. Eine gute Automatisierung ist hier noch nicht gefunden.

Wichtige Compiler-Backends wie der gcc oder die JVM, sind (zumindest größtenteils) manuell programmiert, und viele Leute sehen diesen Ansatz als die bestmögliche Lösung an. Der Ansatz von Codegenerator-Generatoren (Buzzword: Model-Driven Software Development) ist bisher also ein sehr akademisches Thema. Ein Durchbruch auf diesem Gebiet ist aus zwei Gründen erstrebenswert.

1. Prozessorvielfalt

Wenn man primär den Desktop im Blickfeld hat, erscheint die Prozessorauswahl auf x86 bzw. x86-64 beschränkt. Dabei sollte man allerdings beachten, dass x86 nicht nur als eine Architektur betrachtet werden kann. Durch die Vielzahl an Erweiterungen wie den SSE-Befehlssätzen, ergibt sich ein komplexes Bild für Codegeneratoren.

Weiter muss man den Bereich eingebetteter Systeme bedenken. Als Konsument kennt man vielleicht Intels Atom oder ARM, die inzwischen in den Netbook-Markt drängen. Dazu kommen verschiedenste Prozessoren für Handys und ähnliche Kleingeräte. Es werden weltweit bereits 4 Milliarden Mobiltelefone genutzt und Tomi Ahonen prognostiziert weitere 4 Milliarden. Ja, das bedeutet 120% Marktdurchdringung. Europa ist bereits heute bei 115%.

Es werden also voraussichtlich weiterhin neue Prozessoren entwickelt werden und man wird Compiler für diese Architekturen entwickeln oder zumindest anpassen müssen.

2. Entwicklungszeit

Marketing spricht von time-to-market, also wie viel Zeit braucht ein Produkt bis es auf dem Markt ist, so dass man damit Geld verdienen kann. Auch hier ist der Bereich eingebetteter Systeme ein Paradebeispiel. Aus eigener Erfahrung wird man wohl bestätigen, dass man das Handy schneller wechselt als den Computer.

Durch die Benutzung von Codegenerator-Generatoren kann die Aufgabe des Compilerbauers erleichtert werden, so dass Übersetzer für neue Prozessoren schneller verfügbar und stabiler werden. Statt im Compilercode selbst zu arbeiten, werden ein Modell der Zielarchitektur und eine Abbildung zur internen Zwischensprache des Compilers entwickelt. Dieses Modell kann automatisch auf Vollständigkeit und (je nach Definition möglicherweise) auf Korrektheit geprüft werden. Dazu Näheres in meiner Diplomarbeit.

Compiler weiterhin aktuell

Es lässt sich also festhalten, dass (1.) weiterhin neue Compiler erstellt werden, vor allem im mobile/embedded Bereich, und dass (2.) durchaus noch Verbesserungspotential besteht, so dass sich wissenschaftliche Forschung lohnt.

© 2010-01-11
qznc