Critique du document :
Le langage C++, par Henri Garetta (Neutre)
1. Public visé
Ce document est destiné à des gens connaissant le C, mais n'ayant pas
de notions préalables en C++. Il se présente comme un document
d'apprentissage.
2. Sujets couverts
L'auteur suppose que le lecteur connait le C. Il commence par décrire
les petites différences entre C et C++ (bool, surcharge...), puis se
consacre au sujet principal du document : Les classes. A la fin, il
survole rapidement templates et exceptions. La bibliothèque standard
est globalement laissée de côté, à part une rapide introduction aux
flux.
3. Qualité des explications
Les explications sont assez didactiques. L'équilibre entre détail et
brièveté semble bien trouvé. Je suis juste un peu sceptique sur
l'approche de l'héritage, qui commence par l'héritage privé et le
masquage de fonctions, alors que l'héritage publique et le
polymorphisme ne sont vus qu'ensuite.
Parfois, le vocabulaire utilisé n'est pas celui typique du C++, mais je
ne suis pas assez sensible à ça pour trouver ça gênant.
Enfin, je reste parfois un peu sur ma faim. Les principaux mécanismes
sont présentés, mais il n'est pas forcément trivial de voir quel peut
bien être l'utilité de ces mécanismes, et surtout quels alternatives
existent et quand choisir quoi.
4. Pertinence des exemples
Les exemples sont centrés uniquement sur le sujet en cours de
discussion, ce qui est dommage, car ils n'habituent pas aux bons
réflexes qui ont été présentés juste avant. Quelques exemples :
À part dans le paragraphe sur const, aucune fonction membre
n'est const.
Souvent, les données membre sont publiques. Bien que ce soit un
raccourci d'écriture pratique pour illustrer un point sans rapport dans
des documents pour développeurs avancés, dans un document pour
débutant, le risque est fort que ce style soit pris pour exemple
Mis à part ce défaut, ils sont bien choisis, et j'aime bien la
présentation de plusieurs exemples, dont certains qui ne marchent pas,
afin de bien faire comprendre les nuances des notions présentées.
5. Exactitude
Quelques erreurs ou imprécisions viennent entacher ce document :
Il n'est pas dit qu'inline n'est
qu'un souhait exprimé au compilateur
Dans une fonction, les noms des arguments sont facultatifs soit
pour la
déclaration, soit pour la définition (soit les deux, s'ils ne sont pas
utilisés), et non pas seulement pour la
déclaration
Le texte flirte avec la notion (fausse) qu'une copie de classe
peut être bit à bit
Il n'est pas précisé que certain opérateurs ne peuvent être
surchargés qu'en tant que fonction membre
Il y a parfois confusion entre le comportement décrit par le
langage et la façon dont un compilateur peut s'y prendre pour parvenir
à le réaliser
Comme on le voit, il n'y a pas vraiment de problèmes fondamentaux,
principalement des voies d'amélioration.
6. Forme
La mise en forme est correcte, avec les schémas qui vont bien là où il
faut. Quelques fautes d'orthographes mais en nombre ne gênant pas la
lecture.
7. Conclusion
Le principal reproche que je ferais à ce document est de ne vraiment
traiter que des concepts de base des classes. S'il avait présenté
quelques idiomes courants d'utilisation, avait réellement présenté en
détail les autres concepts spécifiques au C++ par rapport au C
(namespaces, templates, exceptions et code exception-safe, bibliothèque
standard), il n'en aurait été que meilleur.
En l'état, bien que je ne le déconseille pas, il est insuffisant à lui
seul pour donner à des développeurs C une vue générale du C++. Neutre.
8. Fiche technique :
Version critiquée : 2 mars 2002
Nombre de pages : 58
Format : pdf
License : ??
Mots clefs : C Débutant
Mail de l'auteur : henri.garreta@luminy.univ-mrs.fr