Womit wurde der GCC/erste Compiler kompiliert? [was: Was war zuerst da?]



  • Ich stelle mir seit einiger Zeit folgende Frage: Wie konnte der erste GCC kompiliert werden? Wenn zuvor ein anderer Compiler existierte, wie wurde dieser dann kompiliert? Eine typische Huhn/Ei Frage.

    <edit =kingruedi>
    hab mal das Topic verbessert
    wmfrs
    </edit>



  • Herrmann schrieb:

    Ich stelle mir seit einiger Zeit folgende Frage: Wie konnte der erste GCC kompiliert werden? Wenn zuvor ein anderer Compiler existierte, wie wurde dieser dann kompiliert? Eine typische Huhn/Ei Frage.

    den ersten compiler kann mam bequem in assembler schreiben. us, den ersten assembler muß man wohl in maschinensprache schreiben.
    heute macht man's so, daß man zu ner neuen sprache den ersten compiler in java schreibt. die weiteren versionen gehen dann ja in der neuen sprache.



  • Oft wird ein erster Compiler geschrieben, der relativ schlecht ist. In Assembler oder einer anderen Sprache, also was man gerade zur Verfügunghat und schnell geht, da man den ersten Compiler eh wegwirft und dann schreibt man den Compiler, kompiliert ihn mit dem ersten Compiler und kompiliert in dann nochmal mit sich selbst (ist ja klar, der erste Compiler ist natürlich kein meister im optimieren).

    Wobei der erste Compiler auch teilweise Handübersetzungen in Assembler waren/sind.

    Und Assembler hat ja eh den Vorteil, dass man das ohne großen Aufwand in Maschinensprache übertragen kann, da eine Anweisung ja einem Maschinenbefehl entspricht.

    Verschieb ich aber mal nach rudpf da es ja keine Linux Frage ist ➡



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Das Problem nennt sich Bootstrapping.

    Ein wenig infos findest du z.B. hier:
    http://en.wikipedia.org/wiki/Bootstrapping

    Mehr infos findest du sicherlich, wenn du nach bootstrapping und compiler googles´t.

    /Dirk



  • Mit java nen compiler schreiben ?!?! nicht ein bischen langsam?



  • burnner schrieb:

    Mit java nen compiler schreiben ?!?! nicht ein bischen langsam?

    die weitaus meisten prjekte, wo man nen compiler schreibt, geschehen in java. das liegt zwar nicht daran, daß man am besten in java nen compiler schreibt, sondern daß in java die flucht-tendenzen am größten sind, aber dennoch ist es recht üblich, in java einen kleinen compiler zu bauen.



  • ich würde wohl auf c++ zurück greiffen



  • burnner schrieb:

    ich würde wohl auf c++ zurück greiffen

    weil Du mal irgendwo gelesen hast das Java langsam ist und C++ schnell ist? - kompetentes Statement!
    Zum einen redest Du hier Compilezeit und zum anderen soll dieser Hilfcompiler doch nur Deinen ersten Compiler übersetzen. Da wirst Du schon damit klar kommen wenn das ein Paar Minuten oder Stunden länger dauert. Und wenn Du zum implementieren fünf Tage länger brauchst und hundert Fehler mehr machst, dann hat es sich richtig gerechnet.

    Außerdem muss der Compiler selbst ja gar nicht in der Sprache die übersetzt werden soll geschrieben sein. In Bezug auf den GCC, also einen C-compiler, hättest Du Deinen ersten Compiler auch beispielsweise in Fortran schreiben können.

    Falls Deine neue Sprache nicht zu umfangreich ist und sich in formaler Weise nierdeschreiben lässt, kannst Du einen ersten Compiler auch mit Hilfe von CompilerCompilern generieren lassen.



  • volkard schrieb:

    ...sondern daß in java die flucht-tendenzen am größten sind, aber dennoch ist es recht üblich, in java einen kleinen compiler zu bauen.

    Was meinst du mit "Flucht-Tendenzen"?



  • CompilerCompilern
    was ist das?



  • burnner schrieb:

    CompilerCompilern

    was ist das?

    google yacc



  • Trotz des Namens ist yacc nur ein Parsergenerator. Von Programmen, die dir fix und fertig nen Compiler generieren, hab ich noch nichts gehört.


Anmelden zum Antworten