Si vous lisez cet article, je suppose que l’article précédent vous a convaincu d’apprendre le C++. Ici, nous allons voir comment et pourquoi le C++ a été créé, puis nous entrerons dans les détails en étudiant le fonctionnement d’un langage de programmation et les différences entre les langages bas / haut niveau, compilés / exécutés. Tous ces termes doivent vous sembler un peu flous, mais vous aurez tout compris à la fin de cet article.
La petite histoire du C++…
Avant les années 80, le langage qui dominait était le C (la concurrence n’était pas trop présente à cette époque, il faut le dire). Bjarne Stroustrup, qui travaillait alors pour AT&T (opérateur télécom américain), a créé une amélioration du C pour sa thèse, qu’il appelait « C with classes », littéralement « C avec des classes ». Les classes sont les éléments qui font toute la puissance du C++, nous y reviendrons quand nous verrons la programmation orientée objet. Au fur et à mesure de ses travaux au sein de l’entreprise, Bjarne Stroustrup a vite compris que le C with classes avait un réel intérêt pour lui, car il lui permettait d’être plus efficace. Il créa donc CFront, un logiciel transformant du C with classes en C, lui permettant ainsi de coder en C with classes tout en rendant ses travaux en C pur. En 1985, il décida de distribuer son logiciel au grand public, et en 1993, le nom devint C++. Le C++ apportait de nombreuses fonctionnalités et possibilités par rapport au C, si vous voulez plus de détails, je vous renvoie à la la fiche Wikipédia du C++.
Qu’est-ce-qu’un langage de programmation ?
Vous avez dû en entendre parler, mais savez-vous réellement de quoi il s’agit ? Je pense que non. Et je vais vous éclaircir les idées. Un logiciel, ce n’est ni plus ni moins qu’une suite d’opérations à effectuer. Ces opérations ne sont pas inventées par l’ordinateur, il faut qu’un programmeur les lui donne. Et comme un ordinateur est une machine, il faut inventer un moyen de communiquer avec lui. En effet, le langage informatique pur et dur est composé de 0 et 1 (on parle de langage binaire) et vous, vous parlez Français, ou Anglais, etc… Comme il est impossible d’écrire nous-même un logiciel directement en binaire (n’essayez pas, c’est inhumain), c’est le langage de programmation qui sert d’intermédiaire. On écrit notre programme dans un langage en particulier (ici, le C++), et un logiciel appelé IDE (nous reviendrons rapidement sur ce logiciel) le transforme en code binaire. Magique, non ?
Pour ceux qui ont fait de l’algorithmique au collège ou lycée (ou même après), c’est exactement le même fonctionnement.
Langages interprétés / compilés
Plus haut, je vous ai dit que les programmes écrits dans un langage de programmation étaient toujours transformés en langage machine. Cette opération s’appelle la compilation : on transforme du langage « humain » en un langage compréhensible et exécutable par un ordinateur.
En fait, il existe deux grandes familles de langages : les langages compilés et les langages interprétés. Inutile de revenir sur la définition d’un langage compilé, je pense que vous avez compris de quoi il s’agit. Un langage interprété, à la différence d’un langage compilé, n’est pas retranscrit en langage machine. En revanche, il a besoin d’un logiciel intermédiaire pour s’exécuter. Je vous propose une comparaison : admettons que vous souhaitez écrire une lettre à un ami étranger. Dans le cas d’un langage compilé, vous allez écrire la lettre dans votre langage, puis la faire traduire et envoyer la traduction (plus long à la création, mais votre ami n’aura aucun mal à la lire, donc rapide à l’exécution). Alors que si vous l’écrivez en langage interprété, vous allez l’envoyer dans votre langue et votre ami devra la faire lire par un traducteur à chaque fois qu’il veut la consulter (rapide à la création mais horriblement lent à l’exécution, et nécessite quelqu’un pour lire la lettre, donc dépendance à un logiciel tiers).
La compilation d’un programme se fait en quelques secondes généralement, et le gain en rapidité d’exécution du programme final est juste énorme. Inutile de vous dire qu’il vaut mieux choisir un langage compilé.
Quelques exemples de langages compilés : C, C++, Pascal
Quelques exemples de langages interprétés : Python, Java, Ruby, PHP
En réalité, la compilation n’est que le passage d’un code C++ (ou autre), à un code Assembleur, il faut ensuite une opération d’assemblage pour passer à du code binaire, mais on ommet cet étape à des fins de simplification dans ce cours.
Langages bas niveau / haut niveau
Le « niveau » d’un langage de programmation, c’est la distance qui le sépare du langage machine. Plus un langage est différent du langage machine, plus il est haut niveau. Les langages bas niveau sont donc complets, rapides, stables, indépendants mais un peu plus dur à apprendre et non portable (un logiciel s’exécutant sous Windows devra être un peu modifié pour fonctionner sous Linux par exemple).
Le C++ est un langage bas niveau, donc proche du fonctionnement de l’ordinateur. Rassurez-vous, il n’y a aucune difficulté dans l’apprentissage de ce langage 🙂