ist es möglich die Standardlibrary komplett selbst in C++ zu schreiben?



  • Davon bin ich meistens ausgegangen, da C++ Sprachfeatures und Standardbibliothek doch ziemlich exakt trennt.
    Aber wie sieht es mit variadic functions aus? Oder initializer_list im nächsten Standard?



  • JustAnotherNoob schrieb:

    Davon bin ich meistens ausgegangen, da C++ Sprachfeatures und Standardbibliothek doch ziemlich exakt trennt.

    auch mit type_info?
    http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80).aspx

    ich glaub', da bereits ist c++ abgedriftet.



  • std::uncaught_exception() wird man wohl auch nicht so ohne weiteres hinbekommen.
    Ob man diese Dinge aber zur Std. Library rechnen sollte ist IMO fragwürdig.



  • Es gibt einige Sprachfeatures, die Teile der Standardbibliothek voraussetzen. Neben genannten Exceptions und RTTI beispielsweise Mechanismen zur manuellen Speicherverwaltung.

    Dazu kommen viele betriebssystem- und compilerabhängige Dinge in der Standardbibliothek, die nicht in reinem C/C++ geschrieben werden könnten. Assertions, Interaktion mit Dateien oder der Konsole (Streams) sind solche Beispiele.

    hustbaer schrieb:

    Ob man diese Dinge aber zur Std. Library rechnen sollte ist IMO fragwürdig.

    Hm... Wo ziehst du die Grenze? Nicht bei std ?

    Irgendwo gab es hier glaube ich mal einen Thread, in dem jemand viele Sprachmittel aufgelistet hat, die Standardheader brauchen...



  • Sicher nicht bei std, nein 🙂

    Dinge wie uncaught_exception oder typeid/type_info sind ganz klar Sprachefeatures, welche bloss auf die Standard-Library abgebildet sind.
    All das liesse sich genauso durch etliche zusätzliche Operatoren abbilden.
    Anstatt "typeid(x).name()" würde man dann z.B. "typeid_name(x)" schreiben. Wo ist das ein Library-Feature bzw. Teil der Library? IMO eben nicht.

    ----

    Was die nötigen OS-Funktionen etc. angeht: ja, das ist ein Punkt. Wenn die Frage so gemeint war, dann ist die Antwort ganz klar: nö, alles kann man nicht in "reinem C++" programmieren, man braucht immer "externe Funktionen" (wie und wo auch immer diese implementiert sind).



  • hustbaer schrieb:

    Dinge wie uncaught_exception oder typeid/type_info sind ganz klar Sprachefeatures, welche bloss auf die Standard-Library abgebildet sind.
    All das liesse sich genauso durch etliche zusätzliche Operatoren abbilden.
    Anstatt "typeid(x).name()" würde man dann z.B. "typeid_name(x)" schreiben. Wo ist das ein Library-Feature bzw. Teil der Library? IMO eben nicht.

    Da hast du natürlich Recht. Naja, im Grunde genommen kann die Grenze auch nicht ganz klar gezeichnet werden. Ich habe das bisher nicht so genau genommen; mit Standardbibliothek meinte ich die Dinge, die nicht in "reinem" C++ möglich sind, also ohne zusätzliche Header oder Bibliotheken.

    Schlussendlich spielt es aber keine so grosse Rolle, dass C++ hier nicht ganz strikt separiert. Oder gefällt euch der Gedanke nicht, dass für eingebaute Dinge wie RTTI Teile der Standardbibliothek (nach meiner Definition) verwendet werden?



  • Die am CERN haben einen C++ Interpreter geschrieben. Daher ist es wohl moeglich, leider auch aufwendig.



  • knivil schrieb:

    Die am CERN haben einen C++ Interpreter geschrieben. Daher ist es wohl moeglich, leider auch aufwendig.

    Was hat ein C++ Interpreter damit zu tun?



  • Manche hatten doch Bedenken, was das Nachbilden von bestimmten Sachen betrifft, die built-ins des Compilers zu sein scheinen. Wenn man ganz C++ nachbilden kann, dann kann man auch die Standardlibrary nachbilden. Ich sehe zwar nicht den Sinn der Frage (vom OP), aber was solls.



  • knivil schrieb:

    Manche hatten doch Bedenken, was das Nachbilden von bestimmten Sachen betrifft, die built-ins des Compilers zu sein scheinen. Wenn man ganz C++ nachbilden kann, dann kann man solche Sachen auch nachbilden.

    Äh, natürlich muss es in C++ implementierbar sein, denn idR sind Compiler in C++ geschrieben...

    Nur das ist uninteressant. Worum es hier geht ist ob man die Standard Library ohne Compiler Builtins schreiben kann und das geht wegen typeinfo nicht. bzw ist es eben die Frage ob typeinfo ein Sprachfeature oder ein Library Feature ist.

    Dass man C++ Interpreter und Compiler in C++ schreiben kann, sollte als gegeben angenommen werden 😉



  • [quote="Shade Of Mine"]

    knivil schrieb:

    Dass man C++ Interpreter und Compiler in C++ schreiben kann, sollte als gegeben angenommen werden 😉

    Naja, gut, der "erste" war bestimmt in C, weil sonst hätten wir das Henne -> Ei -> Henne Problem :p
    rya.


Log in to reply