Hello,
Quelqu'un aurait-il déjà fait le compte de ce qui aujourd'hui peut être considéré comme obsolète dans le livre Modern C++ Design, du fait de l'existence de Boost et de l'arrivée de C++11 ?
Hello,
Quelqu'un aurait-il déjà fait le compte de ce qui aujourd'hui peut être considéré comme obsolète dans le livre Modern C++ Design, du fait de l'existence de Boost et de l'arrivée de C++11 ?
Bonjour,
Je n'ai pas pris le temps de le faire, mais la seul chose que je vois de vraiment obslète ca serait l'utilisation de Loki pour les typelist (mpl propose mieux), et certains code à base de typelist qui peuvent se simplifier avec les variadics.
Sinon l'ensemble des idées évoqués et des patterns implémentés (une partie des patterns du GoF qui ont fait leurs preuves) restent toujours d'actualité.
Si je prends le somaire :
I.
1. La nouvelle norme et boost n'y changent rien.
2. Il pourrait rajouter qu'il existent beaucoup de type traits dans la bibliothèques standards et boost, et préciser que des "type intégrale" (un type qui représente un entier) existent dans boost et la bibliothèque standard.
3. Celui-ci pourrait être remanier en profondeur en parlant de mpl et des variadics.
4. Rien à changer, même si ca existe dans boost, en exliquer le fonctionnement fait partie de l'objectif de l'auteur.
II.
5. Bien que ce pattern existent maintenant dans boost et dans la bibliothèque standard. Un livre parlant de conception qui ferait une impasse total dessus oculterait un gros morcreau (pattern command). Coté techniques, ca reste toujours valable.
6. La nouvelle norme change un peu la donne pour le coté MT, je ne vois rien d'autre (pattern singleton).
7. Celui-ci pourrait parler de std/boost::shared_ptr/unique_ptr/weak_ptr, mais ce pattern offre des questions de designs via politique intéressant (non-orthogonalité du MT/OwnerShip) et montre la richesse du design par politiques (possibilité de générer facilement un ensemble assez grand de pointeurs intelligents tous différent).
8. La nouvelle norme et boost n'y changent rien. (object factory)
9. La nouvelle norme et boost n'y changent rien. (abstract factory)
10. La nouvelle norme et boost n'y changent rien. (visitor)
11. La nouvelle norme et boost n'y changent rien. (multi-dispatch)
On peut aussi noter qu'en général quand boost est mentionné dans un livre c'est que l'élément de boost dont on parle va passer dans la prochaine norme, sinon il n'est en général cité qu'à titre d'exemple de bibliothèque (ie c'est pas parcequ'un concept a été introduit d'en boost que la littérature proposant une implémentation différente du concept est intuile).
Par contre, ce qui commence à devenir un peu plus obsolète (ama), c'est Loki.
Edit: Pour les visitor et factory, boost propose bien quelque chose, mais c'est assez différent de l'implémentation proposé par Alexandrescu (donc ca ne change rien au contenue du chapitre, AMA).
C'est justement ce qui a motivé la création de ce fil.
Le problème est que beaucoup des éléments de ce chapitres sont utilisés dans d'autres, notamment la deuxième partie (ex : fabrique abstraite).
Quelle bibliothèque ?
Une référence à ce qui existe actuellement serait toutefois bienvenu.
Loki étant une transposition (et plus, à présent) du livre, j'en déduis que ce qui reste intéressant dans le livre n'est pas le côté fonctionnel, mais une exploration approfondie du codage à base de templates ?
boost.pool, ca s'appelle pas SmallObjectAllocator, mais les principes sont assez proche (on alloue un segment continue puis on le gère en interne).Quelle bibliothèque ?
Je sais pas si Alexandrescu a prévu de faire une réédition, mais ca ne change rien à le contenue profond du livre.Une référence à ce qui existe actuellement serait toutefois bienvenu.
Le titre du livre étant "Modern C++ Design" ce qui est intéressant est la mise en avant de la possibilité en C++ (grâce aux template) de décomposer un design en comportements hortogonaux et de les assembler à la compilation.Loki étant une transposition (et plus, à présent) du livre, j'en déduis que ce qui reste intéressant dans le livre n'est pas le côté fonctionnel, mais une exploration approfondie du codage à base de templates ?
Au fond tant que la syntaxe du C++ permet l'utilisation de l'héritage et des TTP les idées évoquées restent valables.
Si, il en a parlé lors des conférences Going Native il y a quelqeus semaines. En gros, il pense pouvoir faire une nouvelle version avec le contenu de l'ancien très condensé mais avec de nouveaux trucs, notemment exploitant les variadic template avec des paramettres variadic template... pour faire des policy encore mieu.Je sais pas si Alexandrescu a prévu de faire une réédition, mais ca ne change rien à le contenue profond du livre.
Je vous invite à regarder le premier ou le second "panel" de Going Native où lui et Herb Sutter parle des livres à venir et du fait que pour certains il va falloir qu'on ai plus d'expérience pratique avec C++11 pour rassembler de vrai conseils dans des livres.
Partager