La saga du C++

L’apparition du langage C

Au sein des laboratoires Bell au cours de l’année 1972, furent inventés et développés en parallèle le langage C et le système Unix par Dennis Ritchie et Kenneth Thompson. Par la suite en 1978, Brian Kernighan, professeur d’informatique à l’université de Princeton (New Jersey), publie avec l’aide de Dennis Ritchie le livre : The C Programming Language. Ce livre marque la communauté informatique car il décrit en une centaine de pages les bases du langage ainsi que l’intégralité de sa syntaxe et de sa grammaire. En conséquence, à partir de ce livre, tout ingénieur de l’époque pouvait se lancer dans la création d’un compilateur C pour n’importe quelle machine. Ce livre, avec sa couverture très reconnaissable, fut surnommé le K&R et devint un incontournable des étagères (il n’y avait pas encore l’internet !). Dans les années 80, le langage C deviendra le langage à la mode ceci pour plusieurs raisons : très rapide, normalisé, offrant un code lisible et des librairies pour le contrôle du clavier et du disque dur (mais pas de la souris ou de l’écran).

Kenneth Thompson

Brian Kernighan

Dennis Ritchie

Le livre du langage C

../_images/_kenneth.jpg ../_images/_kernigham.jpg ../_images/_ritchie.png ../_images/_bookC.jpg

Indiquez si les affirmations suivantes sont vraies ou fausses :

  1. Le C est un langage permettant d’obtenir des programmes très rapides.

  2. Ritchie et Thompson sont à l’origine du système Windows.

  3. La librairie du C permet de gérer les entrées/sorties clavier.

  4. La librairie du C permet de gérer la souris.

  5. Kernighan et Ritchie écrivirent le livre de référence sur le langage C.

Pour la petite histoire, en 1991, Linus Torvalds (finlandais de naissance) alors étudiant en master informatique, se lance dans la création du noyau Linux en utilisant le langage C et ce projet atteindra le succès que vous lui connaissez aujourd’hui. En effet, bien que les ordinateurs personnels utilisent principalement le système Windows, 97% des 500 plus grands supercalculateurs utilisent Linux ainsi que la quasi-totalité des serveurs internet.

L’avènement du C++

En 1980, Bjarne Stroustrup, danois de naissance, part après ses études d’informatique aux laboratoires Bell dans le New Jersey. Il y développera le langage C++ permettant d’apporter plus de fonctionnalités au langage C notamment le paradigme objet. En 1985, il publie le livre The C++ Programming Language de 700 pages. Cette fois, nous ne trouvons pas une description complète du langage mais plutôt un livre pédagogique présentant les concepts objets et leur mise en place. Il faut se rappeler qu’à cette époque, la programmation objet est peu usitée. Ainsi, pour convaincre les développeurs d’utiliser le C++ comme nouveau langage, il faut aussi former les esprits. Ce livre servira pendant des années de référence jusqu’à la parution de la norme ISO en 1998. Mais Bjarne Stroustrup ne s’arrête pas là. En 1991, il a alors 41 ans et il publie la deuxième édition reflétant les évolutions du langage. Une troisième édition viendra en 1997. Finalement à la suite de l’évolution majeure du langage C++11, une quatrième édition sera disponible en 2013 avec la bagatelle de 1376 pages ! Fait remarquable, en 2024, Bjarne Stroustrup est toujours de ce monde et reste actif dans la communauté C++.

Linus Torvalds

Bjarne Stroustrup

Le langage C++

../_images/_linus.jpg ../_images/_stroustrup.jpg ../_images/_bookcpp.jpg

Une perpétuelle évolution

Bjarne Stroustrup: Why I Created C++ (4 minutes interview) :

Le langage C++ est en perpétuelle évolution, ainsi on compte aujourd’hui sept normalisations du langage :

Année

Code Norme

Nom donné à cette version du C++

1998

ISO/IEC 14882:1998

C++98 version majeure

2003

ISO/IEC 14882:2003

C++03

2011

ISO/IEC 14882:2011

C++11 version majeure

2014

ISO/IEC 14882:2014

C++14

2017

ISO/IEC 14882:2017

C++17

2020

ISO/IEC 14882:2020

C++20

2023

ISO/IEC 14882:2023

C++23

Les évolutions du langage C++ ne se font pas toujours dans la continuité. Certaines syntaxes sont modifiées, parfois à 180°, souvent par bon sens mais parfois non. Cela implique que si un programme a été écrit en C++98 avec 300 000 lignes de code, le compiler en C++11 posera des problèmes. En effet, certaines lignes de code produiront des erreurs. Mais pire encore, d’autres lignes ne produiront aucune erreur mais changeront de comportement à l’exécution produisant des bugs difficiles à détecter.

Pourquoi se lancer dans le C++ ?

D’autres langages existent, plus modernes, plus accessibles, alors pourquoi se lancer dans l’apprentissage du C++ ?

  • Il ne faut pas oublier que les noyaux des systèmes actuels : Linux, Androïd, Windows et Mac sont écrits principalement en C et en C++. Il en est de même pour l’interpréteur Python ainsi que l’environnement d’exécution de Java.

  • Bon nombre de logiciels célèbres sont écrits en C++ : notepad++, VLC, Word/Excel, 7Zip, Photoshop, Illustrator, Blender, Chromium (Chrome), Mozilla Firefox, Apache…

  • La majorité des moteurs de jeu (PC/Consoles) sont écrits en C++ : source (Counter Strike), Electronic Art’s game engine, Unreal Engine, GTAV Game Engine ou encore CryEngine V.

Ainsi, même si le langage C++ peut sembler assez vieux avec plus d’une trentaine d’années d’existence, dès que l’on cherche à obtenir des performances, le langage C++ devient un incontournable.

Indiquez si les affirmations suivantes sont vraies ou fausses :

  1. Le C++ est un langage permettant d’obtenir des programmes très rapides.

  2. La librairie C++ permet de gérer la souris.

  3. Bjarne Stroustrup a publié de nombreux livres sur le langage C++

  4. Le langage C++ a été conçu comme une extension du langage C.

  5. Le C++ est un langage en perpétuelle évolution.

  6. Un code en C++11 fonctionnera parfaitement en C++17.

Note

Si un de vos amis vous prend de haut en vous expliquant que lui, il programme vraiment, en faisait du C++++. Alors, regardez le droit dans les yeux et demandez-lui : « Quelle version ? ». Soit c’est un troll et il s’enfuira en courant, soit c’est un geek et il vous respectera. Dans tous les cas, vous êtes gagnant.