IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

C++ 20 : la spécification de la nouvelle version du langage C++ est finalisée
Un tour d'horizon des nouveautés apportées

Le , par Bill Fassinou

91PARTAGES

37  0 
Mise à jour du 07/09/2020 : Samedi dernier, le projet de normes ISO/IEC 14882:2020 a été approuvé en tant que dernière mise à jour majeure du langage de programmation C ++. Le vote sur le DIS (Draft International Standard) du C++20 s'est achevé le vendredi, et il a été adopté à l'unanimité. L'approbation du C ++ 20 a été unanime et constitue une mise à jour très importante par rapport à C ++ 17. Cela signifie que le C++20 a maintenant reçu l'approbation technique finale et qu'il a été soumis au vote de l'ISO.

Il sera officiellement publié vers la fin de 2020, après un dernier cycle de travail éditorial de l'ISO. Même s'il arrivait qu'il soit publié en 2021, il sera toujours appelé C++20, car le WG21 a terminé ses travaux techniques en février. En résumé, C ++ 20 apporte les Modules, les Coroutines, l’ajout de l’opérateur ⇔ à la bibliothèque standard, les Concepts et autres.


Comme annoncé en février dernier, le comité ISO C++ 20 a tenu sa réunion d’été la semaine passée à Cologne, en Allemagne. Le compte rendu de la réunion indique que les travaux sont achevés pour le C++ 20 et un brouillon sera diffusé avant la fin de l’été. Au cours de la réunion, quelques ajouts et modifications ont été apportés au brouillon du C++ 20 présenté en février dernier par le comité. La norme internationale C++ 20 est prévue pour être publiée officiellement en février 2020 à Prague.

Au cours de la précédente réunion de février, le comité ISO C++ 20 avait ajouté plusieurs nouvelles fonctionnalités au langage. Parmi ces fonctionnalités figurent les Coroutines et les Modules. Les Modules constituent une nouvelle alternative aux fichiers d’entête et apportent un certain nombre d’améliorations clés notamment en isolant les effets des macros et en permettant des générations évolutives. Cette fonctionnalité permet aux utilisateurs du langage de définir une limite d’encapsulation nommée. Les Coroutines sont des fonctions qui peuvent suspendre et reprendre leur exécution tout en conservant leur état.


À l’issue de la réunion de la semaine passée, il a été rapporté que quelques ajouts et modifications ont de nouveau été apportés à la spécification C++ 20. Selon le compte rendu présenté sur Reddit, de nouvelles fonctionnalités ont été ajoutées et de nombreuses modifications ont également été apportées. Parmi les nouveaux ajouts, on peut citer std::format, l’intégration de l’opérateur ⇔ dans la bibliothèque standard du langage, etc., et les conteneurs constexpr. Herb Sutter, le président de comité de normalisation de la norme C++ 20, a apporté plus d’explications sur ces nouveaux ajouts :

std::format

std::format ajoute la prise en charge des chaînes de format à la bibliothèque standard C++, y compris pour les paramètres de type sécurisé et de position. Si vous connaissez les chaînes au format Boost.Format ou POSIX, ou même simplement printf, vous saurez exactement de quoi il s'agit. Selon lui, std::format donne le meilleur de printf (commodité) et le meilleur de iostreams (sécurité et extensibilité des iostreams), mais il ne se limite pas à iostreams. Il vous permet également de formater n’importe quelle chaîne. « Cela fait longtemps que j'attends cela, de sorte que je n'aurai plus jamais à utiliser l’entête iomanip », a-t-il déclaré à propos.

Stop Token and Joining Thread

Sutter a expliqué que cette fonctionnalité introduit deux nouveaux concepts. Premièrement, il s’agit d’un type de thread dont le destructeur se joint implicitement si vous ne vous êtes pas encore connecté ou détaché. Et deuxièmement, mais plus important encore, cette fonctionnalité constitue un mécanisme d'annulation composable général dans la bibliothèque standard que tous les types peuvent utiliser. Ce mécanisme porte le nom de stop_token.

Les conteneurs constexpr

Les conteneurs constexpr suivants ont été ajoutés à la norme C++ 20 : constexpr INVOKE, constexpr std::vector et constexpr std::string. Selon Sutter, cela signifie que beaucoup de code C++ ordinaire peut être exécuté à la compilation, y compris même les conteneurs vectoriels et chaînes dynamiques standard. « C’était quelque chose qui aurait été difficile à imaginer il y a quelques années à peine, mais cela montre de plus en plus que nous sommes sur un chemin où nous pouvons exécuter du code C ++ simple au moment de la compilation au lieu d’essayer d’exprimer ces calculs sous forme de métaprogrammes de modèle », a-t-il précisé à propos de ces ajouts.

L’utilisation des énumérations a été revue

Selon les explications sur la fonctionnalité, les énumérations dont il s'agit ici ne sont pas des classes. Ils sont plus proches des espaces de noms comprenant des variables en ligne. La syntaxe familière qui fonctionne pour les espaces de noms devrait donc également leur être appliquée, d’une manière ou d’une autre. Comme ils sont fermés, petits et ne contiennent pas de jeux de surcharge, l’on peut mieux faire que la directive using pour les espaces de noms et obtenir les identifiants dans la portée locale. L'introduction de cette fonctionnalité permettra de mieux nommer les énumérations.

Actuellement, les énumérations sont nommées avec un identifiant aussi court que possible, souvent jusqu'à l'absurdité, lorsqu'ils sont réduits à des abréviations totalement non descriptives. Avec cette fonctionnalité, les identifiants deviennent disponibles pour une recherche non qualifiée dans des contextes locaux où leur source est évidente, ce qui permet à l'utilisateur de l'énumération de contrôler le style de recherche au lieu de créer une sémantique de recherche dans le type de l'énumération.

Certaines modifications ont également été apportées au cours de la réunion de la semaine passée. Les Contrats ont été transférés de C++ 20 à un autre groupe d’étude. Selon Sutter, lors de cette réunion, il est apparu clairement que le comité n’a pas encore fini de concevoir les Contrats à temps pour C ++ 20. « Lorsque nous avions adopté la fonctionnalité il y a un an, nous pensions qu'elle était prête pour la norme, mais depuis lors, nous avons découvert des désaccords de conception persistants et des préoccupations que nous ne pouvions pas résoudre suffisamment pour obtenir un consensus (accord général sans objections soutenues). Les principaux soumissionnaires ont unanimement convenu que la bonne chose à faire est de différer sa publication », a-t-il déclaré.

Cependant, les Contrats sont une caractéristique importante, et les travaux sur celles-ci n’arrêtent pas, mais continuent. « J'espère que lors des prochaines réunions, nous ferrons de solides progrès dans ce domaine important », a-t-il expliqué à propos. Les composantes de la norme C++ 20 sont à présent connues. Un brouillon de comité sera publié dans les prochaines semaines et la publication officielle du C++ 20 est prévue pour le mois de février 2020. Voici une liste non exhaustive des fonctionnalités notables qui sont attendues pour C++ 20 :

  • les Modules ;
  • les Coroutines ;
  • l’ajout de l’opérateur ⇔ à la bibliothèque standard ;
  • les Concepts ;
  • les Ranges ;
  • les conteneurs constexpr ;
  • les macros de test de fonctionnalité ;
  • std::span ;
  • std::format ;
  • std::atomic_ref ;
  • etc.


Sources : Rapport du Comité C++, Herb Sutter

Et vous ?

Que pensez-vous des fonctionnalités apportées à C++ 20 ?
Quelles autres fonctionnalités auriez-vous souhaité avoir pour le C++ 20 ?

Voir aussi

La conception de C++ 20 est achevée et le premier brouillon sera publié en juillet 2019. Les Modules et les Coroutines y sont présents

La réunion d'automne du comité WG21 sur l'ajout de fonctionnalités au C ++ 20 est achevée. Voici quelques nouveautés introduites au langage

La spécification de la nouvelle version du langage C++ (C++17) est finalisée. Quelles sont les nouveautés introduites ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de kilroyFR
Membre éprouvé https://www.developpez.com
Le 23/07/2019 à 9:35
Citation Envoyé par redcurve Voir le message
J'ai des tas d'exemple comme ça, on forme les gens à l'arrache en leur faisant croire que tout est magique...
Tout le problème vient du fait que les gens sont formés sur de la syntaxe (enfin le gros de la syntaxe les subtilités osef... sauf que ça fait toute la différence), et pas sur la technologie qui est .NET qui elle même nécessite d'explorer C/C++.
Oui alors la je plussoie totalement; on a des devs qui font le focus sur la maitrise des syntaxes et autre recherche de COMPACITE d'ecriture de code (ecrire en 4 lignes ce que tu ecris en 5) mais sur certaines mecaniques (garbage collector etc) ben on se retrouve devant des pbs qu'ils ne comprennent pas - le coté magique (sur equipements embarqués notamment avec fuite memoire ou objets dechargés au mauvais moment).
Bizarrement j'ai toujours trouvé plus interessant de resoudre des problemes "techniques" ou d'algorithmie que d'essayer de faire du code facon poupees russes ou la maintenance est terrible (mais le code compact, argument mis en avant - bref des gens qui allouent des Go de memoire mais essaient de gratter quelques lignes de code - j'avoue que ca m'echappe).
10  0 
Avatar de boumchalet
Nouveau membre du Club https://www.developpez.com
Le 11/09/2020 à 10:21
Bonjour,
Pour moi, après avoir travaillé avec des langage multiples (java, c#, Rust, Basic, Pyhton, ... plus de 40), c++ reste à une place particulière :
- c'est seule langage qui n'impose pas de limite entre les concepts hard et les abstractions de hauts niveaux, mais cela peut avoir un coût élevé (formation, investissement) => Il existe énormément de paradigmes de programmation c++, deux programmeurs c++ peuvent ne pas se comprendre.
- Bien qu’il soit possible d’intégrer des programmeurs de langages managés dans un projets c++, il est nécessaire de leur fixer un cadre strict (par exemple interdiction du new et delete)
- Beaucoup des langages qui ont limité les concepts pour simplifier la programmation, ils sont aujourd’hui engagés dans des impasses évolutives, par exemple : java . Ce n’est pas le cas du c++, ce qui lui permet d’évoluer vers la simplification sans coût supplémentaire.
Conclusion :
Il reste encore beaucoup de chose à faire en c++, il n’a pas atteint ces limites et reste un langage d’avenir pour manipuler notre monde. Il n’a pas d’équivalence.
9  0 
Avatar de redcurve
Inactif https://www.developpez.com
Le 23/07/2019 à 8:52
Citation Envoyé par kilroyFR Voir le message
ok MERCI.

effectivement, autant de domaines qu'on n'utilise pas ou pour lesquels on utilise des composants deja existants (ex : cpprestsdk).
On privilegie des briques existantes avant de recoder un serveur web maison etc.
On a des devs qui font principalement des applis de gestion CRUD (type webapi/mvc) en archi micro services et pas des logiciels necessitant un background technique plus important donc loin de ce genre de composants (plus des devs qui font du C# comme on programmait sous visual basic cad programmation pour les noobs).
Donc effectivement C++ est hors de portee pour eux; ils ne comprendraient meme pas les notions de base.
C# est un langage assez fin, dernièrement j'ai été surpris qu'un type avec autant d'expérience que moi me demande à quoi correspond le mot clef "in" que j'avais utilisé dans mon programme. Je lui explique qu'il s'agit de "const MyType& arg" et la je l'ai perdu... En fait n'ayant jamais touché C/C++ il était pas capable de comprendre le concept ^^ . J'ai des tas d'exemple comme ça, on forme les gens à l'arrache en leur faisant croire que tout est magique mais C# ne l'est pas et on se retrouve avec des personnes incapable de comprendre ce qu'il se passe dans la machine quand il font par exemple "mytring += otherstring" ou encore qu'un événement est une liste de pointeurs de fonction et que ça n'est pas magiquement supprimé par le GC.

Tout le problème vient du fait que les gens sont formés sur de la syntaxe (enfin le gros de la syntaxe les subtilités osef... sauf que ça fait toute la différence), et pas sur la technologie qui est .NET qui elle même nécessite d'explorer C/C++.

C# reste de loin mon langage préféré même si je trouve C++ cool, en ce moment je dev un pilote linux en C++ et une couche d'intérop .NetCore qui va avec du fun .
9  1 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 23/07/2019 à 17:36
Citation Envoyé par kilroyFR  Voir le message
Je reste toujours surpris ces dernieres années de voir le C++ qui revient au gout du jour. En ayant fait pendant 25 ans je n'ai pourtant pu constater que son desinteret de la part des nouveaux devs.
Les nouveaux devs (dans ma boite en tout cas) ne voient que par M$ et C# (au point de l'imposer comme unique langage a tout le monde !).
Ils n'ont aucune culture informatique et ne voient que le C++ comme quelque chose de compliqué.
On est en train de reecrire des applis C++ existantes eprouvées en leur version C# (je n'ai toujours pas compris l'interet).

Du coup dans quels types d'applications le C++ moderne a t il sa place en 2019 ?
J'ai bien essayé de pousser encore et encore (pour les perfs, maitrise memoire etc) mais j'ai du jeter l'eponge pour na pas passer pour le refractaire au changement (sur nos applis API Web, c'est principalement JS +C#).
On ne fait plus d'applis client lourd donc le coté multiplatforme est porté principalement par des applis web (sous Windows car on a des layatolas M$ qui pensent, respirent, vivent M$ exclusivement).

C'est le problème avec les langages plus " " "récents" " " (je mets des guillemets à foison car je pense à Java et à C# qui sont loin d'être récents ). À les écouter le C++ a ses limites et ils sont là pour les résoudre. Mais ils finissent par singer le C++ d'une manière où d'une autre. Prenons l'exemple de l'héritage. "L'héritage c'est mal, surtout quand il est multiple." Soit. Mais que proposent des langages comme Java ou C# pour pallier à cela ? Des concepts alambiqués d'interfaces et de traits (pas forcément en Java et en C# pour ces derniers), qui quelque part reviennent à faire de l'héritage multiple sans en dire le nom. Idem avec l'abus des références pour ne pas prononcer le gros mot "pointeur", surtout quand t'as une référence null à gérer comme ton pointeur NULL en C/C++. En face de tout ça t'as le C++ qui est franc du collier au possible. Il veut faire de l'héritage multiple ? Il en fait et il le dit clairement, sans enfumer son monde avec des traits et des interfaces. Il veut utiliser des pointeurs ? Il les utilise ! Les références ça existe en C++ mais l'usage est légèrement différent. Les jeunes générations sont bercées par les "limites du C++" dont Java, C# et toute la clique viennent nous sauver. Alors qu'en fait ils font comme en C++ mais sans en dire le nom, afin de ne surtout pas dévoiler la supercherie. Une querelle des anciens et des modernes, en quelque sorte.

Je ne dis pas que le C++ est parfait. Mais il n'y a pas grand chose en POO Java ou C# que tu ne puisses pas faire tout aussi bien (voire mieux) en bon vieux C++ (hors côté WORA). Au contraire les autres seraient même plus que limités par rapport à C++. Je pense entre autres à l'héritage protégé. Si je dois en faire alors la question de l'utilisation du C++ pour faire ce que j'ai à faire ne se pose même pas.

Citation Envoyé par redcurve  Voir le message
C# est un excellent langage qui sert de base pour tout un tas de trucs dans C++ 11+ .

De plus personne ne fait de client lourd depuis bien 10 ans, trop chiant à déployer etc. Tout est fait en web et ce même quand ce n'est pas forcément adapté et je ne pense pas que MS ait quelque chose à voir la dedans ils ont d'excellentes techno client lourd.

C++ sera a un moment donné remplacé par Rust, Go ou un truc du genre, après la structuration de C++ n'aide pas non plus pas de modules etc. une vraie chiasse à ce niveau après bon ça reste compréhensible à l'époque fallait pouvoir embarquer les dev cobol, c etc. Donc je ne vais pas trop lui taper dessus pour ça et puis ça a été ajouté donc .

Le truc qui m'intéresse le plus à porter de C++ vers dotnet ce sont les templates variadrique, j'attend la sortie de .Net 5 pour me lancer dans des modifs du compilateur et faire une spec etc. pour implémenter cela sur .Net.

Rust n'a pas vocation à remplacer le C++, ne serait-ce que parce qu'il ne fait pas de POO, du moins pas ouvertement et dans les règles de l'art. Il n'y a ni classes ni héritage ni surcharges en Rust, mais seulement des modificateurs de visibilité (encapsulation) et de l'implémentation de traits (tiens donc !). Va faire correctement de la POO sans ça. Rust est plus à même de remplacer le C que le C++ car il est plus proche d'un "C with classes" intermédiaire entre C et C++ que du C++.

Pour le reste C++ aurait donc avant tout besoin de sucre syntaxique. "C++ n'a pas les interfaces", mais quelle est la différence entre une interface et une classe abstraite composée exclusivement de méthodes virtuelles pures et publiques (et d'attributs publiques statiques) ? Pourquoi l'une plutôt que l'autre, surtout dans un langage tolérant l'héritage multiple ?

Citation Envoyé par redcurve  Voir le message
C# est un langage assez fin, dernièrement j'ai été surpris qu'un type avec autant d'expérience que moi me demande à quoi correspond le mot clef "in" que j'avais utilisé dans mon programme. Je lui explique qu'il s'agit de "const MyType& arg" et la je l'ai perdu... En fait n'ayant jamais touché C/C++ il était pas capable de comprendre le concept ^^ . J'ai des tas d'exemple comme ça, on forme les gens à l'arrache en leur faisant croire que tout est magique mais C# ne l'est pas et on se retrouve avec des personnes incapable de comprendre ce qu'il se passe dans la machine quand il font par exemple "mytring += otherstring" ou encore qu'un événement est une liste de pointeurs de fonction et que ça n'est pas magiquement supprimé par le GC.

Tout le problème vient du fait que les gens sont formés sur de la syntaxe (enfin le gros de la syntaxe les subtilités osef... sauf que ça fait toute la différence), et pas sur la technologie qui est .NET qui elle même nécessite d'explorer C/C++.

C# reste de loin mon langage préféré même si je trouve C++ cool, en ce moment je dev un pilote linux en C++ et une couche d'intérop .NetCore qui va avec du fun .

+1. Un langage c'est avant tout un tas de concepts implémentés avec de la syntaxe. Si t'as les concepts généraux alors tu sauras retrouver tes petits peu importe le langage. Tu seras dans tes pantoufles à peu près partout. Une boucle conditionnelle reste une boucle conditionnelle, que ce soit en C, C++, Java, C#, Kotlin, Python, PHP, Ruby, Swift, Go, Rust, VB(.NET), JavaScript... Ce n'est pas parce qu'on dit switch en C++ mais match en Rust que les concepts derrière en sont fondamentalement différents. Il peut y avoir des subtilités, celles de l'implémentation du concept dans le langage, mais au fond c'est la même chose.

Le problème avec les syntaxes est que les gros langages ont presque tous ("presque" parce que Python) des syntaxes proches, fortement inspirées de celle du C. Du coup tu peux aller encore plus vite donc encore plus mal sur ce point.

Citation Envoyé par onilink_  Voir le message
Quand à Qt si le projet est open source la licence est gratuite non?
Si c'est pour faire des outils, même a usage pro, c'est pas forcement un problème.
En tout cas ça a l'air difficile de trouver des prix, mais à priori ils ont un truc flexible en fonction du revenu de la boite.
Et vu l'efficacité du framework ça peut valoir le coup...

Qt est disponible sous licence LGPL. Donc à moins de modifier Qt ou de compiler en statique tu peux utiliser la version gratuite et open source de Qt dans un projet pro. Certains outils intéressants comme le Qt Quick Compiler (pour compiler tes fichiers QML et ainsi gagner en performance) sont désormais disponibles dans la version gratuite. La version gratuite de Qt peut convenir à beaucoup de projets pro, enfin je pense.

Le comparatif est disponible ici : https://www.qt.io/download
6  0 
Avatar de onilink_
Membre émérite https://www.developpez.com
Le 07/09/2020 à 18:52
Citation Envoyé par zoonel Voir le message
Moi je suis vite passé au C# Après mes études. Justement parce que je trouve que c'est un bon langage, élégant etc... Bref en fait les mêmes arguments que toi mais pour C# au lieu de C++. Et durant mes études j'ai appris à programmer avec c++ , et j'ai du faire du c, du java et accessoirement on a également vu toute une floppée de languages "exotiques" (haskell, etc...).
Alors ça fait longtemps que j'ai plus fais de c++ et je m’intéresse pas trop aux nouveautés même si je suis l'actualité, mais quand je vois les examples de code rien que la synthaxe me fait peur et je la trouve pas élégante pour un sou.
Néanmoins ça m’intéresse d'avoir un avis de quelqu'un qui aime le c++ et donc en quoi le trouve-tu élégant, bon, etc... ?

J'essaie de me tenir vaguement au courant sur ce qui peut se faire comme langage mais le nouveau c++ ne m'a jamais attiré, seul Rust récemment a attiré mon attention et j'ai commencé à lire le bouquin, du coup je pense complètement laisser tomber le c++ (ou du moins l'espoir que j'avais de m'y (re)mettre). (Ça me fait penser à une vidéo que j'ai vue récemment sur un top top10 des "jeux de société qu'on aurait voulu aimé", je pense qui si c'était une vidéo sur les langages de programmation alors c++ arriverait en tête pour moi. J'aurais vraiment voulu l'aimer mais non j'y arrive pas)
Pour être honnête, je pense que si je devais reprendre le dev de zéro en 2020, j'apprendrais probablement plus Rust que C++.
J'aime énormément la philosophie de C++ et le langage en lui même mais il y a quand même un point noir sur le tableau: il reste trop de choses de C et C++98 (parce qu'il faut garder une retro compatibilité, Rust n'a pas ce soucis, étant jeune) qui rendent C++ bien moins moderne que ce qu'il pourrait être.

Pour ce que j'aime du C++ moderne:
- le langage n'est pas explicitement désigné en prenant les utilisateurs pour des cons. Des choses comme les pointeurs ne sont pas cachés sous un autre nom avec moins de features juste parce que dans l'imaginaire collectif "pointeur == compliqué" (ce qui est faux bien entendu).
- sur le même principe il n'y a pas de GC, mais des pointeurs intelligents, qui IMO sont beaucoup plus pratiques (et applicables dans d'autres domaines que juste gérer la mémoire), mais surtout cela permet d'avoir une durée de vie définie sur nos objets, et la construction/destruction est bien plus simple au final.
- une grosse partie de la philosophie de C++ c'est "ce qu'on peut faire à la compilation, on le fait a la compilation", et ça permet d'avoir des objets pratiques comme unique_ptr qui vont avoir absolument zéro overhead, mais en plus ça permet aussi de voir pas mal d'erreurs a la compilation, et ne pas attendre que ça pète au runtime. Et sur ce point Rust a l'air vraiment génial avec son borrow checker.
- je trouve tout le principe des templates et ce que l'on peut en faire complètement génial. Je sais pas si tu as déjà vu les patterns genre CRTP ou encore le polymorphisme statique, je trouve juste ça très élégant en plus d'être pratique (et très performant). Les templates c'est vraiment très puissant (il y a qu'a voir la lib standard, et boost), et on à rarement vu autant de possibilités dans d'autres langages, même si j'ai cru comprendre qu'en Rust il y avait de quoi faire des choses équivalentes, peut être plus facilement.
- chaque nouveau standard nous amène des outils incroyables, toujours plus puissants, et qui réparent petit à petit tous les problèmes majeurs du langage

Après y a aussi tous les trucs obvious qui font que personnellement, je préfère un langage natif à un langage qui tourne dans une VM.
On comprend mieux ce qu'on manipule, ça consomme moins, ça permet d'utiliser des outils plus "standards"... et en C++ on profite quand même de tout l'écosystème qu'il y a déjà autour de C (outils, bibliothèques), d'autant que moi je suis sous Linux et l'OS est vraiment très adapté à ce niveau.

Néanmoins, C++ n'est vraiment pas un langage safe (même si on suit beaucoup de règles, comme les C++ core guideline etc qui permettent de grandement limiter la casse), et je considère perso que ce n'est pas du tout un bon choix dans tout domaine qui nécessite du code vraiment safe (genre serveurs). Moi je développe un jeu donc ça ne me pose pas trop de problèmes, mais dans certains domaines il faut vraiment oublier le C++.

Bon, j'oublie probablement plein de choses, mais ça te permettra de voir mon ressentis général sur la chose je pense

Par contre j'ajouterais que savoir programmer en C++, ça ne se fait pas en quelques années d'études. J'ai fait genre 4 ans de C++ a la fac, et mon niveau était vraiment lamentable (et celui de mes profs encore pire) malgré le fait que je pratiquais pas mal (j'avais l'impression d'être bon, mais la suite m'a montré que non).
Par contre quand je suis allé bosser, et que j'ai rencontré des personnes très compétentes, dont une personne qui maîtrise vraiment le langage, ça a changé beaucoup de choses et mon niveau a été propulsé d'un coup, bien plus en très peu de temps qu'en toutes mes années d'étude cumulées.
Et je pense que c'est le même problème pour la plupart des langages quand on étudie, mais a mon avis C++ est l'un des pires à ce niveau, car tout le monde pense savoir le connaître ou le maîtriser... sans savoir en faire, en fait.
C++ est un langage difficile a apprendre en profondeur, mais pas du tout pour les raisons que la plupart des étudiants pensent (pointeurs, gestion de la mémoire, bas niveau).
5  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 05/01/2021 à 16:17
Citation Envoyé par lefjuls Voir le message
En relisant la discussion je pense comprendre ce qui me gêne. Je suis certain qu'il y a une bonne raison à l'ajout de toutes ces fonctionnalités, mais est-ce qu'un langage informatique à vocation à inclure toutes les fonctionnalités possibles ?
Comment apprend-on à développer en C++ en 2021 ? directement C++ 20 ou on commence par le C++(98) ? Car j'ai l'impression que selon la version le code produit n'aura pas grand chose à voir.
En vrai, parmi les propositions d'enrichissement du C++, il y en a beaucoup plus qui sont rejetées que acceptées. Mais c'est vrai que, contrairement au langage C qui n'évolue quasiment pas, la complexité du C++ est toujours croissante. À ce sujet, Bjarne Stroustrup avait écrit Remember the Vasa!
5  0 
Avatar de kilroyFR
Membre éprouvé https://www.developpez.com
Le 22/07/2019 à 22:56
Je reste toujours surpris ces dernieres années de voir le C++ qui revient au gout du jour. En ayant fait pendant 25 ans je n'ai pourtant pu constater que son desinteret de la part des nouveaux devs.
Les nouveaux devs (dans ma boite en tout cas) ne voient que par M$ et C# (au point de l'imposer comme unique langage a tout le monde !).
Ils n'ont aucune culture informatique et ne voient que le C++ comme quelque chose de compliqué.
On est en train de reecrire des applis C++ existantes eprouvées en leur version C# (je n'ai toujours pas compris l'interet).

Du coup dans quels types d'applications le C++ moderne a t il sa place en 2019 ?
J'ai bien essayé de pousser encore et encore (pour les perfs, maitrise memoire etc) mais j'ai du jeter l'eponge pour na pas passer pour le refractaire au changement (sur nos applis API Web, c'est principalement JS +C#).
On ne fait plus d'applis client lourd donc le coté multiplatforme est porté principalement par des applis web (sous Windows car on a des layatolas M$ qui pensent, respirent, vivent M$ exclusivement).
4  0 
Avatar de stardeath
Expert confirmé https://www.developpez.com
Le 28/02/2020 à 16:10
en tout cas, visiblement le problème de syntaxe de c++ ne pose pas de problème qu'à moi, vu la proposition epochs : http://www.open-std.org/jtc1/sc22/wg...0/p1881r1.html
4  0 
Avatar de 23JFK
Inactif https://www.developpez.com
Le 17/12/2020 à 21:18
Va falloir que je me retape deux mille pages de spécifications.
4  0 
Avatar de
https://www.developpez.com
Le 18/12/2020 à 11:54
Citation Envoyé par 23JFK Voir le message
Va falloir que je me retape deux mille pages de spécifications.
Pourquoi ? Tu développes ton propre compilateur ?
4  0