Le C++ est un langage de programmation développé en 1983 par Bjarne Stroustrup qui voulait "incrémenter" le langage C (d’où le nom, c++ signifiant "ajouter 1 à C"). Ce langage apporte donc de nouvelles fonctionnalités par rapport au C : programmation orienté objet, classes, templates etc., toutes ces notions seront détaillées dans cet article.
Il est l’une des langages les plus utilisés, notamment dans le développement logiciel (exemple : interface IPod, navigateurs web) ou la programmation de jeux vidéo (ou systèmes d’exploitation PS3, PS4), du fait de ses performances et sa polyvalence.
En effet, le C++, s’il est difficile à maîtriser, permet d’écrire un code optimisé et extrêmement rapide contrairement à d’autres langages comme Python dont la prise en main plus aisée a un coût : efficacité et vitesse moindres.
Quels sont les principes de programmation orienté objet ?
La programmation orienté objet (POO) repose sur un ensemble de principes :
- La notion de classe (privée ou publique : structure) : une classe est un ensemble de données (entiers, un tableau…) nommées attributs et de méthodes agissant sur ces données telles que l’affichage, l’écriture, la lecture ou encore des opérateurs : l’addition, la multiplication…
- Encapsulation des données : les méthodes et données d’une classe sont séparées en deux : une partie privée (réservée au développeur de la classe) et une partie publique (accessible à l’ensemble des utilisateurs). Par exemple, on pourra lire et modifier les éléments du tableau mais non modifier sa taille. Cette division permet d’éviter de nombreux bugs dus aux erreurs du programmeur et facilite son travail : il n’a pas besoin de savoir comment la classe est construite pour pouvoir la manipuler
- En C++, les classes disposent de méthodes spécifiques : le constructeur qui sert à initialiser la classe (idem en Python) et le destructeur qui sert à libérer les ressources mémoires une fois qu’on n’a plus besoin de l’objet créé. Cette gestion de la mémoire permise par le destructeur, non présent en Python, est source de nombreuses erreurs pour le débutant.
- Héritage : une classe générale se décline en des sous classes particulières, ce qui permet de factoriser le code et donc économise le nombre de lignes, pareillement à Python.
Programmation Procédurale
Une distinction essentielle en C++ est celle entre les fonctions qui ne modifient pas leurs entrées (elles peuvent éventuellement créer et renvoyer un nouvel objet) et les fonctions qui modifient les entrées mais ne renvoient rien. Ces dernières sont nommées procédures.
Ce paradigme de langage permet l’établissement de routines et la factorisation du code, ce qui améliore sa lisibilité et sa concision.
Définition de la programmation Générique
La programmation générique repose sur le principe suivant : les mêmes opérateurs ou fonctions seront utilisés pour des types différents (double, float, char, int…) , grâce à la notion de templates. Cette propriété permet la concision du langage et une maintenance plus aisée.
Les templates de classes et de fonctions sont des canevas général de code rendant possible la création de classes ou de fonctions abstraites avec des types génériques (typename) que l’on n’a pas besoin de renseigner.
En quoi-est ce utile ? Cela permet de s’économiser l’écriture d’une fonction pour chaque type de données particulières, le compilateur les créera automatiquement lors de l’appel de la fonction/classe abstraite.
Par exemple, on peut créer une fonction abstraite maximum : templatemax(), puis l’appeler pour trouver l’élément maximal d’un tableau d’entiers, de floats, de vecteurs, etc., des fonctions max(int), max(float) et max(vecteurs) seront alors produites.
Le C++, un Langage Compilé ?
Le C++ est un langage compilé : le code source, plus proche du langage machine, est directement transformé en fichier exécutable par le compilateur contrairement à Python, qui a besoin qu’un interpréteur traduise d’abord le code source. Cette différence explique en grande partie la vitesse du C++.
Quelles sont les limites du langage ?
Si le C++ possède donc de nombreuses qualités : rapidité, concision, polyvalence, elles ont aussi leur contrecoups. D’une part, il nécessite une gestion de la mémoire « à la main » (via notamment les destructeurs), ce qui provoque de nombreuses erreurs, contrairement au ramasse-miettes de Python qui alloue la mémoire à notre place.
D’autre part, l’apprentissage du C++ est davantage complexe, car il fait appel à des notions d’informatique fondamentale.
Conclusion
Le C++ est largement utilisé, même en Data Science (sans le savoir) car l’environnement de développement des modèles d’IA sont implémentés en C++, Python servant de lien entre le script en entrée et cet environnement.
Cet article vous a plu ? Vous souhaitez découvrir nos articles en avant-première ? Rejoignez dès à présent notre Newsletter.