In welcher Programmiersprache wurden gängige C++ Compiler geschrieben?



  • @großbuchstaben
    Du vermischt hier gerade zwei Sachen, je nachdem wie es dir gerade reinpasst.

    1. Ein neuer Compiler für eine existierende Sprache X, der in Sprache X geschrieben ist, für die es bereits bestehende Compiler gibt.
      Das löst man nicht über "Bootstrapping", weil es bescheuert aufwendig wäre.
      Das löst man indem man den neuen Compiler mit einem bestehenden übersetzt, und danach dann mit sich selbst übersetzt.

    2. Ein Compiler für eine neue Sprache, für den es noch überhaupt keine Compiler gibt.
      Hierbei ist die Aufgabe nicht den Compiler auf einer neuen Plattform zum Laufen zu bringen, sondern ihn überhaupt mal zum Laufen zu bringen. Was natürlich schwer ist, wenn der Compiler in "seiner eigenen" Sprache geschrieben ist. Nur hier hast du das von dir angesprochene Henne/Ei Problem.
      Das löst man normalerweise indem man den ersten Compiler für Sprache Y in einer anderen Sprache X schreibt, wobei man für X eben schon fertige Compiler hat.
      Danach schreibt man den Compiler einfach neu in Sprache Y.
      Auch hier wäre es normalerweise ziemlich sinnfrei es über "Bootstrapping" zu machen.

    Schon alleine deswegen, weil sich die Regeln neuer Sprachen oft noch ändern, lange nachdem man die ersten Experimente mit dem ersten Compiler machen möchte. D.h. man müsste den "in seiner eigenen Sprache geschriebenen" Compiler, den man sich über Bootstrapping irgendwie erbastelt hat, permanent an die modifizierten Sprachregeln anpassen.

    Davon abgesehen finde ich es sehr anstrengend mit Leuten zu diskutieren die sich permanent "zurechtbiegen" über was "wir gerade reden", damit es zu ihren Argumenten passt.



  • Hi,

    Turbo C für Atari war der erste AnsiC compiler für Tos. Er war selbst auch in AnsiC und wurde daher zuerst mit Turbo C für Dos übersetzt. So bald der lief hat er sich selbst übersetzt und erzeugte so unter Dos den unter Tos lauffähigen Compiler.

    Mfg Martin



  • Ich habe z.b. für meine HP9000/385 davon abgesehen einen gnu compiler v3.3 erzeugen zu lassen, weil der c-compiler auf dem Rechner kein ANSI C konnte. Ich hätte mich durch eine Masse an Iterationen des gcc arbeiten müssen, was auf einem Computer mit 300MB Festplatte und einer 50MHz CPU wahrscheinlich Jahre bebötigt hätte, falls überhaupt möglich.

    Solange nicht in einem großen Knall alles restted wird haben wir eigentlich kein Problem damit einen C-Compiler auf ein beliebiges Target zu portieren.



  • hustbaer schrieb:

    @großbuchstaben
    Du vermischt hier gerade zwei Sachen, je nachdem wie es dir gerade reinpasst.

    ich habe von Anfang an gesagt, daß ich mich auf "bootstrapping" beziehe und nicht auf porting oder cross-compiling. EOF


  • Mod

    großbuchstaben schrieb:

    hustbaer schrieb:

    @großbuchstaben
    Du vermischt hier gerade zwei Sachen, je nachdem wie es dir gerade reinpasst.

    ich habe von Anfang an gesagt, daß ich mich auf "bootstrapping" beziehe und nicht auf porting oder cross-compiling. EOF

    hustbaer schrieb:

    Davon abgesehen finde ich es sehr anstrengend mit Leuten zu diskutieren die sich permanent "zurechtbiegen" über was "wir gerade reden", damit es zu ihren Argumenten passt.

    Dem schließe ich mich mal voll und ganz an.



  • argumente sind nunmal deutlich überzeugender, wenn sie zum Thema passen LOL und meins war "bootstrapping"



  • großbuchstaben schrieb:

    argumente sind nunmal deutlich überzeugender, wenn sie zum Thema passen LOL und meins war "bootstrapping"

    Die ganze Diskussion laeuft aber so ab:
    Du: Wie macht man bootstrapping auf neuen Plattformen?
    Antwort: Gar nicht. Es gab das historische bootstrapping von C++ und seitdem wird nur noch cross-compiled.
    Du: Ich rede nur von bootstrapping. Wie macht man das denn auf neuen Plattformen?

    Die ganze Diskussion dreht sich im Kreis, weil du wissen willst, wie man etwas in der Praxis macht, aber in der Praxis verwendet man eine Alternative, von der du nichts wissen willst.



  • Marthog schrieb:

    Die ganze Diskussion laeuft aber so ab:
    Du: Wie macht man bootstrapping auf neuen Plattformen?

    lol^2
    tldnr



  • fdjafdjad schrieb:

    Interessant, ich frage mich, warum man Compiler nicht in Assembler schreibt.
    Theoretisch sollte die Hardwarenähe doch für die beste Performance sorgen.

    Assembler ist nur sinnvoll, wenn man ungewöhnliche, hardwarespezifische Features der Maschine nutzen will, die vom Compiler nicht unterstützt werden. Laufzeitmäßig optimieren Compilersprachen i.d.R. besser, als es der gewöhnliche ASM-User könnte.



  • @großbuchstaben
    Wenn du den von SeppJ geposteten Link aufgemacht und die Seite gelesen hättest, dann wüsstest du auch dass deine enge Definition von Bootstrapping nicht mit dem übereinstimmt was andere Leute darunter verstehen.

    Kein praktisch orientierter Mensch fängt bei sowas bei Null an, wenn er nicht muss.


Anmelden zum Antworten