C++

Infos
C++ est un langage de programmation permettant la programmation sous de multiples paradigmes comme, par exemple, la programmation procédurale, la programmation orientée objet et la programmation générique. Au cours des années 1990, C++ est devenu l'un des langages de programmation les plus populaires dans l'industrie informatique. Le langage C++ n'appartient à personne et par conséquent n'importe qui peut l'utiliser sans payer de droits.
C++

C++ est un langage de programmation permettant la programmation sous de multiples paradigmes comme, par exemple, la programmation procédurale, la programmation orientée objet et la programmation générique. Au cours des années 1990, C++ est devenu l'un des langages de programmation les plus populaires dans l'industrie informatique. Le langage C++ n'appartient à personne et par conséquent n'importe qui peut l'utiliser sans payer de droits.

Histoire

Bjarne Stroustrup a développé C++ au cours des années 1980, alors qu'il travaillait dans le laboratoire de recherche Bell d'AT&T. Il s'agissait en l'occurrence d'améliorer le langage C. Il l'avait d'ailleurs nommé C with classes (« »). Les premières améliorations se concrétisèrent donc par la prise en charge des classes, ainsi que par de nombreuses autres fonctionnalités comme les fonctions virtuelles, la surcharge des opérateurs, l'héritage (simple ou multiple), les « ' », la gestion des exceptions, etc. Le langage C++ est normalisé par l'ISO. Sa première normalisation date de 1998 (ISO/CEI 14882:1998), sa dernière de 2003 (ISO/CEI 14882:2003). La normalisation de 1998 standardise la base du langage (Core Language) ainsi que la bibliothèque standard du C++ (C++ Standard Library). En langage C, ++' est l'opérateur d'incrémentation, c'est-à-dire l'augmentation de la valeur d'une variable de 1. C'est pourquoi C++ porte ce nom : cela signifie que C++ est un niveau au-dessus du C. Il existe de nombreuses bibliothèques C++ en plus de celle qui est incluse dans la norme. Par ailleurs, C++ permet l'utilisation des nombreuses bibliothèques C existantes.

Fonctionnalités introduites par C++

On peut considérer que C++ « est du C » avec un ajout de fonctionnalités. Une remarque importante est à faire cependant : certains programmes syntaxiquement corrects en C ne le sont pas en C++. Les fonctionnalités ajoutées sont :
-les déclarations reconnues comme instructions (repris dans C99) ;
-les opérateurs new et delete pour la gestion d'allocation mémoire ;
-le type de données bool (booléen) ;
-les références ;
-le mot clé const pour définir des constantes (repris par C à la fin des années 1980) ;
-les fonctions inline (repris dans C99) ;
-les paramètres par défaut dans les fonctions ;
-les référentiels lexicaux (
Espace de noms) et l'opérateur de résolution :: ;
-les classes, ainsi que tout ce qui y est lié : l'héritage, les fonctions membres, les fonctions membres virtuelles, les constructeurs et le destructeur ;
-la surcharge des opérateurs ;
-les templates ;
-la gestion d'exceptions ;
-l'identification de type pendant l'exécution (RTTI : run-time type identification) ;
-le commentaire de fin de ligne introduit par « // » (existant dans BCPL, repris dans C99). La compilation d'un programme en C++ effectue également un contrôle plus minutieux sur le typage.

Histoire de C++

Stroustrup a commencé à travailler sur C avec classes en 1979. L'idée de créer un nouveau langage vient de l'expérience en programmation de Stroustrup pour sa thèse de doctorat. Stroustrup trouvait que Simula avait des fonctionnalités très utiles pour le développement de gros programmes mais qu'il était trop lent pour être utilisé en pratique (cela était dû à un problème d'implémentation du compilateur Simula), tandis que BCPL était rapide mais de trop bas niveau et non adapté au développement de gros logiciels. Quand Stroustrup commença à travailler aux laboratoires Bell, on lui demanda d'analyser le noyau UNIX en vue de faire du calcul distribué. Se rappelant sa thèse, Stroustrup commença à améliorer le langage C avec des fonctionnalités similaires à celle de Simula. C fut choisi parce qu'il est rapide, portable et d'usage général. En outre, il était une bonne base pour le principe original et fondateur de C++ : « vous ne payez pas pour ce que vous n'utilisez pas ». Dès le départ, le langage ajoutait à C la notion de classe (avec encapsulation des données), de classe dérivée, de vérification des types renforcés (typage fort), d'« inlining », et d'argument par défaut. Comme Stroustrup développait C avec classes, il écrivit CFront, un compilateur qui générait du code source C à partir de code source C avec classes. La première commercialisation se fit en octobre 1985. En 1983, le nom du langage passa de C avec classes à celui de « C++ ». Parmi les nouvelles fonctionnalités qui furent ajoutées au langage, il y avait les fonctions virtuelles, la surcharge des opérateurs et des fonctions, les références, les constantes, le contrôle du typage amélioré et les commentaires en fin de ligne. En 1985 fut publiée la première édition de The C++ programming Language, apportant ainsi une référence importante au langage qui n'avait pas encore de standard officiel. En 1989, c'est la sortie de la version 2.0 de C++. Parmi les nouvelles fonctionnalités, il y avait l'héritage multiple, les classes abstraites, les fonctions membres statiques, les fonctions membres constantes, et les membres protégés. En 1990, The Annotated C++ Reference Manual (« ARM ») fut publié apportant les bases du futur standard. Les ajouts de fonctionnalités tardifs qu'il comportait couvraient les templates, les exceptions, les espaces de noms, les nouvelles conversions et le type booléen. Comme le langage C++ évoluait, la bibliothèque standard évoluait de concert. La première addition à la bibliothèque standard de C++ concernait les flux d'entrées/sorties qui apportait les fonctionnalités nécessaires au remplacement des fonctions C traditionnelles telles que printf et scanf. Ensuite, parmi les additions les plus importantes, il y avait la Standard Template Library. Après des années de travail, un comité réunissant l'ANSI et l'ISO standardisa C++ en 1998 (ISO/CEI 14882:1998), l'année où le comité de standardisation se réunissait à Sophia Antipolis dans le sud de la France. Pendant quelques années après la sortie officielle du standard, le comité traita le rapport de problèmes et publia une version corrigée du standard C++ en 2003. Personne ne possède le langage C++. Il est libre de droit. Le document de standardisation n'est quant à lui pas disponible gratuitement.

La bibliothèque standard (C++ standard library)

La bibliothèque standard du C++ est en grande partie un surensemble des fonctions disponibles dans la bibliothèque standard du C. Elle englobe la Standard Template Library (STL) qui met à la disposition du programmeur des outils puissants comme les collections (conteneurs) et les itérateurs. À l'origine, la STL était une bibliothèque développée par Alexander Stepanov qui travaillait pour Hewlett-Packard. Dans la norme, celle-ci n'est pas appelée STL, car elle est considérée comme faisant partie de la bibliothèque standard du C++. Toutefois, beaucoup de personnes l'appellent encore de cette manière pour distinguer d'une part, les fonctions d'entrées/sorties comprises dans cette bibliothèque et, d'autre part, celles fournies par la bibliothèque C. Comme en C, l'utilisation d'une bibliothèque se fait par l'intermédiaire de la directive
-include (suivie du nom du fichier d'en-tête).

La programmation orientée objet en C++

C++ utilise les concepts de la programmation orientée objet et permet entre autres :
-La classification,
-L'encapsulation,
-La composition de classes,
-L'association de classes,
-L'héritage, qui permet le polymorphisme,
-L'abstraction,
-La généricité,
-La méta-programmation

L'encapsulation en C++

L'encapsulation permet de faire abstraction du fonctionnement interne (c'est-à-dire, l'implémentation) d'une classe et ainsi de ne se préoccuper que des services rendus par celle-ci. C++ implémente l'encapsulation en permettant de déclarer les membres d'une classe avec le mot réservé public, private ou protected. Ainsi, lorsqu'un membre est déclaré :
-
public, il sera accessible depuis n'importe quelle fonction.
-
private, il sera uniquement accessible d'une part, depuis les fonctions qui sont membres de la classe et, d'autre part, depuis les fonctions autorisées explicitement par la classe (par l'intermédiaire du mot réservé friend).
-
protected'', il aura les mêmes restrictions que s'il était déclaré private, mais il sera en revanche accessible par les classes filles. C++ n'impose pas l'encapsulation des membres dans leurs classes. On pourrait donc déclarer tous les membres publics, mais en perdant une partie des bénéfices apportés par la programmation orientée objet. Il est de bon usage de déclarer toutes les données privées, ou au moins protégées, et de rendre publiques les méthodes agissant sur ces données. Ceci permet de cacher les détails de l'implémentation de la classe.

« Hello, world »

Voici l'exemple de Hello world donné dans The C++ Programming Language, Third Edition de Bjarne Stroustrup :
-include int main std::cout
Sujets connexes
Abstraction (informatique)   Ada (langage)   Alexander Stepanov   American National Standards Institute   Anjuta   Années 1980   Années 1990   Apache Ant   BCPL   Bibliothèque logicielle   Bibliothèque standard du C++   Bjarne Stroustrup   Borland   C++ Builder   CLU (langage)   C (langage)   C sharp   Classification   Commentaire (informatique)   Compilateur   D (langage)   Delphi   Dev-C++   Eclipse (logiciel)   Encapsulation (programmation)   Environnement de développement   Espace de noms   GNU Compiler Collection   Généricité   Hello world   Hewlett-Packard   Héritage (informatique)   Héritage multiple   Java (langage)   KDevelop   Laboratoires Bell   Langage de programmation   Logiciel libre   Logiciel propriétaire   ML (langage)   Microsoft   Méthode (informatique)   Organisation internationale de normalisation   Paradigme   Polymorphisme (informatique)   Programmation orientée objet   Programmation procédurale   Référence (informatique)   SCons   Simula   Sophia Antipolis   Standard Template Library   Surcharge des opérateurs   Système de gestion d'exceptions   Système nominatif de types   Sûreté du typage   Template   Typage statique   UNIX   Visual C++   WxDev-C++   X++  
#
Accident de Beaune   Amélie Mauresmo   Anisocytose   C3H6O   CA Paris   Carole Richert   Catherinettes   Chaleur massique   Championnat de Tunisie de football D2   Classement mondial des entreprises leader par secteur   Col du Bonhomme (Vosges)   De viris illustribus (Lhomond)   Dolcett   EGP  
^