La différence entre le langage C et le C++

Avant de commencer, je dois vous dire que pour aborder cette deuxième partie (C++), vous devez absolument lire et comprendre la première partie (C) ou bien avoir une notion de base sur le langage C.

Deux questions sont souvent posées :

  • Quelle est la différence entre le langage C et le langage C++ ?
  • Peut-on faire la même chose avec ces deux langages ?

Avant d’aller un peu plus loin, nous allons vous donner des réponses claires à ces questions. D’ailleurs, c’est le but de ce cours.

Si vous vous souvenez très bien, je vous avais dit que le C++ est l’incrémentation du C. je n’avais pas bu quand je vous le disais et d’ailleurs je ne bois jamais.

Bon voyons cette différence même s’il est difficile d’écrire dans un cours, les mineures différences existant entre ces deux langages.

D’abord une question des compilateurs

J’ai l’impression que quand Bjarne Stroustrup créa le langage C++, il ne l’a pas créé pour qu’il soit un langage à part. Il l’a créé pour qu’il soit une version orienté objet du C. Attention ! Il ne me l’a pas dit et je ne l’ai jamais lu nulle part.
Alors d’où vient cette impression ?
D’abord le C et le C++ proviennent de la société AT&T.
Ensuite Bjarne Stroustrup a presque tout copié le C dans le C++. Ce qui fait qui si on écrit un programme C et qu’on le compile avec le compilateur C++, il y a 99,999% de chance que ça marche. Il faut noter qu’un programme écrit en C++ pure ne peut pas être compilé avec un compilateur C.
Vous pouvez essayer vous-même. Prenez un code C, enregistrez-le sous forme d’un code C++ et compilez-le. Vous verrez qu’il y a une forte chance que ça marche. Attention ! Comme on l’a dit, l’inverse ne marchera pas.
Maintenant vous voyez que si vous écrivez du C++, vous pouvez introduire du C (attention à la légère différence sémantique) si cela vous chante. L’inverse n’est pas vrai.

Cependant, il faut faire attention. Le langage C et le langage C++ sont des langages qui évoluent différemment. Et depuis l’officialisation de la norme C (C99), beaucoup d’ajouts (au C) ne sont pas pris en charge par le C++.

Ensuite une question d’orientation

Le langage C est un langage procédural (procedure oriented) tandis que le langage C++ est un langage orienté Objet (Object oriented). Dans ce cas, on remarque que l’un a plus d’avantages et d’inconvénients que l’autre.
Pour le C, le programmeur maitrise parfaitement son programme et il a une certaines libertés. Le résultat est au rendez-vous (exécutable très efficace). Mais un programme contenant des milliers de lignes de code, peut apporter facilement des soucis au développeur quand il s’agit de le mettre à jour.
Pour le C++, le programme est plus lisible et facile à écrire. Le code étant bien organisé, il est plus facile à mettre à jour quelque soit la taille du programme. L’exécutable du C++ est moins efficace.

Ensuite une question de niveau

Le langage C est un langage de bas niveau. Le C++ est à la fois un langage de bas niveau et de haut niveau, ce qui fait de lui un langage de niveau intermédiaire.

Un langage de bas niveau est un langage dont le codage est très proche du langage machine (binaire). Le programmeur doit savoir parfaitement ce qu’il fait, vu qu’il doit comprendre le fonctionnement de l’ordinateur.

Un langage de haut niveau est l’inverse d’un langage de bas niveau. Le programmeur est appelé à coder sans chercher à comprendre le fonctionnement de l’ordinateur.

Dans ce cas, le programme C (exécutable) est plus rapide et consomme moins de ressource tandis que le programme C++ est peu lent et consomme beaucoup de ressource. Bon, on n’a pas à s’inquiéter à ce point car les machines d’aujourd’hui sont munies des processeurs et mémoires si puissants.

Enfin une question de sémantique

Le langage C++ a souvent des mots clés différents à ceux du langage C.

Par exemple stdio.h est remplacé iostream. printf est remplacé par cout ; scanf est remplacé par cin
D’autres spécificités existent et vous aurez le temps de les voir.

Eh voila, c’est la fin de ce cours. On se verra sur un aut…… euh j’ai oublié de répondre la deuxième question.
Oui, on peut faire la même chose avec ces deux langages.

Quel est le meilleur choix entre ces deux langages ?

Personnellement il m’est difficile de donner une réponse à cette question. Je suis fan de ces deux langages et je les trouve géniaux. Cependant je vous laisse la réponse de Linus Torvald :
« C++ est un langage horrible. Ce qui le rend d'autant plus horrible est le fait que beaucoup de programmeurs “substandard” l'utilisent, au point qu'il est nettement plus facile de générer de la merde totale et absolue avec elle. (…) En d'autres termes: le choix de C est le seul choix raisonnable. (…) C++ conduit vraiment un très mauvais choix de conception. (…) En d'autres termes, La seule manière de faire du C++ bien, efficace, de niveau système et portable revient à vous limitez à tous les trucs que sont à la base disponible en C ».



Une question? Cliquez ici pour la poser.

Retour sur le portail du langage C/C++