Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Template et heritage

36 réponses
Avatar
Yann Renard
Bonjour à tous,

depuis que je programme en C++, je n'ai pas eu beaucoup l'occasion de
développer des templates. Je comprends bien leur usage dans les classes
de la STL que j'utilise et j'ai aussi eu l'occasion de developper des
templates similaires. Mais je me demande comment les templates
s'inscrivent dans le processus d'abstraction du langage et notamment
dans le processus d'héritage : faire dériver une classe d'un template,
ou un template d'une classe par exemple (besoin, interet, avantages,
inconvénients...). Connaissez vous des pointeurs ou références qui
pourraient m'aider à comprendre cela ?

Merci et bonne journée,
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)

10 réponses

1 2 3 4
Avatar
fabien.chene.nospam
Fabien LE LEZ writes:

Mais les avis divergent, beauté
artistique selon l'un, usine à gaz ou complexe pétro-chimique selon
les autres.


La beauté d'un code réside dans sa simplicité.


C'est subjectif -- Mais tu as le droit de préférer les filles sans
maquillage :-)

Si une technique avancée rend un code plus facile à comprendre, alors
elle est positive.


Je ne suis que partiellement d'accord.

- Si une technique avancée rend un code plus facile à comprendre, alors
elle marque quelques points.

- Si une technique avancée rend l'implémentation plus aisée, alors
elle marque quelques points.

- Si une technique avancée n'est pas compréhensible pour les
collègues, alors elle perds quelques points.

- etc.

--
Fab


Avatar
fabien.chene.nospam
Gabriel Dos Reis writes:

(Fabien CHÊNE) writes:

| Gabriel Dos Reis writes:
|
| > | En fait, le langage template du C++ est turing complete, donc tu peux
| > | theoriquement tout faire avec.
| >
| > Une question est si cela est souhaitable dans un programme non-jouet.
|
| Des techniques de méta-programmation (genre manipulation tordue de
| mpl::list pour générer des variants),

si je dois écrire aujourd'hui du code à moyenne ou longue durée de
vie, la dernière chose dont j'ai envie c'est que le maintainer soit
« clever » pour le comprendre.
[Note que le maintainer peut être moi-même, deux ans après :-(]


Allez, je te relance :-) : considères-tu qu'il faudra être « clever »
pour émuler la méta-programmation à l'aide de concepts C++0X et de
surcharges ?

--
Fab

Avatar
Fred
Yann Renard wrote:
Bonjour à tous,

depuis que je programme en C++, je n'ai pas eu beaucoup l'occasion de
développer des templates. Je comprends bien leur usage dans les classes
de la STL que j'utilise et j'ai aussi eu l'occasion de developper des
templates similaires. Mais je me demande comment les templates
s'inscrivent dans le processus d'abstraction du langage et notamment
dans le processus d'héritage : faire dériver une classe d'un template,
ou un template d'une classe par exemple (besoin, interet, avantages,
inconvénients...). Connaissez vous des pointeurs ou références qui
pourraient m'aider à comprendre cela ?

Merci et bonne journée,
Yann


Hello,

En dehors d'Andrei, déjà cité, me vient à l'esprit la librairie Spirit
de Boost (http://www.boost.org/libs/spirit/index.html), un générateur de
parseurs qui utilise templates et surcharge d'opérateurs pour générer à
la compile, et qui montre à quel point on peut torturer le language pour
arriver à quelque chose d'utile.

Fred

Avatar
fabien.chene.nospam
Gabriel Dos Reis writes:

(Fabien CHÊNE) writes:

| Fabien LE LEZ writes:
|
| >>Mais les avis divergent, beauté
| >>artistique selon l'un, usine à gaz ou complexe pétro-chimique selon
| >>les autres.
| >
| > La beauté d'un code réside dans sa simplicité.
|
| C'est subjectif -- Mais tu as le droit de préférer les filles sans
| maquillage :-)

?


Que *je* trouve souvent beau, un code inutilement complexe mais
ingénieux. Quand à la métaphore, elle était peut-être ni réussie, ni à
ton goût, tant pis.

--
Fab

Avatar
kanze
Fabien CHÊNE wrote:
Fabien LE LEZ writes:

Mais les avis divergent, beauté artistique selon l'un, usine
à gaz ou complexe pétro-chimique selon les autres.


La beauté d'un code réside dans sa simplicité.


C'est subjectif -- Mais tu as le droit de préférer les filles
sans maquillage :-)


Quand la fille est vraiment belle, je la préfère nue -- sans
maquillage ni vêtements.

Si une technique avancée rend un code plus facile à
comprendre, alors elle est positive.


Je ne suis que partiellement d'accord.

- Si une technique avancée rend un code plus facile à comprendre, al ors
elle marque quelques points.

- Si une technique avancée rend l'implémentation plus aisée, alors
elle marque quelques points.

- Si une technique avancée n'est pas compréhensible pour les
collègues, alors elle perds quelques points.


Si une technique (avancée ou non) rend le code incompréhensible
aux collègues, ce n'est pas qu'elle perd quelques points ; c'est
qu'on n'a même pas le droit de s'en servir.

--
James Kanze GABI Software
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



Avatar
François-Xavier GENDRIN
Si une technique (avancée ou non) rend le code incompréhensible
aux collègues, ce n'est pas qu'elle perd quelques points ; c'est
qu'on n'a même pas le droit de s'en servir.


il faut de tout, il faut que les plus "ingénieux" rabaissent le niveau
de leur code pour que tout le monde le comprenne, mais il faut aussi que
les moins "ingénieux" se penche sur le code pour le comprendre. Sinon on
s'en sort pas !
--
FX

Avatar
Yann Renard
Yann Renard wrote:
Bonjour à tous,

depuis que je programme en C++, je n'ai pas eu beaucoup l'occasion de
développer des templates. Je comprends bien leur usage dans les classes
de la STL que j'utilise et j'ai aussi eu l'occasion de developper des
templates similaires. Mais je me demande comment les templates
s'inscrivent dans le processus d'abstraction du langage et notamment
dans le processus d'héritage : faire dériver une classe d'un template,
ou un template d'une classe par exemple (besoin, interet, avantages,
inconvénients...). Connaissez vous des pointeurs ou références qui
pourraient m'aider à comprendre cela ?

Merci et bonne journée,
Yann


Bonjour à tous,

merci pour vos multiples réponses. J'ai commencé à rechercher les
ouvrages suggerés :

"Modern C++ Design", de Andrei Alexandrescu
"C++ template, the complete guide" de Vandevoorde et Josuttis
"Scientific and engineering C++" de Barton et Nackmann
Ouvrages de Dave Abraham

Ces ouvrages existent ils en pdf ou ne sont ils qu'accessible
"physiquement" et à la vente ?

Merci et bonne journée,
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)

Avatar
fabien.chene.nospam
"kanze" writes:

Si une technique avancée rend un code plus facile à
comprendre, alors elle est positive.


Je ne suis que partiellement d'accord.

- Si une technique avancée rend un code plus facile à comprendre, alors
elle marque quelques points.

- Si une technique avancée rend l'implémentation plus aisée, alors
elle marque quelques points.

- Si une technique avancée n'est pas compréhensible pour les
collègues, alors elle perds quelques points.


Si une technique (avancée ou non) rend le code incompréhensible
aux collègues, ce n'est pas qu'elle perd quelques points ; c'est
qu'on n'a même pas le droit de s'en servir.


La valeur des "quelques" est en effet à pondérer selon les
situations. Il me parait tout à fait concevable qu'il y ait une
pondération importante pour la compréhensibilité du code.

Il y a peut-être aussi une alternative. Expliquer la dite technique
aux collègues, et voir s'il est envisageable de s'en servir.

--
Fab



Avatar
fabien.chene.nospam
"kanze" writes:

Il n'y a pas qu'Andrei qui a traité le problème -- Dave Abraham
aussi (mais je ne l'ai pas encore lu),


Si tu parles bien de Dave Abrahams en tant que co-auteur de _C++
template metaprogramming_, c'est un livre qui suppose acquise la
généricité, et qui traite de la métaprogrammation. C'est aussi une
visite guidée de Boost.MPL, plutôt fascinent !

--
Fab

Avatar
Jean-Marc Bourguet
François-Xavier GENDRIN writes:

Si une technique (avancée ou non) rend le code incompréhensible
aux collègues, ce n'est pas qu'elle perd quelques points ; c'est
qu'on n'a même pas le droit de s'en servir.


il faut de tout, il faut que les plus "ingénieux"
rabaissent le niveau de leur code pour que tout le monde
le comprenne, mais il faut aussi que les moins "ingénieux"
se penche sur le code pour le comprendre. Sinon on s'en
sort pas !


Les programmeurs sont comme les chauffeurs, ils sont 80% à
se croire au dessus de la médiane... Et la moitié des
autres le sont réellement.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


1 2 3 4