Note : 3 ; Un livre décevant, échouant sur C++ et sur la méthode.
Le titre de l’ouvrage était prometteur : C++ est le langage multi-paradigmes par excellence. Le livre de Bjarne Stroustup sur le langage commence même par une phrase en faisant mention. Et j’avoue que concevoir des structures intégrant objet, types abstrait des données et templates est l’un des exercices que je trouve le plus stimulant avec ce langage. Bref, j’avais des attentes assez élevées concernant cet ouvrage. Elles ont été un peu douchées.
Avec 260 pages découpées en 9 chapitres, le texte n’a pas un abord inquiétant, il promet même un rythme de lecture assez soutenable avec des chapitres pas trop longs. Le premier chapitre, avec ses 27 pages introduit justement cette question du multiparadigme et l’erreur de casting va commencer à apparaitre. L’auteur y évoque les variabilités et les « commonalités » ainsi que du domaine de l’analyse et du domaine de la solution. L’auteur s’y perd quelque peu et nous perd encore plus. Tout cela ne commence pas bien.
L’identification des commonalités dans le domaine de l’analyse est le sujet du chapitre 2. Après la confusion du premier chapitre les choses semblent plus claires ici : c’est la recherche des dénominateurs communs dans les concepts de l’application. J’ai l’impression de revivre les temps d’OMT (même si UML était déjà là et bien là en 1999). En fait l’auteur se prévaut de références plus anciennes : David Parnas et Ed Yourdon, donc datant des années 80 voir avant ! La tentative d’accoster du code C++ à cela parait bien poussive.C’est au tour de la variabilité d’être investiguée au chapitre 3. L’auteur y distingue différents types de variabilité, qui s’expriment dans le langage avec différents « binding times ». L’idée est intéressante et originale. Ainsi l’auteur décline ces différents binds : à la compilation avec la compilation conditionnelle, au link avec les templates et bien sûr à l’exécution avec les méthodes virtuelles. La projection du volet conceptuel vers le volet technique est hélas moins clair.
C’est au tour du domaine de la solution d’être abordée au chapitre 4. Par pudeur je vais passer assez rapidement sur le sujet. La démarche de l’auteur nécessite qu’il aborde le sujet, mais nous nous noyons de nouveau dans une confusion où Jim Coplien essaie de faire émerger quelques idées comme les sous-domaines. Il faudra attendre Eric Evans et le « domain driven design » pour avoir une vue et une direction plus claire sur le sujet. Rendez-vous dans 4 ans. Si il est moins confus, le chapitre 5 consacré à l’analyse orientée objets ouvre gentiment des portes ouvertes et n’a guère d’intérêt, malgré les efforts évidents de l’auteur.
Retour au domaine de la solution, c’est à dire à la conception au chapitre 6. Cela a toujours été le point faible des anciennes méthodes objet qui différenciaient analyse et conception (ce qui hélas aussi fait ici). Elles étaient assez « opiniated » sur la manière de mener à bien l’analyse et essayaient maladroitement et fort inefficacement d’avoir aussi une démarche prescriptive sur la conception. Cela n’a jamais marché et vu le peu d’efforts déployé sur ce front, sans doute en étaient-ils eux-mêmes conscient. Il faudra attendre les Design Patterns pour investir ce terrain avec succès. Curieusement l’auteur est impliqué dans ce mouvement depuis le début, mais l’ignore superbement ici. Nous avons en lieu et place une tentative de projection des besoins d’analyse sur les structures du langage. Le chapitre 7, qui compte près de 50 pages va enfin nous parler de mixer les paradigmes ! Il est question ici de mixer les notions de variabilités vues précédemment. L’idée est donc de donner un sens global à tout ceci, un objectif raté dans les grandes largeurs. Nous revenons à la confusion initiale. Le propos défie toute description.
Le chapitre 8 « weaving the paradigmes together » est presqu’aussi volumineux avec ses 40 pages. J’ai bien du mal à comprendre en quoi le propos se différencie du chapitre précédent. Ce n’est finalement qu’un même et unique marasme de 90 pages. Passons. Le dernier chapitre, nous ramène à un domaine connu et dont on peut parler : les patterns ! Ici, Jim Coplien va relier ses concepts de variabilité avec les variabilités des patterns du GoF. En fait, nous n’avions guère besoin des tours et détours de la méthodologie de Coplien pour cela…
James Coplien essaye de jouer au méthodologiste ! Grand mal lui prend, si le titre est aguicheur, la lecture de ce livre qui frise parfois l’ésotérisme et présente finalement bien peu d’intérêt.
Référence complète : Multi-Paradigm design for C++ – James Coplien – Addison Wesley 1999 – ISBN: 0-201-82467-1
