Compiler Bootstrapping

Beim Lesen eines Berichts über die PDC 2008 in Los Angeles stiess ich auf ein Schnippsel Information, das ich ganz interessant fand: Für die nächste Version C# 4.0 sei unter anderem geplant, den C#-Compiler (bisher in C++) in C# neu zu schreiben.

Ich habe an der ETH Zürich studiert, wo vor allem dank Niklaus Wirth eine ganze Reihe von Sprachen und zugehörigen Compilern entstanden sind (darunter Pascal, Modula-2 und Oberon), und habe den Eindruck bekommen, dass dabei stets versucht worden ist, so schnell wie möglich zu einem „self-hosting compiler“ zu kommen, d.h. zu einem Compiler, der in der Sprache geschrieben ist, die er compiliert.

Ich war deshalb überrascht zu lesen, dass in der Microsoft-Welt bis heute ein in C++ geschriebener Compiler allen C#-Code compiliert, und hatte sogar gewisse Zweifel, ob das wirklich stimmt – man soll ja nicht alles glauben, was im Internet steht…

Es ist nicht ganz einfach, eine klare Bestätigung zu finden für C++ als Implementations-Sprache des aktuellen C#-Compilers von Microsoft, aber dieser Thread hat mich schliesslich überzeugt.

Die Leute vom Mono-Projekt hatten es einfacher, weil sie den Microsoft-Compiler verwenden konnten, um ihren Compiler von Anfang an in C# zu schreiben, wie man z.B. hier nachlesen kann. Interessant ist, dass offenbar auch ein Microsoft-Mitarbeiter schon recht früh einen C#-Compiler in C# geschrieben hat (er berichtet über dieses Projekt hier), aber offenbar hat das die Compiler-„Hauptlinie“ nicht beeinflusst.

Was hat die Konkurrenz so abgeliefert in Sachen „Compiler-Bootstrapping“? Bei Java hat es nach dem allerersten, noch in C geschriebenen Compiler offenbar auch etwa 3 Jahre gedauert, bis ein in Java selbst geschriebener Compiler zur Verfügung stand, wenn man diesem Artikel glauben darf.

Wie man in der Geschichte des ersten Pascal-Compilers für die CDC 6000 nachlesen kann, wurden sogar schon Compiler von Hand übersetzt, um zu einem self-hosting compiler zu kommen. Das waren noch Zeiten…

Advertisements
Veröffentlicht in 1. Schlagwörter: , . 1 Comment »