Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Normalisation C++ Discussion :

C++17 est maintenant officialisé


Sujet :

Normalisation C++

  1. #21
    Membre chevronné
    Bjarne Stroustrup n'impose rien du tout, il est naturellement écouté au sujet de l'évolution de C++
    mais il ne faut pas oublier que le C++ est un langage normalisé.
    La compatibilité avec le C++ archaïque et le C (qui n'est pas stricte), a des avantages et des inconvénients
    mais je suis convaincu que c'est l'une des raisons au succès du C++.

    Généralement, les approches bibliothèques sont préférables à l'introduction de nouveaux mots clés ou nouvelles syntaxes.
    Cependant, l'approche bibliothèque est limitée.
    Les nouveaux mots clés et nouvelles syntaxes demandent plus de travail aux compilateurs,
    il font donc de nouvelles versions.
    GCC et Clang (voir liens de mon précédent message) implémentent (une partie de) la norme avant sa sortie officielle.
    Visual Studio a beaucoup progressé "dans le bon sens" depuis C++11.
    (Pour « C++BUILDER », je ne sais pas.)

    GCC et Clang sont multiplateformes, libres, gratuits et open source.
    Certaines versions de Visual Studio sont gratuites.

    Il n'y a aucune vraie excuse pour ne pas mettre les compilateurs à jour (dans la grande majorité des cas).

    C++17 demandera une mise à jour des compilateurs.
    Entre les corrections de bugs, l'amélioration des temps de compilation, le développement de nouvelles techniques d'optimisation,
    les compilateurs n'ont pas besoin d'une nouvelle norme du langage pour proposer des mises à jour.

  2. #22
    Membre du Club
    Ce message n'a pas pu être affiché car il comporte des erreurs.

  3. #23
    Membre confirmé
    Citation Envoyé par GEP007 Voir le message

    Dans ses nombreuses interventions ( voir vidéos youtube ) Bjarne Stroustrup vante cette conservation de la compatibilité ascendante qui rend ce langage unique et qui, toujours selon lui, est primordiale, source de succès et source d'unicité de son langage mais aussi qui est la raison pour laquelle les normes ISOcpp 14482 sont passés de 65 pages à plus de ... 1353 pages... pour C++11.
    Et alors, quel est le problème (hormis un peu plus de travail pour les développeurs de compilateurs) ?
    Par contre, que du code C++98 continue à fonctionner en C++14, c'est plutôt pratique.

    Citation Envoyé par GEP007 Voir le message
    Comme annoncé C++03 n'a pas fait mouche et n'a pratiquement pas été pris en compte par les fournisseurs de compilateurs professionnels :
    La norme C++03 ne changeait pas grand chose à l'utilisation (https://web.archive.org/web/20160206...faq.html#C++03), contrairement aux normes C++11 et C++17, ce qui explique peut-être leur support précoce dans gcc et clang.

    Citation Envoyé par GEP007 Voir le message
    Pourquoi devoir acheter un nouveau C++BUILDER ou un nouveau Visual Studio pour pouvoir intégrer C++11 puis maintenant devoir acheter un nouveau C++BUILDER ou un nouveau Visual Studio pour pouvoir intégrer C++17 ?
    Tu n'es pas obligé de le faire; mais tu peux lire l'article initial pour voir si ça vaut le coup pour toi.
    Et sous-entendre que les normes C++ font marcher le commerce, c'est vraiment n'importe quoi : on en est à 5 normes en 30 ans (c'est à dire rien comparé au nombre de versions de java ou .net, en moins de temps) alors qu'il y a une nouvelle version de VS tous les 2 ou 3 ans pour changer la couleur des icones...

  4. #24
    Membre chevronné
    Citation Envoyé par GEP007 Voir le message
    Et si :
    Voir les Cppcon ... Il est très insistant et clair là dessus !
    Ma réponse portait sur le mot « imposer » (imposer != insister).

  5. #25
    Membre du Club
    Citation Envoyé par Ehonn Voir le message
    GCC et Clang sont multiplateformes, libres, gratuits et open source.
    Pour quelle version de VS ? En tout cas pas VS2010 le plus utilisé professionnellement actuellement !

    Citation Envoyé par Ehonn Voir le message
    Ma réponse portait sur les mot « imposer » (imposer != insister).

    Hoooooo le politicien ? Jouerait-on sur le mots ? Pas grave tant que ce n'est pas le fameux léger mieux...

    Dans mon petit laïus :
    Insister <=> imposer <=> obliger <=> contrôler <=> sinon pas son aval et là ....
    Ce serait une censure totale <=> absolue <=> échec majeur ( sauf pour les hobbyistes ) dans tout mon entourage professionnel mais aussi pour nombre de mes anciens collègues travaillent dans le domaine du Vital et de la sécurité.

    Dans le milieu professionnel :
    Insister <=> manière très polie et douce de nous annoncer avec un tendre sourire ( management oblige ) que nous avons deux options possibles : Oui ! ou Oui ! et parfois un choix multiple ... Nous permettant d'opter exceptionnellement pour Oui sans le ! c'est déjà une forme de liberté.


    Le succès du C++ c'est sa rigueur et sa fiabilité garantie par BS... A ne pas négliger ! car les enjeux sont très grands

    ILLUSTRATION : Pourquoi utilise-t-on Boost ?
    Uniquement parce que Bjarne le trouve ok ... malgré une complexité reprochée qui a été sujet de grandes et nombreuses discutions pour les fault-finding..

    What do you think of Boost?

    Boost is a large and expanding collection of libraries designed to work well with the ISO C++ standard library. It contains many extremely useful and well-engineered libraries, such as asio, filesystem, regex, and thread (apologies for not trying to identify more useful libraries; there are just too many). One library, TR1, contains a good approximation of new C++11 standard library components.
    The Boost libraries have tests suites, have documentation, have been tested on multiple systems, and are peer reviewed.

    I have two problems with Boost, though, which I hope will be dealt with eventually:

    It is too hard to download and use just one Boost library; the libraries seem overly coupled making it hard to pick and choose.
    Some of the libraries are too clever for my taste. Sometimes, generality and simplicity coincide; in Boost, the balance is IMO too often so far towards generality that novices and average users are lost.
    That said, it is usually a really dumb idea to go and reinvent a wheel that boost already offers.
    http://www.stroustrup.com/bs_faq.html#boost

  6. #26
    Membre chevronné
    Pour le support des normes C++ par Visual Studio : https://msdn.microsoft.com/fr-fr/library/hh567368.aspx
    Et voici la version à priori gratuite : https://www.visualstudio.com/fr-fr/products/visual-studio-community-vs.aspx

    Je suis d'accord pour dire que Bjarne Stroustrup est très écouté dans le milieu (à juste titre) mais s'il dirigeait à lui seul les évolutions du langage,
    on aurait les concepts et la surcharge de l'opérateur . en C++17.
    C'est difficile de le faire passer pour le "dictateur" du C++.

  7. #27
    Membre expert
    Citation Envoyé par GEP007 Voir le message
    DITES CELA A BJARNE STROUSTRUP QUI OBLIGE UNE COMPTABILITÉ ASCENDANTE TOTALE
    M. Stroustrup est un des plus fervents défenseurs des nouvelles fonctionnalités du C++, essayer de prendre la compatibilité comme un argument pour la non évolution est quand même assez vide de sens. Que ça te plaise ou non, le langage évolue, les IDE aussi, les usages aussi. Donc même si tu estimes que ça devrait pas être le cas, c'est concrètement ce qui se passe, et si tu ne t'adaptes pas, ta valeur sur le marché du travail va chuter, et ce sera tant pis pour toi. Et c'est vrai dans tous les secteurs de l'informatique, C++ ou autre. Les développeurs qui vivent enfermés dans le passé et leur habitudes sont une vraie plaie pour les projets.
    Find me on github

  8. #28
    Expert éminent sénior
    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #29
    Membre du Club
    Citation Envoyé par Ehonn Voir le message
    Bjarne Stroustrup n'impose rien du tout, il est naturellement écouté au sujet de l'évolution de C++
    Faux :
    C'est ce qui fait la particularité du C++ et de Bjarne Stroustrup : Il ne s'agit pas de computer science à obsolescence rapide mais de Computer Engineering d'électrotechnique dont les composants réseau & embbeded datent et perdurent. Domaines si chers à Bjarne Stroustrup qui a avant tout la fibre d'un Ingénieur.

    Si besoins était :
    1) I’m a founding member of the ISO standards committee for C++ where I serve as the chair of the working group for language evolution.
    Programming : principles and practice using C++ / Bjarne Stroustrup. — Second edition.
    ISBN-13: 978-0-321-99278-9
    ISBN-10: 0-321-99278-4
    Third printing, June 2015

    2) Suivre "l'implication active et parfois déroutante" de Bjarne Stroustrup C17++ le Safe Coding avec Microsoft

  10. #30
    Membre confirmé
    Cette argumentation me parait complètement décousue. Que Stroustrup soit le "chair" d'un groupe de travail ne lui permet pas d'imposer ce qu'il veut dans la norme, envers et contre tous. Au passage, Stroustrup a un doctorat et a beaucoup travaillé comme universitaire donc bon, il doit y avoir plus fibreux comme ingénieur... Quant à l'exemple des composants réseaux, je ne crois pas que le C++ y soit plus adapté que erlang, C ou java.

    Enfin, concernant l'obsolescence rapide de la science face à la technique qui perdure, c'est juste un non-sens. Seule une technique peut devenir obsolète, par exemple suite à l'apparition d'une technique plus efficace. Une science concerne les connaissances; elles peuvent être complétées ou corrigées mais pas devenir obsolètes.

  11. #31
    Rédacteur/Modérateur

    J'évite de trop répondre à ce fil de discussion qui part dans tous les sens de manière que je n'arrive pas à suivre. Je vais donc me limiter aux éléments factuels.

    Bjarne n'est plus le "chair of evolution". Il a cédé sa place depuis quelque temps déjà à Ville Voutilainen pour se concentrer plus sur certaines propositions qui lui tiennent à cœur. Et il n'a pas plus de pouvoir que n'importe quel membre du comité, même s'il a plus d'influence que certains. La preuve en est que la plupart de ses dernières propositions ont été rejetées (ce que je trouve très dommage pour certaines).

    Je n'ai rien compris à la remarque sur le safe coding (ça ressemble à une citation, mais de qui, dans quel contexte ?). Je sais que Bjarne a travaillé avec Microsoft et d'autres sur des moyens de rendre le C++ plus sûr en permettant en particulier à du dataflow intra-procédural d'apporter suffisamment d'informations pour être utile, en enrichissant la sémantique des paramètres des fonctions. Ça s'est traduit pour l'instant au niveau du langage par des propositions sur les span, qui ne sont pas encore acceptées je crois. Et en dehors du standard, par des règles de codage ainsi que par une bibliothèque de support pour ces règles (https://github.com/isocpp/CppCoreGui...eGuidelines.md et https://github.com/Microsoft/GSL). Mais c'est loin d'être le seul sujet sur lequel Microsoft et actif (tout comme les gens de gcc ou de clang, d'ailleurs, à eux 3, ils forment la majorité des participants actifs au standard).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #32
    Membre du Club
    Citation Envoyé par Luc Hermitte Voir le message


    Le standard du premier C++ ISO a 776 pages. Bien plus que 65.
    Tu as tout à fait raison : 776 pages pour C++03 mais je parlais de C++1985 et ses 65 pages...

    Citation Envoyé par JolyLoic Voir le message
    Je n'ai rien compris à la remarque sur le safe coding ça ressemble à une citation.
    Etonnant :
    Le safe coding est la partie révolutionaire de C++11, C++14 et C++17? ( On arrive à du Manage Coding sans utiliser C++/CLI et ses Handle )

    Citation : Oui celle de ... Bjarne Stroutrup lui-même qui, dans ses nombreuses vidéos, donne l'exemple classique d'une condition entraînant un "return" avant la fin du statement qui contient l'instruction de destruction de l'objet...

    Fini les mémoires non vidées avec le safe coding ! il annonce lui-même qu'il collabore avec Microsoft dans cet optique.

  13. #33
    Membre expert
    Si pour toi le "safe coding" est ce qu'on appel RAII/RFID/SBRM¹, cela existe depuis la toute première normalisation...
    Note quand même que la première normalisation ISO date de 1998.

    La partie révolutionnaire de C++11 est surtout la sémantique de déplacement intégré dans le langage.

    ¹ celle-là je la sors de cppreference

  14. #34
    Membre du Club
    Le C++17 apportent de nombreuses nouveautés bienvenues. Il est vrai que le C++11 était un peu bancale sur certains points mais le C++14 est arrivé et a permis de les combler. Cela fait 1 an que je développe mes lib template avec C++17 (en mode béta), et je dois dire que ceux qui parlent de sucre syntaxique uniquement, n'y connaissent pas grand chose, car c'est bien plus que cela. Cette dernière version m'a par exemple permis de réécrire nombre de mes fonctions template avec le mot clé auto au lieu de la déclaration habituelle 'template<typename type1, ...>', alors que dans le corps de la fonction, les types ne sont pas utilisé. Et même quand c'est le cas, decltype est là pour nous sauver la vie

  15. #35
    Responsable 2D/3D/Jeux

    La spécification de la nouvelle version du langage C++ (C++17) est finalisée
    La spécification de la nouvelle version du langage C++ (C++17) est finalisée
    À la dernière minute, le comité a ajouté le type std::byte.

    Le comité de réflexion autour du langage C++ s'est rassemblé une nouvelle fois à Kona (États-Unis) afin de finaliser la nouvelle version du C++. Actuellement, toutes les fonctionnalités sont spécifiées, il ne reste plus que l'approbation à la norme ISO pour que le C++17 soit inscrit dans le marbre. Toutefois, ces derniers correctifs sont mineurs et nous pouvons donc déjà nous pencher sur la nouvelle version.

    Au cours du rassemblement et avant la finalisation du langage, un nouveau type a été introduit : std::byte (P0298R3). Ce type a été conçu spécifiquement pour les accès bruts à la mémoire. Jusqu'à présent, les programmeurs utilisaient char ou encore unsigned char qui sont conçus pour représenter avant tout des caractères. En plus, il est possible d'appliquer des opérations arithmétiques sur les char, ce qui ne convient pas. Bref, un nouveau type, pour permettre un code plus clair et plus de sécurité sur les types.

    En plus du nouveau type std::byte, le C++17 apporte, entre autres :
    • de nouvelles règles de déduction de types pour le mot clé auto sur les listes d'initialisation (N3922) ;
    • l'ajout de if dans les expressions pouvant être résolues à la compilation (P0128R1) ;
    • la déduction des arguments de template pour les classes templates (P0091R3) ;
    • l'utilisation du mot clé auto pour les templates (P0127R1) ;
    • la garantie sur l'omission de la copie (P0135R0) ;
    • if et switch peuvent procéder à une initialisation if (status_code err = fct(); err != SUCCESS) (P0305R0) ;
    • la garantie forward progress (P0296R0) ;
    • les variables inline (P0386R0) ;
    • les liaisons structurées (« Structured Bindings ») (N4659) ;
    • l'affaiblissement de l'ordre d'évaluation fixe pour les expressions : pour enlever toute ambiguïté sur un code tel que f(i++,i) (P0145R2) ;
    • l'allocation dynamique de mémoire pour les données sur alignées (P0035R4) ;
    • la permission d'imbriquer les espaces de nommage et les énumérations : namespace X::Y { ... } (N4230) ;
    • la permission d'avoir des attributs pour les namespace et énumérations (N4266) ;
    • l'ajout des trois attributs [[fallthrough]], [[nodiscard]] et [[maybe_unused]] (N4640) ;
    • l’ajout du support des caractères littéraux au format Unicode 8 bits (u8) (N4287) ;
    • la permission de ne pas mettre un message dans static_assert (N3928) ;
    • le remplacement de std::uncaught_exception par std::uncaught_exceptions (N4259) ;
    • l'ajout des types std::variant et std::any (N4659 et P0220R1) ;
    • une interface pour les systèmes de fichiers (N3505) ;
    • la parallélisation des algorithmes de la STL (P0024R2) ;
    • les lambdas constexpr (P0170r1) ;
    • la généralisation des boucles sur ensemble (P0184R0) ;
    • expressions de réductions (« fold expressions ») (N4295) ;
    • la capture de *this dans les lambdas (P0018R3) ;
    • les valeurs littérales hexadécimales pour les nombres à virgule flottante (P0245R1) ;
    • résolution d'un manque de précision sur les conversions de qualificatifs pour les pointeurs pointant sur des tableaux de pointeurs (N4261) ;
    • ajout des spécifications d'exceptions au système de typage (P0012R1) ;
    • ajout de __has_include permettant de demande au préprocesseur si un fichier d'entête est disponible (P006R1) ;
    • suppression de l'opérateur ++ pour les booléens (P0002R1) ;
    • la suppression des trigraphs (N4086) ;
    • la suppression du mot-clé register (P0001R1) ;
    • la suppression de std::auto_ptr et std::random_shuffle (N4190) ;
    • ....


    Évidemment, le comité continue son travail sur les fonctionnalités qui n'ont pas pu être intégrées dans C++17. Ainsi, on peut espérer les voir dans C++20 :
    • les concepts ;
    • les ranges ;
    • les modules ;
    • le réseau ;
    • les coroutines ;
    • la réflexion ;
    • les graphismes 2D (dans la lignée de cairo).


    Du côté des compilateurs, le support complet de C++17 devrait bientôt arriver. Par exemple, GCC7 est en phase de stabilisation et devrait donc être bientôt disponible. De même pour clang 5.


    Votre opinion

    Avez-vous déjà commencé des développements avec C++17 ? Quelles nouvelles fonctionnalités utilisez-vous ?


    Source

    L'annonce de Herb Sutter
    Les fonctionnalités de C++17
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #36
    Membre éclairé
    @LittleWhite: pas cool, de faire des poissons d'avril pareils
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  17. #37
    Chroniqueur Actualités

    De C++14 à C++17, qu’est-ce qui a changé avec la nouvelle version du langage C++ ?
    De C++14 à C++17, qu’est-ce qui a changé avec la nouvelle version du langage C++ ?
    un document de la Standard C++ Foundation

    Comme nous l’avons annoncé il y a quelques jours, la spécification de la nouvelle version du langage C++ (C++17) est désormais finalisée, attendant l'approbation à la norme ISO. Si la publication du prochain standard pour le langage C++ sera faite plus tard cette année, on connait déjà les changements qui ont été opérés par rapport à C++14, le standard actuel.

    La Standard C++ Foundation, une organisation chargée de la promotion de standards C++, a donc publié un document qui énumère tous les changements importants introduits depuis la publication de C++14. Le document présente entre autres les fonctionnalités supprimées ou obsolètes, les nouvelles fonctionnalités de base du langage, les nouvelles bibliothèques et les modifications aux fonctionnalités existantes.

    Changements officiels de C++14 à C++17


    Votre opinion

    Pensez-vous que le C++ moderne va dans la bonne direction ou pas ?
    Quelle version de C++ utilisez-vous actuellement pour vos développements ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  18. #38
    Rédacteur/Modérateur

    Une autre présentation, plus orientée exemples : https://github.com/tvaneerd/cpp17_in.../ALL_IN_ONE.md
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  19. #39
    Candidat au Club
    Vraiment ces cool.
    D'avoir ajouter certaines fonctionnalités sur ce Langage à Haute Gamme pour les développeurs.

  20. #40
    Modérateur

    Du 15 au 20 mai a eu lieu la BoostCon intitulée « C++Now 2017 » dans laquelle on peut citer :


    C++Now 2017: “C++17 Features” par Bryce Lelbach

    qui présente de nombreuses nouveautés du langage et de la bibliothèque standard introduites par la norme C++17, ainsi que :


    C++Now 2017: “(Ab)using C++17” par Jason Turner

    qui montre des exemples d'application.

    Retrouvez :

    toutes les autres présentations sur la chaîne YouTube BoostCon ;
    les slides rattachés sur GitHub ;
    la chaîne YouTube de Jason Turner qui publie chaque semaine une courte présentation d'une fonctionnalité (nouvelle ou méconnue) du C++.
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !