Note : 4 ; Ni bon ni mauvais, juste alimentaire… et dépassé !
Encore un bouquin pour ceux qui veulent passer au C++ ! Celui-ci accuse 20 ans et se présente sous la forme d’un texte de 350 pages découpé en … 4 chapitres. Nous avons donc une belle moyenne de près de 90 pages par chapitre. Ca se présente mal. Voyons ce qu’il en est « en vrai ».
Le premier chapitre n’en est pas un. C’est plutôt un avant-propos qui nous souhaite la bienvenue sur 3 pages.
Le second chapitre est déjà plus conséquent avec ses 90 pages. Il aborde C++ en tant que « C avancé ». Et c’est vrai que l’on y parle pas beaucoup de C++ ! On y montre beaucoup d’éléments du langage C avec quelques spécificités du C++ comme les références les nouveaux types de cast ou des fonctions de la librairie standard C++. Mais de classes, point (par exemple). J’ai bien aimé les courts exemples pour illustrer les concepts.
Le troisième chapitre couvre 110 pages et aborde justement les classes. D’abord les éléments de base, puis très rapidement les templates. C’est même un peu déroutant. La surcharge d’opérateur et la sérialisation pour les streams déboulent un peu n’importe comment là-dedans. J’allais dire que j’étais content de ne pas avoir débuté avec cet ouvrage, mais en fait j’ai commencé avec le Stroustrup. Ce n’est pas prouvé que ce soit tellement mieux… Ca se poursuit avec la constance, les namespaces, etc… Tout cela est terriblement confus et à mon avis relatif à ce découpage pas très raisonnable en chapitres d’une centaine de pages.
Le 4ème chapitre traite de la programmation orientée objet en C++. C’est le dernier chapitre, on en prend pour 140 pages : on va s’amuser ! On commence par parler d’héritage, de classe et de polymorphisme (encore cette confusion entre orienté-objet et polymorphisme…). On parle aussi de visibilité. Bien sûr on en a déjà parlé dans le volume (pardon, le chapitre) précédent, mais là on a les éléments pour en comprendre l’utilité. Les exemples ne sont pas bluffant. L’utilisation d’une classe « Generique » comme illustration d’une classe de base abstraite est à mon avis un gros ratage. Les exemples sont aussi trop longs et trop complexe. L’héritage multiple est assimilé à de l’héritage « en diamant » de quoi donner des arguments aux détracteurs !
Le bouquin fait certainement le boulot, on a vu pire à cet égard. Mais il n’est pas engageant et on ne l’abordera pas pour le plaisir. Les exemples sont souvent complexes, obscurcissant le focus qui devrait être sur le langage pour comprendre l’algorithmique (cf. les arbres binaires). Le langage a bien évolué depuis, sans même parler de la norme C++ 11, c’est donc fort logiquement qu’on le jugera maintenant obsolète.
Référence complète : Langage C++ seconde édition, passage du C au C++ et programmation orientée objet – Nino Silverio – Eyrolles 1993 – ISBN : 978212088588