next up previous contents index 6163656769
Next: A.2.2 Was ist ein Up: A.2 Die echten Programmiersprachen Previous: A.2 Die echten Programmiersprachen   Contents   Index

A.2.1 Wie werden Übersetzer entwickelt?

Es sieht so aus, als ob auf diese Weise die eigentliche Programmierung auf diejenigen armen Entwickler übertragen wird, die sich mit der Erstellung eines entsprechenden Übersetzerprogramms herumschlagen müssen. Also müssen diejenigen Entwickler doch Assembler beherrschen? Nein. Die Entwicklung ghet wie folgt:

  1. Der allererste Übersetzer einer älteren Programmiersprache wurde natürlich in Assembler irgendwann einmal geschrieben. Eine derartige ältere Programmiersprache ist zum Beispiel COBOLA.5, aber auch CA.6.
  2. Nehmen wir an, ein solcher Urübersetzer wurde aus einer Assemblerdatei erstellt, um C-Programme zu übersetzen. Geben wir diesem Ur-Übersetzer einen Namen: seine Assemblerdatei heisse urc.asm, die durch den Assembler in das endgültige Übersetzerprogramm urc.exe übertragen wird. Mit diesem Programm können nun C-Quelltexte übersetzt werden (Übersetzer der ersten Generation).
  3. Jetzt schreibt der Entwickler einen neuen, sehr viel leistungsfähigeren Übersetzer (zweite Generation) in reinem C. Nennen wir die Quelldatei ruhig neuc.c A.7.
  4. Nun wird die Quelldatei neuc.c von dem alten Übersetzer urc.exe in ein lauffähiges Programm übertragen. Nennen wir die entstehende Binärdatei ruhig neucVorlaeufig.exe.
  5. Diese erste Version neucVorlaeufig.exe des neuen Übersetzers übersetzt nun seinen eigenen Quellcode (Selbstübersetzung) und erstellt auf diese Weise die viel leistungsfähigere Datei neuc.exe, die die endgültige Version des neuen Übersetzers darstellt.
Selbstübersetzung hiess also der Trick. Aber irgendwann hat ja einmal alles mit Assembler angefangen. Was nun, wenn Sie auf die Idee kommen, eine neue Programmiersprache zu entwickeln; eine Programmiersprache mit dem Namen »EvB«, wozu auch immer diese gut sein soll. Jetzt brauchen Sie anscheinend für den ersten Übersetzer eines EvB-Programms Assemblerkenntnisse, oder?

Nein.

  1. Schreiben Sie einfach Ihren Übersetzer urevb in der Programmiersprache C, die »viel« einfacher als Assembler ist. Dafür haben Sie ja mit neuc bereits einen Übersetzer.
  2. Lassen Sie Ihre Datei urevb.c dann zunächst von neuc in eine vorläufige Version urevb.exe übersetzen.
  3. Schreiben Sie dann die Datei urevb neu und zwar jetzt in der Programmiersprache EvB. Nennen wir diese Datei evb.eurA.8.
  4. Jetzt lassen Sie evb.eur von urevb in die Datei evbVorlaeufig.exe übersetzen. Damit hat urevb seine Aufgabe erledigt und kann entsorgt werden.
  5. Der im Vergleich zu urevb viel leistungsfähigere Übersetzer evbVorlaeufig übersetzt jetzt seinen eigenen Quellcode evb.eur ein weiteres Mal und der Übersetzer evb.exe ist fertig.
Sie haben Assembler nicht gebraucht, sondern lediglich die Kenntnis einer bereits bestehenden Sprache. Für alle Folgeversionen des Übersetzers evb brauchen Sie nur einmal einen Quellcode in reinem EvB schreiben. Für die erste Übersetzung können Sie auf eine bereits bestehende Version zurückgreifen. Von dieser lassen Sie Ihre neue Version in eine vorläufige Binärdatei übersetzen, die dann anschliessend ihren eigenen Quelltext noch einmal übersetzt. So geht es.


next up previous contents index 6163656769
Next: A.2.2 Was ist ein Up: A.2 Die echten Programmiersprachen Previous: A.2 Die echten Programmiersprachen   Contents   Index
Heiko Schroeder 2003-03-19