Présentation

Article

1 - PROGRAMMES C++

2 - MACROEXPANSEUR CPP

  • 2.1 - Inclusion de fichiers sources
  • 2.2 - Macros et macrofonctions
  • 2.3 - Compilation conditionnelle
  • 2.4 - Identificateurs, chaînes de caractères et macros prédéfinies

3 - TYPES ET TYPAGE

  • 3.1 - Types de base
  • 3.2 - Constructeurs de types
  • 3.3 - Conversions de types

4 - EXPRESSIONS ET INSTRUCTIONS

5 - FONCTIONS

  • 5.1 - Déclarations et prototypes
  • 5.2 - Blocs d’activation et récursion
  • 5.3 - Fonctions inline
  • 5.4 - Passage des arguments
  • 5.5 - Surcharge
  • 5.6 - Fonction templates

6 - OBJETS

7 - EXCEPTIONS

  • 7.1 - Lever des exceptions
  • 7.2 - Intercepter les exceptions

8 - INTEROPÉRABILITÉ AVEC C ET LES BIBLIOTHÈQUES

9 - CONCLUSION

Article de référence | Réf : H3078 v1

Conclusion
Langage C++

Auteur(s) : Manuel SERRANO

Date de publication : 10 août 2003

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

Le langage C++ a été développé à partir de C en rajoutant une couche objet. Par rapport à C, assembleur portable qui couvre un très vaste champ d’applications, C++ est emprunt de méthodologies et de techniques issues du génie logiciel.  C++ reste difficile à maîtriser, mais un programmeur avec une bonne connaissance de ce langage a la possibilité d'écrire des programmes très efficaces.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

Auteur(s)

  • Manuel SERRANO : Chargé de recherche à l’Institut national de recherche en informatique et en automatique - (INRIA)

INTRODUCTION

Le langage C++ est apparu au début des années 1980. Il a été conçu et développé par Bjarne Stroustrup dans les laboratoires d’AT&T. C++ est bâti au-dessus du langage C dont il présente un certain nombre d’extensions. La plus spectaculaire est probablement sa couche objet dont la conception a été fortement influencée par le langage Simula 67. Plus que les variations techniques, c’est surtout l’« esprit » des deux langages qui sépare C et C++. C est un assembleur portable qui couvre un très vaste champ d’applications. On peut écrire en C des programmes de très bas niveau, comme des contrôleurs de composants matériels spécialisés, mais aussi des programmes plus généralistes tels que des interfaces graphiques utilisateurs. C permet un contrôle très fin de la mémoire, ce qui constitue un atout fort du langage. Cela impose aussi discernement et compétence de la part des programmeurs car avec une telle capacité, tous les coups sont permis ! En revanche, C++ est emprunt de méthodologies et de techniques issues du génie logiciel. C++ a été voulu, et donc conçu, comme une alliance entre l’efficacité de C et la robustesse de langages de plus haut niveau tels que Ada ou Eiffel. Là où C prône la débrouillardise et un pragmatisme forcené, C++ met l’accent sur la pérennité et la fiabilité du logiciel. Cela se ressent, par exemple, dans l’incitation faite aux programmeurs d’utiliser des types abstraits de données (les classes) mais aussi dans un système de types plus strict que celui de C. La possibilité, pour un compilateur C++, d’engendrer du code presque aussi efficace que C a fortement influencé la conception du langage. Il en résulte que C++ est assez difficile à maîtriser, mais, en contrepartie, une bonne connaissance de ce langage permet d’écrire des programmes très efficaces. Cette caractéristique le distingue de bien d’autres langages de programmation évolués.

C++ a probablement bâti son succès sur C. Au moment où C++ est apparu, C était déjà bien implanté et l’engouement pour la programmation par objets émergeait. En se présentant comme une extension du langage C permettant la programmation par objets, il a attiré de nombreux programmeurs. Malgré l’apparition, depuis quelques années, de langages de plus haut niveau qui lui disputent sa popularité, C++ est encore, en ce début de siècle, un des langages généralistes les plus utilisés.

Cet article est réservé aux abonnés.
Il vous reste 93% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h3078


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

9. Conclusion

C++ est un langage imposant, complexe et d’un apprentissage long et difficile. Il possède beaucoup de constructions et met en œuvre de nombreux concepts. Certains pourront même y voir une multitude de « verrues » agglutinées les unes aux autres. Beaucoup de constructions de C++ sont difficiles à bien cerner parce qu’elles mettent en œuvre des concepts complexes. Par exemple, l’héritage multiple de C++ complique grandement le modèle objet et a des répercussions sémantiques dans de nombreux recoins du langage (méthodes, constructeurs, destructeurs, conversion de types, etc.).

C++ n’est pas seulement un langage difficile à bien maîtriser, c’est aussi un langage difficile à bien implanter ! Les temps où les compilateurs C++ n’implantaient qu’un sous-ensemble du langage et avec des interprétations parfois assez divergentes de telle ou telle construction ne sont pas si éloignés. La situation est maintenant bien meilleure.

On peut s’interroger sur la nécessité de la complexité de C++. Très probablement, elle ne s’explique que par la volonté d’allier programmation de haut niveau (couche objet, exceptions, etc.) et programmation efficace. Ce mariage, assez incertain, impose parfois des contorsions qui peuvent sembler arbitraires mais qui sont en fait des nécessités d’implantation. On peut assez légitimement reprocher à C++ de faire transparaître, dans sa conception, des considérations d’implantation mais il faut alors lui reconnaître l’indéniable mérite d’avoir abordé de front le problème de l’efficacité des langages de haut niveau et d’être parvenu à un équilibre que peu ont atteint. Pour cette raison, en dépit des attaques qu’il a subi ces dernières années, notamment de la part de Java ou maintenant de C#, il est peu probable de le voir s’éteindre dans un avenir proche.

HAUT DE PAGE

Cet article est réservé aux abonnés.
Il vous reste 93% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Conclusion
Sommaire
Sommaire

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS