On Sat, 10 May 2008 06:53:06 -0700 (PDT), James Kanze :
Je ne peux pas dire ; je n'ai jamais lu Alexandrescu. A priori, d'après ces articles dans les news et dans des journaux, il me donnait l'impression de s'amuser,
J'ai l'impression qu'il y a deux visions des choses :
- "Effective C++" (Meyers) et "C++ Templates - The Complete Guide" (Vandevoorde, Josuttis) sont des livres "de bas en haut" : ce sont des cours où on indique les "bases" (même si le niveau final peut être assez haut).
- "Exceptional C++" et "More Exceptional C++" (Sutter) et "Modern C++ Design" (Alexandrescu) sont des livres "de haut en bas" : ils explorent les limites du langage, et en profitent tout de même pour donner assez de "bases" pour que le lecteur puisse suivre.
Il me semble que chacun appréciera telle ou telle méthode selon sa propre sensibilité. Personnellement, je préfère la seconde : profiter de l'exposé de trucs bien tordus pour comprendre les mécanismes de base.
plutôt que d'essayer des choses pratiques et utilisables.
Le livre "Modern C++ Design" est tout de même la description d'une bibliothèque d'usage général (Loki). Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
On Sat, 10 May 2008 06:53:06 -0700 (PDT), James Kanze
<james.kanze@gmail.com>:
Je ne peux pas dire ; je n'ai jamais lu Alexandrescu. A priori,
d'après ces articles dans les news et dans des journaux, il me
donnait l'impression de s'amuser,
J'ai l'impression qu'il y a deux visions des choses :
- "Effective C++" (Meyers) et "C++ Templates - The Complete Guide"
(Vandevoorde, Josuttis) sont des livres "de bas en haut" : ce sont des
cours où on indique les "bases" (même si le niveau final peut être
assez haut).
- "Exceptional C++" et "More Exceptional C++" (Sutter) et "Modern C++
Design" (Alexandrescu) sont des livres "de haut en bas" : ils
explorent les limites du langage, et en profitent tout de même pour
donner assez de "bases" pour que le lecteur puisse suivre.
Il me semble que chacun appréciera telle ou telle méthode selon sa
propre sensibilité. Personnellement, je préfère la seconde : profiter
de l'exposé de trucs bien tordus pour comprendre les mécanismes de
base.
plutôt que d'essayer des choses pratiques et utilisables.
Le livre "Modern C++ Design" est tout de même la description d'une
bibliothèque d'usage général (Loki). Par exemple, le but du chapitre 6
est d'implémenter une classe "singleton", utilisable dans un grand
nombre de cas (grâce au "policies"), pour éviter au programmeur
d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue
n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost
d'ailleurs), mais le but est éminemment pratique.
On Sat, 10 May 2008 06:53:06 -0700 (PDT), James Kanze :
Je ne peux pas dire ; je n'ai jamais lu Alexandrescu. A priori, d'après ces articles dans les news et dans des journaux, il me donnait l'impression de s'amuser,
J'ai l'impression qu'il y a deux visions des choses :
- "Effective C++" (Meyers) et "C++ Templates - The Complete Guide" (Vandevoorde, Josuttis) sont des livres "de bas en haut" : ce sont des cours où on indique les "bases" (même si le niveau final peut être assez haut).
- "Exceptional C++" et "More Exceptional C++" (Sutter) et "Modern C++ Design" (Alexandrescu) sont des livres "de haut en bas" : ils explorent les limites du langage, et en profitent tout de même pour donner assez de "bases" pour que le lecteur puisse suivre.
Il me semble que chacun appréciera telle ou telle méthode selon sa propre sensibilité. Personnellement, je préfère la seconde : profiter de l'exposé de trucs bien tordus pour comprendre les mécanismes de base.
plutôt que d'essayer des choses pratiques et utilisables.
Le livre "Modern C++ Design" est tout de même la description d'une bibliothèque d'usage général (Loki). Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
Jean-Marc Desperrier
Fabien LE LEZ wrote:
[...] Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique qui en fin de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait que le jour où on fera l'effort de refactoriser pour supprimer cette dépendance sur un objet global unique, ce sera un peu plus facile que si on avait utilisé une variable globale.
Fabien LE LEZ wrote:
[...] Par exemple, le but du chapitre 6
est d'implémenter une classe "singleton", utilisable dans un grand
nombre de cas (grâce au "policies"), pour éviter au programmeur
d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue
n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost
d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique qui en fin
de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait que le jour
où on fera l'effort de refactoriser pour supprimer cette dépendance sur
un objet global unique, ce sera un peu plus facile que si on avait
utilisé une variable globale.
[...] Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique qui en fin de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait que le jour où on fera l'effort de refactoriser pour supprimer cette dépendance sur un objet global unique, ce sera un peu plus facile que si on avait utilisé une variable globale.
James Kanze
On May 13, 10:39 am, Jean-Marc Desperrier wrote:
Fabien LE LEZ wrote:
[...] Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique qui en fin de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait que le jour où on fera l'effort de refactoriser pour supprimer cette dépendance sur un objet global unique, ce sera un peu plus facile que si on avait utilisé une variable globale.
L'intérêt des singleton, c'est qu'il y a des classes qui représentent des entités qui sont par leur nature unique. En C++, un intérêt supplémentaire, souvent, c'est qu'ils permettent à gérer l'ordre d'initialisation.
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On May 13, 10:39 am, Jean-Marc Desperrier <jmd...@alussinan.org>
wrote:
Fabien LE LEZ wrote:
[...] Par exemple, le but du chapitre 6
est d'implémenter une classe "singleton", utilisable dans un grand
nombre de cas (grâce au "policies"), pour éviter au programmeur
d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue
n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost
d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique
qui en fin de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait
que le jour où on fera l'effort de refactoriser pour supprimer
cette dépendance sur un objet global unique, ce sera un peu
plus facile que si on avait utilisé une variable globale.
L'intérêt des singleton, c'est qu'il y a des classes qui
représentent des entités qui sont par leur nature unique. En
C++, un intérêt supplémentaire, souvent, c'est qu'ils permettent
à gérer l'ordre d'initialisation.
Quant à l'intérêt d'alourdir un concept fondamentalement assez
simple avec des policies multiples, en revanche...
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
[...] Par exemple, le but du chapitre 6 est d'implémenter une classe "singleton", utilisable dans un grand nombre de cas (grâce au "policies"), pour éviter au programmeur d'avoir à réimplémenter ce design pattern à chaque fois. J'avoue n'avoir pas encore utilisé cette bibliothèque (pas plus que Boost d'ailleurs), mais le but est éminemment pratique.
But éminemment pratique me semble mal désigner une pratique qui en fin de compte est mauvaise.
Fondamentalement, l'intérêt des singleton se réduit au fait que le jour où on fera l'effort de refactoriser pour supprimer cette dépendance sur un objet global unique, ce sera un peu plus facile que si on avait utilisé une variable globale.
L'intérêt des singleton, c'est qu'il y a des classes qui représentent des entités qui sont par leur nature unique. En C++, un intérêt supplémentaire, souvent, c'est qu'ils permettent à gérer l'ordre d'initialisation.
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
espie
In article , James Kanze wrote:
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme. Le chapitre sur les smart pointers, qui utilise les memes techniques, est quand meme plus sympa.
Mais bon, c'est clair que dans son bouquin, c'est quand meme la premiere partie (Techniques) la plus interessante. Je soupconne que la 2e est tres utile a quelqu'un qui a besoin d'exemples concrets pour comprendre la premiere...
In article <ce37c0fe-329a-464e-8724-e82ac0537416@m36g2000hse.googlegroups.com>,
James Kanze <james.kanze@gmail.com> wrote:
Quant à l'intérêt d'alourdir un concept fondamentalement assez
simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme.
Le chapitre sur les smart pointers, qui utilise les memes techniques,
est quand meme plus sympa.
Mais bon, c'est clair que dans son bouquin, c'est quand meme la premiere
partie (Techniques) la plus interessante. Je soupconne que la 2e est
tres utile a quelqu'un qui a besoin d'exemples concrets pour comprendre
la premiere...
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme. Le chapitre sur les smart pointers, qui utilise les memes techniques, est quand meme plus sympa.
Mais bon, c'est clair que dans son bouquin, c'est quand meme la premiere partie (Techniques) la plus interessante. Je soupconne que la 2e est tres utile a quelqu'un qui a besoin d'exemples concrets pour comprendre la premiere...
James Kanze
On May 13, 11:54 am, (Marc Espie) wrote:
In article , James Kanze wrote:
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme.
Certes. En fait, je ne nies pas l'utilité des policies en général -- mon propre Singleton en a même (pour choisir s'il faut appeler le destructeur ou non). Mais c'est un résultat d'un besoin réel (et j'ai hésité longtemps avant de l'introduire) -- j'ai souvent l'impression avec Alexandrescu qu'il essaie de couvrir tous les cas, utiles ou non, et en ce faisant, il introduit de la complexité inutile.
Le chapitre sur les smart pointers, qui utilise les memes techniques, est quand meme plus sympa.
C'est très intéressant, techniquement, comme exemple de ce qui est possible. Dans la pratique, je trouve la solution Boost plus « manageable ».
Mais bon, c'est clair que dans son bouquin, c'est quand meme la premiere partie (Techniques) la plus interessante. Je soupconne que la 2e est tres utile a quelqu'un qui a besoin d'exemples concrets pour comprendre la premiere...
Je ne nie pas l'intérêt du bouquin. Il en faut à beaucoup de niveau pour que la technologie avance. Seulement, je doute l'utilité immédiate de ces classes dans des applications industrielles d'aujourd'hui, et encore plus quand le livre est apparu. AMHA, il faut le comprendre plutôt comme de l'expériementation -- voici ce qu'on *peut* faire avec C++, et non voici ce qu'il faut faire systèmatiquement. Avec le temps, évidemment, la technologie évolue, et parmi ces choses qu'on peut faire, certaines deviendront réelement pratiques, voire même usuelles, et d'autres disparaîtront faute d'une utilité réele ou parce qu'ils créent plus de problèmes qu'ils n'en résoudent.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On May 13, 11:54 am, es...@lain.home (Marc Espie) wrote:
In article
<ce37c0fe-329a-464e-8724-e82ac0537...@m36g2000hse.googlegroups.com>,
James Kanze <james.ka...@gmail.com> wrote:
Quant à l'intérêt d'alourdir un concept fondamentalement assez
simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme.
Certes. En fait, je ne nies pas l'utilité des policies en
général -- mon propre Singleton en a même (pour choisir s'il
faut appeler le destructeur ou non). Mais c'est un résultat d'un
besoin réel (et j'ai hésité longtemps avant de l'introduire) --
j'ai souvent l'impression avec Alexandrescu qu'il essaie de
couvrir tous les cas, utiles ou non, et en ce faisant, il
introduit de la complexité inutile.
Le chapitre sur les smart pointers, qui utilise les memes
techniques, est quand meme plus sympa.
C'est très intéressant, techniquement, comme exemple de ce qui
est possible. Dans la pratique, je trouve la solution Boost plus
« manageable ».
Mais bon, c'est clair que dans son bouquin, c'est quand meme
la premiere partie (Techniques) la plus interessante. Je
soupconne que la 2e est tres utile a quelqu'un qui a besoin
d'exemples concrets pour comprendre la premiere...
Je ne nie pas l'intérêt du bouquin. Il en faut à beaucoup de
niveau pour que la technologie avance. Seulement, je doute
l'utilité immédiate de ces classes dans des applications
industrielles d'aujourd'hui, et encore plus quand le livre est
apparu. AMHA, il faut le comprendre plutôt comme de
l'expériementation -- voici ce qu'on *peut* faire avec C++, et
non voici ce qu'il faut faire systèmatiquement. Avec le temps,
évidemment, la technologie évolue, et parmi ces choses qu'on
peut faire, certaines deviendront réelement pratiques, voire
même usuelles, et d'autres disparaîtront faute d'une utilité
réele ou parce qu'ils créent plus de problèmes qu'ils n'en
résoudent.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Quant à l'intérêt d'alourdir un concept fondamentalement assez simple avec des policies multiples, en revanche...
Alexandrescu a des exemples plus utiles, quand meme.
Certes. En fait, je ne nies pas l'utilité des policies en général -- mon propre Singleton en a même (pour choisir s'il faut appeler le destructeur ou non). Mais c'est un résultat d'un besoin réel (et j'ai hésité longtemps avant de l'introduire) -- j'ai souvent l'impression avec Alexandrescu qu'il essaie de couvrir tous les cas, utiles ou non, et en ce faisant, il introduit de la complexité inutile.
Le chapitre sur les smart pointers, qui utilise les memes techniques, est quand meme plus sympa.
C'est très intéressant, techniquement, comme exemple de ce qui est possible. Dans la pratique, je trouve la solution Boost plus « manageable ».
Mais bon, c'est clair que dans son bouquin, c'est quand meme la premiere partie (Techniques) la plus interessante. Je soupconne que la 2e est tres utile a quelqu'un qui a besoin d'exemples concrets pour comprendre la premiere...
Je ne nie pas l'intérêt du bouquin. Il en faut à beaucoup de niveau pour que la technologie avance. Seulement, je doute l'utilité immédiate de ces classes dans des applications industrielles d'aujourd'hui, et encore plus quand le livre est apparu. AMHA, il faut le comprendre plutôt comme de l'expériementation -- voici ce qu'on *peut* faire avec C++, et non voici ce qu'il faut faire systèmatiquement. Avec le temps, évidemment, la technologie évolue, et parmi ces choses qu'on peut faire, certaines deviendront réelement pratiques, voire même usuelles, et d'autres disparaîtront faute d'une utilité réele ou parce qu'ils créent plus de problèmes qu'ils n'en résoudent.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34