C++17 ist technisch fertig





  • Ist ja ein übler Teaser-Absatz auf Heise:

    Auf seinem Winter-Treffen hat das ISO-C++-Komitee den Sprachstandard technisch abgeschlossen. Die einzige nennenswerte inhaltliche Neuerung ist die Aufnahme des Typs std::byte.

    Die meinen wohl "die einzige nennenswerte ... die beim letzten Treffen noch hinzugefügt wurde ist...", oder?

    MfG SideWinder


  • Mod

    SideWinder schrieb:

    Ist ja ein übler Teaser-Absatz auf Heise:

    Auf seinem Winter-Treffen hat das ISO-C++-Komitee den Sprachstandard technisch abgeschlossen. Die einzige nennenswerte inhaltliche Neuerung ist die Aufnahme des Typs std::byte.

    Die meinen wohl "die einzige nennenswerte ... die beim letzten Treffen noch hinzugefügt wurde ist...", oder?

    MfG SideWinder

    Sie meinen das einzig nennenswerte seit sie den anderen verlinkten Artikel geschrieben haben, der alle Änderungen (bis dahin) beschreibt.

    Hat mich auch zuerst verwirrt. Schlecht ausgedrückt.



  • SideWinder schrieb:

    Ist ja ein übler Teaser-Absatz auf Heise:

    Auf seinem Winter-Treffen hat das ISO-C++-Komitee den Sprachstandard technisch abgeschlossen. Die einzige nennenswerte inhaltliche Neuerung ist die Aufnahme des Typs std::byte.

    Die meinen wohl "die einzige nennenswerte ... die beim letzten Treffen noch hinzugefügt wurde ist...", oder?

    MfG SideWinder

    Damit die Nerds endlich std::byte statt uint8_t schreiben können. Sieht hat professioneller aus. 😉


  • Mod

    Andromeda schrieb:

    Damit die Nerds endlich std::byte statt uint8_t schreiben können. Sieht hat professioneller aus. 😉

    Das ist vollkommen überhaupt nicht, was std::byte ist.



  • SeppJ schrieb:

    Andromeda schrieb:

    Damit die Nerds endlich std::byte statt uint8_t schreiben können. Sieht hat professioneller aus. 😉

    Das ist vollkommen überhaupt nicht, was std::byte ist.

    Natürlich steckt mehr dahinter: http://en.cppreference.com/w/cpp/types/byte.
    Aber die Tendenz zu immer mehr Komplexität, um der Komplexität und Nerdishness Willen, findest du halt nur bei C++. Das kritisiere ich und deshalb gefällt mit Plain Old C einfach viel besser. Ist noch nicht einmal böse gemeint. 🙂



  • Wenn ich mir das so ansehe:

    struct MyStruct {
      int x;
      double y;
    };
    
    MyStruct h();
    auto [u,v] = h();
    

    https://www.heise.de/developer/artikel/C-17-Kleinvieh-macht-auch-Mist-3324790.html

    Verkommt C++ mehr und mehr zur CISC, ich dagegen bevorzuge RISC.
    Damit komme ich auch ans Ziel, mein Code bleibt dadurch aber noch verständlich und erwartet nicht, dass jeder im Team alle Features der Sprache im FF kennt.
    Das ist wichtig, wenn man neue Mitarbeiter benötigt.

    Deswegen RISC > CISC.

    Ich wäre daher mal für eine Entschlackung von C++.
    Sozusagen ein reduced C++, wo man das wichtigste aus C++ übernimmt, aber dennoch bequem OO programmieren kann.



  • Naja syntactic sugar findet immer mehr Einzug. Macht die alte Syntax obsolet. Wenn man aber schon die alte Syntax nicht nur gelernt sondern auch Jahre benutzt hat, ist es schwer auf die neu Syntax umzusteigen. Das hat nicht mal was mit Doof z tun.



  • Laß' doch alle Features aus, die dir nicht RISC genug sind oder bleib bei C++98/03. Dann hast du ein reduziertes C++. Oder gleich C - schnörkellos und in gewissem Sinn minimalistisch.

    Man muß halt wissen, welche Sprachfeatures man in welchem Projektumfeld einsetzen sollte und welche besser nicht.

    In einem Rapid-Prototyping Umfeld zum Beispiel kann es verheerend sein, alles was möglich ist, so früh wie möglich zu const-en und member functions mit override oder delete zu markieren, wo immer es möglich ist. Wenn dann häufig und tiefgreifend refaktoriert werden muß ... Da kann sogar ein Verzicht auf OOP Vorteile bringen.

    In einem Umfeld, wo von Anfang an nach feststehender Spezifikation entwickelt wird und keine Refaktorings am Klassendesign zu erwarten sind, sieht die Sache anders aus. Dann kann man eher jeden Gewinn an Compile-Time Sicherheit mitnehmen, alle Interna schön hinter feststehenden Interfaces verbergen und alle Sprachfeatures ausschöpfen.



  • Genau das ist der Punkt. C++ ist eine Multiparadigmensprache. Und absolut keiner wird empfehlen jedes Programm objektorientiert, funktional und template-orientiert zu programmieren. Man sollte nur jene Elemente einer Sprache verwenden, welche man benötigt.

    Ich benutze ja auch kein Rosenwasser fürs Gulasch, nur weil dieses im Küchenschrank liegt. :p

    Wenn man aber schon die alte Syntax nicht nur gelernt sondern auch Jahre benutzt hat, ist es schwer auf die neu Syntax umzusteigen.

    Was der Bauer nicht kennt, frisst er nicht. :p



  • Gab's eigentlich einen spezifischen Grund, warum es Module wieder nicht in C++17 geschafft haben?



  • Module sind nicht besonders gut. Deshalb sind sind sie auch nicht sonderlich weit verbreitet.


Anmelden zum Antworten