![](https://www.developpez.com/images/logos/c++.png)
Le C++ est un langage de programmation général de haut niveau. Publié pour la première fois en 1985 en tant qu'extension du langage de programmation C, il s'est considérablement développé au fil du temps. Depuis 1997, le C++ possède des caractéristiques orientées objet, génériques et fonctionnelles, ainsi que des fonctions de manipulation de la mémoire de bas niveau pour des systèmes tels que les micro-ordinateurs ou pour créer des systèmes d'exploitation tels que Linux ou Windows. Il est généralement implémenté en tant que langage compilé, et de nombreux fournisseurs proposent des compilateurs C++.
Le C++ a été créé par l'informaticien danois Bjarne Stroustrup. Il a notamment dirigé le département de recherche sur la programmation à grande échelle aux Bell Labs, a été professeur d'informatique à l'université Texas A&M et a passé plus d'une décennie chez Morgan Stanley tout en étant professeur invité à l'université Columbia. Depuis 2022, il est professeur titulaire à Columbia.
Récemment, Bjarne Stroustrup a présenté des « profils » renforçant les lignes directrices pour la sécurité des ressources et des types de C++. "Cela fait maintenant plus de 45 ans que le C++ a été conçu", écrit Bjarne Stroustrup dans un article publié cette semaine dans Communications of the ACM. Il se plaint que de nombreux développeurs "utilisent le C++ comme s'il s'agissait encore du millénaire précédent", dans un article intitulé 21st Century C++ qui promet "les concepts clés sur lesquels des logiciels C++ performants, sûrs et flexibles peuvent être construits : la gestion des ressources, la gestion de la durée de vie, la gestion des erreurs, la modularité et la programmation générique...".
Bjarne Stoustrup présente des moyens de s'assurer que le code soit contemporain, plutôt que de s'appuyer sur des techniques dépassées, peu sûres et difficiles à maintenir : les lignes directrices et les profils.
Pour aider les développeurs à se concentrer sur l'utilisation efficace du C++ contemporain et à éviter les « coins sombres » obsolètes du langage, des ensembles de lignes directrices ont été élaborés. Je me concentre ici sur les lignes directrices du C++ Core que je considère comme les plus ambitieuses... Mon objectif principal est une utilisation de la norme ISO C++ sans danger pour les types et les ressources. En d'autres termes :
- Chaque objet est exclusivement utilisé conformément à sa définition
- Aucune ressource n'est perdue.
Cela englobe ce que les gens appellent la sécurité de la mémoire et bien plus encore. Il ne s'agit pas d'un nouvel objectif pour le C++. Il est évident qu'il ne peut pas être atteint pour chaque utilisation du C++, mais nous avons maintenant des années d'expérience montrant que c'est possible pour le code moderne, bien que jusqu'à présent l'application ait été incomplète... Lorsque l'on pense au C++, il est important de se rappeler que le C++ n'est pas seulement un langage, mais qu'il fait partie d'un écosystème composé d'implémentations, de bibliothèques, d'outils, d'enseignement, et plus encore.
- Chaque objet est exclusivement utilisé conformément à sa définition
- Aucune ressource n'est perdue.
Cela englobe ce que les gens appellent la sécurité de la mémoire et bien plus encore. Il ne s'agit pas d'un nouvel objectif pour le C++. Il est évident qu'il ne peut pas être atteint pour chaque utilisation du C++, mais nous avons maintenant des années d'expérience montrant que c'est possible pour le code moderne, bien que jusqu'à présent l'application ait été incomplète... Lorsque l'on pense au C++, il est important de se rappeler que le C++ n'est pas seulement un langage, mais qu'il fait partie d'un écosystème composé d'implémentations, de bibliothèques, d'outils, d'enseignement, et plus encore.
Premièrement : étendre le langage avec quelques abstractions de bibliothèque : utiliser des parties de la bibliothèque standard et ajouter une minuscule bibliothèque pour rendre l'utilisation des directives pratique et efficace (la bibliothèque de soutien des directives, GSL).
Ensuite : sous-ensemble : interdire l'utilisation de fonctionnalités de bas niveau, inefficaces et sujettes aux erreurs.
Ce que nous obtenons, c'est du "C++ sous stéroïdes" : Quelque chose de simple, sûr, flexible et rapide, plutôt qu'un sous-ensemble appauvri ou quelque chose qui repose sur une vérification massive au moment de l'exécution. Nous ne créons pas non plus un langage avec des caractéristiques nouvelles et/ou incompatibles. Le résultat est 100% ISO standard C++. Les fonctionnalités de bas niveau, désordonnées et dangereuses, peuvent toujours être activées et utilisées en cas de besoin.
Ensuite : sous-ensemble : interdire l'utilisation de fonctionnalités de bas niveau, inefficaces et sujettes aux erreurs.
Ce que nous obtenons, c'est du "C++ sous stéroïdes" : Quelque chose de simple, sûr, flexible et rapide, plutôt qu'un sous-ensemble appauvri ou quelque chose qui repose sur une vérification massive au moment de l'exécution. Nous ne créons pas non plus un langage avec des caractéristiques nouvelles et/ou incompatibles. Le résultat est 100% ISO standard C++. Les fonctionnalités de bas niveau, désordonnées et dangereuses, peuvent toujours être activées et utilisées en cas de besoin.
- Pas de variables non initialisées
- Pas de violation de plage ou de nullptr
- Pas de fuites de ressources
- Pas de pointeurs pendants
- Pas de violation de type
- Pas d'invalidation
Pour rappel, Bjarne Stroustrup, créateur du langage C++, a 74 ans. Il avait raconté qu'il est devenu programmeur par erreur, en se trompant de mot au moment de choisir ce qu'il allait étudier après ses examens de fin d'études secondaires. Stroustrup pensait s'inscrire à un cours de mathématiques appliquées, qui s'est avéré être un cours d'informatique. Maintenant, il est l'un des piliers du langage C++.
Source : Article 21st Century C++
Et vous ?
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
Voir aussi :
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)