Le C++, qu'est-ce que c'est ?

Voilà, vous êtes décidés, vous voulez apprendre à programmer à l’aide du langage C++. Mais vous devez toujours avoir quelques questions qui trottent dans votre esprit.

  • Concrètement, C++, c’est quoi ?
  • Et puis pourquoi commencer par C++ ?
  • Que vais-je savoir faire en sortant de ce tutoriel ?
  • Il y a-t-il des conditions, des prérequis, pour pouvoir suivre ce cours ?

Petite mise au point

J’ai indiqué en introduction que le seul prérequis était de lire l’introduction à la programmation et c’est vrai. Mais si peu de connaissances sont nécessaires pour comprendre tout ce qui sera dit, cela ne veut pas dire pour autant que ce sera du tout cuit, prémâché, directement dans la bouche. C’est pour cela que je veux prendre quelques minutes pour clarifier ceci.

Développer, un métier à part entière

Eh oui ! Créer des logiciels, c’est un métier. D’ailleurs, il y a mêmes des écoles et des études spécialisées pour ça. C’est que développer, ce n’est pas simplement écrire du code. Il y a aussi des phases de réflexion, de conceptions, d’écriture, de validation, de tests, de réécriture d’anciennes portions, etc.

Par ailleurs, même si cela n’est pas directement lié à la programmation, peut également s’ajouter à cela : la gestion de base de données, l’usage du réseau, le management, la gestion de projet, etc. En bref, être développeur c’est beaucoup de compétences différentes dans des domaines variés.

La cruelle vérité qui se cache derrière tout ça, c’est que ce cours ne fera pas de vous des experts, ni des développeurs professionnels. Par contre, une fois fini, vous aurez des bases solides pour continuer votre apprentissage. La route du savoir est infinie.

Votre part du travail

Le cours est écrit de façon à être le plus clair possible, sans vous noyer sous un flot de détails et d’explications, mais il arrivera parfois que vous ne compreniez pas un morceau de code ou une explication. C’est tout à fait normal, ça fait partie de l’apprentissage. Reprenez le cours à tête reposée, aidez-vous de schémas ou de dessins, demandez de l’aide sur les forums, et vous ne resterez jamais bloqués longtemps. ;)

Par contre, il faut être prêt à fournir des efforts de votre côté. Cela signifie ne pas se ruer sur les forums au bout de quelques minutes, sans même avoir essayé de trouver une solution.

Les mathématiques, indispensables ?

Une des grandes appréhensions, qui revient régulièrement dans la bouche des débutants, est de savoir si les mathématiques sont un prérequis à l’apprentissage de la programmation. La réponse est non. Il est tout à fait possible d'apprendre à programmer tout en ayant un faible niveau en mathématique. Ce cours ne demande aucune connaissance en mathématiques plus poussées que les opérations de base et, quelques fois, l’utilisation de sinus et cosinus, en guise d’exemples.

Bien sûr, certains aspects de la programmation, comme la sécurité, la cryptographie ou les applications scientifiques vont demander un bagage mathématique solide. Mais cela ne rentre pas dans le cadre de ce cours.

L’anglais, indispensable ?

À strictement parler, dans le cadre de ce cours, pas besoin de savoir parler anglais. Même si nous examinerons régulièrement de la documentation écrite dans la langue de Shakespeare, je serai là pour donner des explications et éclaircissements. Et quand bien même il y aurait quelque chose sur lequel vous butez, vous pouvez vous servir d’un traducteur automatique.

D’un point de vue plus général, si vous souhaitez continuer dans l’informatique et la programmation, il sera très difficile d’échapper à l’anglais. Beaucoup de cours, de documents, de forums sont en anglais, ou en font un usage massif. L’anglais est tout simplement la langue de l’informatique. Après, sachez que l’anglais informatique est simple à comprendre, car souvent écris par des gens dont l’anglais n’est pas la langue maternelle. Ainsi, inutile d’être bilingue, un bon dictionnaire ou un traducteur vous aideront.

Tour d'horizon du C++

L’histoire du C++

Faisons un plongeon dans l’histoire et revenons dans les années 1970. À cette époque, Dennis Ritchie, programmeur aux laboratoires AT&T aux États-Unis, invente le langage C, conçu pour programmer le système d’exploitation UNIX. Ce langage devint très populaire à tel point qu’il est encore beaucoup utilisé aujourd’hui, dans l’écriture de Linux par exemple. Puis un peu plus tard, au début des années 1980, Bjarne Stroustrup, lui aussi développeur aux laboratoires AT&T, décida de prendre le langage C comme base et de lui ajouter des fonctionalités issues d’un autre langage appelé Simula. Ce langage devint alors le C with classes.

Finalement, en 1983, son créateur, estimant que le nom de son langage était trop réducteur aux vues de tous les ajouts faits par rapport au C, décida de le renommer C++. Mais l’histoire ne s’arrête pas là. Au contraire, le C++ continue d’évoluer à tel point qu’on décide au début des années 1990 de le normaliser, c’est-à-dire d’en établir les règles officielles. Ce travail de longue haleine s’acheva en 1998 ; cette version est ainsi souvent nommée C++98. Ensuite, en 2003, des corrections ont été apportées et l’on obtint C++03.

Puis de nouveau un chantier titanesque est mis en place pour améliorer encore plus le C++, ce qui aboutit 8 ans plus tard, en 2011, à la sortie de C++11, jugée par beaucoup de développeurs comme étant la renaissance du C++. Ensuite, de nouvelles corrections et quelques ajustements ont été apportés pour donner C++14. Enfin, à l’heure actuelle, la norme C++17, nouvelle version majeure et apportant tout un lot de choses intéressantes, est sortie en fin d’année et C++20 est déjà en chantier.

Point vocabulaire

Beaucoup de programmeurs utilisent le terme « C++ historique » pour désigner les normes C++98 et C++03 et le terme « C++ moderne » pour parler de C++11 et au-delà.

Pourquoi apprendre le C++ ?

  • Sa popularité : le C++ est un langage qui est utilisé dans de nombreux projets important (citons Libre Office, 7-zip ou encore KDE). Il est au programme de beaucoup de formations informatiques. Il possède une communauté très importante, beaucoup de documentation et d’aide, surtout sur l’internet anglophone.
  • Sa rapidité : C++ offre un grand contrôle sur la rapidité des programmes. C’est cette caractéristique qui fait de lui un des langages de choix pour les programmes scientifiques, par exemple.
  • Sa facilité d’apprentissage : depuis sa version de 2011, C++ est beaucoup plus facile à apprendre que par le passé. Et ça tombe bien, c’est sur cette version et les suivantes que va se baser ce cours.
  • Son ancienneté : C++ est un langage ancien d’un point de vue informatique (30 ans, c’est énorme), ce qui donne une certaine garantie de maturité, de stabilité et de pérennité (il ne disparaîtra pas dans quelques années).
  • Son évolution : C++11 est un véritable renouveau de C++, qui le rend plus facile à utiliser et plus puissant dans les fonctionnalités qu’il offre aux développeurs. C++14 et C++17 améliorent encore la chose.
  • Il est multi-paradigme : il n’impose pas une façon unique de concevoir et découper ses programmes mais laisse le développeur libre de ses choix, contrairement à d’autres langages comme Java ou Haskell.

Bien entendu, tout n’est pas parfait et C++ a aussi ses défauts.

  • Son héritage du C : C++ est un descendant du langage C, inventé dans les années 1970. Certains choix de conception, adaptés pour l’époque, sont plus problématiques aujourd’hui, et C++ les traine avec lui.
  • Sa complexité : il ne faut pas se le cacher, avoir une certaine maîtrise du C++ est très long et demandera des années d’expérience, notamment parce que certaines des fonctionnalités les plus puissantes du C++ requièrent de bien connaître les bases.
  • Sa bibliothèque standard : bien qu’elle permette de faire beaucoup de choses (et d’ailleurs, nous n’aurons même pas le temps d’en faire un tour complet dans ce cours), elle n’offre pas de mécanisme natif pour manipuler des bases de données, faire des programmes en fenêtres, jouer avec le réseau, etc. Par rapport à d’autres langages comme Python, C++ peut paraître plus « limité ».

La documentation

En programmation, il y a un réflexe à adopter le plus rapidement possible : si on ne sait pas comment utiliser un outil, il faut aller consulter la documentation de l’outil concerné, et ce avant de demander de l’aide sur un forum par exemple. Voici un lien vers une excellente documentation C++. Elle est en anglais, mais pas de soucis, je suis là avec vous. Je vous donnerai des liens, vous expliquerai comment comprendre et exploiter les informations fournies pour que, par la suite, vous puissiez le faire vous-mêmes.

Il y a aussi un autre outil, très utile pour rechercher une information et que vous connaissez déjà, les moteurs de recherches (Google, Bing, DuckDuckGo, Qwant, etc). Sachez aussi que les forums sont une mine d’informations. Vous pouvez par exemple utiliser ceux de Zeste de Savoir, en n’oubliant bien évidemment pas d’utiliser le tag [c++] lors de la création d’un sujet.

Enfin, sachez qu’il existe une référence ultime appelée la norme, produit par un organisme de validation international appelé l'ISO, qui explique tous les détails et les règles du C++ mais qui est un document complexe et très largement hors de portée pour vous.

La dernière version de ce document est sortie en 2017 et explique les règles de fonctionnement du C++ dans sa version de 2017. Je le mentionne simplement pour que vous soyez au courant de son existence, sans être surpris si, lors de vos recherches sur Internet, des réponses mentionnent ou citent la norme.


En résumé

  • La programmation est une activité parfois complexe, mais très enrichissante et accessible.
  • Le cours se veut le plus accessible possible, mais vous devez jouer le jeu et faire des efforts de votre côté.
  • Les mathématiques et l’anglais ne sont pas requis pour suivre ce cours, bien qu’un niveau acceptable en anglais soit extrêmement utile par la suite.
  • Le C++ a une longue histoire, mais le C++ moderne a véritablement vu le jour en 2011, avec des améliorations et corrections apportées en 2014 et 2017.
  • Le C++ possède des forces qui en font un des langages les plus utilisés sur la planète.
  • En contrepartie, le C++ est un langage assez complexe qui demande de nombreuses années avant d’être « maitrisé ».
  • La documentation nous aide à mieux comprendre le langage, son fonctionnement, etc. Elle est en anglais, mais illustrée par des exemples.