Warum hat C++ so eine aufwendige Syntax?



  • Ich sehe auch die kleine Größe der Stanardbibliothek (bzw. das Fehlen einiger Sachen, die man immer wieder braucht, also Sockets, Threads, GUI, etc.) als das größte Manko von C++ an und wurde darin sogar vor ein paar Tagen wieder bestätigt. Ich mache im Moment ein Praktikum in einem Forschungszentrum, die für ihr Projekt im Moment C++ einsetzen. Weil es aber keine einheitliche GUI-Bibliothek für C++ gibt, haben die schon verschiedenste ausprobiert, und sind aber zu keinem Schluss gekommen, sodass jetzt in Erwägung gezogen wird, den "Server" in C++ zu schreiben und zur Anzeige einen Client in Java zu schreiben ⚠ . Wenn das kein Zeichen ist.

    Aber die ganze Diskussion hat sich wieder einmal meilenweit von der eigentlichen Frage entfernt. ➡ ⚠ Back to topic ⚠

    Felix



  • Phoemuex schrieb:

    Aber die ganze Diskussion hat sich wieder einmal meilenweit von der eigentlichen Frage entfernt.

    Das täuscht. Wenn ich so einen Threadtitel lese, dann weiß ich im Vorhinein, dass es spätestens auf Seite 3 um Java vs. C++ geht. Insofern stimmt das hier durchaus mit dem erwarteten Thema überein. 😉



  • Gregor schrieb:

    Das täuscht. Wenn ich so einen Threadtitel lese, dann weiß ich im Vorhinein, dass es spätestens auf Seite 2 um Java vs. C++ geht. Insofern stimmt das hier durchaus mit dem erwarteten Thema überein. 😉

    ich sehe hier eigentlich keine c++ vs java diskussion sondern eine diskussion über die mankos von c++. es ist aber schwer über stärken und schwächen zu reden ohne vergleiche heranzuziehen.

    draussen ist es kälter als nachts - ist zwar ein super vergleich. aber wirklich sinn machen tut er nicht, oder?



  • KasF schrieb:

    Undertaker schrieb:

    ja, die template-syntax ist ziemlich gruselig, aber man kann nicht C++ allein die schuld geben. oft sieht man, dass C++ user das ganze noch verschlimmern, indem sie einbuchstabige bezeichner wählen und alles in eine zeile quetschen, wie hier erst geschehen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-188053-and-highlight-is-.html
    wer solchen code schreibt, für den wäre vielleicht APL besser geeignet 😉

    🙄
    Ist mir egal was du denkst. Ich weiß das mein Code-Stil viel besser als von manch anderen hier ist und ich auch zu denen gehöre die sich darüber gedanken machen, wie etwas auszusehen hat.

    soll das ein witz sein? nochmal zur erinnerung:

    static const bool isTrue = (T < N) ? (!(N % T) ? isVol<N,T+1,S+T>::value : isVol<N,T+1,S>::value) : false;
    

    😮



  • Shade Of Mine schrieb:

    warum in aller welt will jemand von einem value type ableiten? die sind nicht zum ableiten gedacht....

    Symmetrie eben.
    Warum zwei "Sorten" von Typen haben ?
    Klar, kann ich als Physiker auch 2 Weltformeln haben - eine für Zwegpinscher und eine für alles Andere - trotzdem finde ich eine Physik mit nur einer für alle irgendwie "schöner".
    Selbst wenn es technische Probleme in der Umsetzung geben sollte für die hier niemandem eine Lösung einfällt, ändert das nichts an einer schöneren Symmetrie.

    Da, wo es mich stört, ist übrigens (wie schon oben erwähnt) nicht im Umfeld der (Laufzeit-)Polymorphie, sondern der generischen Programmierung....

    Gruß,

    Simon2.



  • Undertaker schrieb:

    soll das ein witz sein? nochmal zur erinnerung:

    static const bool isTrue = (T < N) ? (!(N % T) ? isVol<N,T+1,S+T>::value : isVol<N,T+1,S>::value) : false;
    

    😮

    Kannst du Lesen !?

    KasF schrieb:

    Muss auch natürlich zu meiner Verteidigung sagen, dass ich mit TMP am rumspielen gewesen bin und anstatt sich mit Variablennamen rumzuschlagen kann man schnell und einfach Ein-Bustaben Variablen wählen



  • Simon2 schrieb:

    Warum zwei "Sorten" von Typen haben ?

    warum gibt es wohl das sealed oder final keyword?

    von value typen erbt man nunmal nicht. zB std::vector ist ein value type.

    wenn es eine klasse int geben würde, hätte sie final/sealed zu sein. da man eben von ihr nicht erben soll. ergo verstehe ich das ganze nicht.



  • Shade Of Mine schrieb:

    warum gibt es wohl das sealed oder final keyword?

    Gibts (in C++) doch gar nicht 😃 :p

    Felix



  • [quote="Shade Of Mine]
    draussen ist es kälter als nachts - ist zwar ein super vergleich. aber wirklich sinn machen tut er nicht, oder?[/quote]

    Ist der Satz vom Astrofurunkel?



  • KasF schrieb:

    Undertaker schrieb:

    soll das ein witz sein? nochmal zur erinnerung:

    static const bool isTrue = (T < N) ? (!(N % T) ? isVol<N,T+1,S+T>::value : isVol<N,T+1,S>::value) : false;
    

    😮

    Kannst du Lesen !?

    KasF schrieb:

    Muss auch natürlich zu meiner Verteidigung sagen, dass ich mit TMP am rumspielen gewesen bin und anstatt sich mit Variablennamen rumzuschlagen kann man schnell und einfach Ein-Bustaben Variablen wählen

    das erklärt aber nicht, warum du diese verschachtelten conditionals und keine einrückung statt formatiertes if/else verwendest. damit machst du dir das rumspielen nur unnötig schwer...



  • Also meiner bescheidenen Meinung nach ist das sauber und effizient formatiert.
    Alles andere wäre nur eine unnötige verschwendung von Platz etc.



  • Undertaker schrieb:

    KasF schrieb:

    Undertaker schrieb:

    soll das ein witz sein? nochmal zur erinnerung:

    static const bool isTrue = (T < N) ? (!(N % T) ? isVol<N,T+1,S+T>::value : isVol<N,T+1,S>::value) : false;
    

    😮

    Kannst du Lesen !?

    KasF schrieb:

    Muss auch natürlich zu meiner Verteidigung sagen, dass ich mit TMP am rumspielen gewesen bin und anstatt sich mit Variablennamen rumzuschlagen kann man schnell und einfach Ein-Bustaben Variablen wählen

    das erklärt aber nicht, warum du diese verschachtelten conditionals und keine einrückung statt formatiertes if/else verwendest. damit machst du dir das rumspielen nur unnötig schwer...

    if/else kann man bei template meta programmierung gar nicht verwenden.



  • ............... schrieb:

    if/else kann man bei template meta programmierung gar nicht verwenden.

    das kann ich gar nicht glauben 😮



  • War das jetzt ernst gemeint?

    In dem code geht es ja um die deklaration eines static const bool, der ja von if und dergleichen garnicht beeinflusst wrdn kann



  • ..._____ schrieb:

    In dem code geht es ja um die deklaration eines static const bool, der ja von if und dergleichen garnicht beeinflusst wrdn kann

    ja, aber kann man das nicht anders schreiben? z.b. mit einem constructor für die struct, in dem man auch if/else verwenden kann?
    ich kann mir nicht vorstellen, dass es dafür keinen anderen weg gibt, als so einen frickel-code. wenn nicht, dann sind wir ja wieder voll beim thema 😉



  • En Konstruktor, der zur Compile Time ausgeführt wird? 😮



  • Michael E. schrieb:

    En Konstruktor, der zur Compile Time ausgeführt wird? 😮

    das geht nicht?
    habe ich tatsächlich die mächtigkeit der C++ templates so masslos überschätzt? 😮



  • Undertaker schrieb:

    Michael E. schrieb:

    En Konstruktor, der zur Compile Time ausgeführt wird? 😮

    das geht nicht?
    habe ich tatsächlich die mächtigkeit der C++ templates so masslos überschätzt? 😮

    Nein, du hast sie einfach noch nicht verstanden 😉
    Es musste halt schnell gehen, deswegen ist da ein Frickel-Code bei rausgekommen. So nun ist aber jud ...



  • Man beachte bitte auch, dass die Variable vom Typ bool ist..es ist also gar nicht möglich einen eigenen Konstruktor dafür zu schreiben 💡



  • lolz schrieb:

    Man beachte bitte auch, dass die Variable vom Typ bool ist..es ist also gar nicht möglich einen eigenen Konstruktor dafür zu schreiben 💡

    ich dachte man könnte mit einem konstruktor in der struct den 'bool' initialisieren. geht das nun, oder nicht?


Anmelden zum Antworten