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 LE LEZ
On Fri, 12 May 2006 16:44:29 +0200, François-Xavier GENDRIN
:

mais il faut aussi que
les moins "ingénieux" se penche sur le code pour le comprendre.


N'oublie pas que bien souvent, la personne qui va relire ton code (et
aura bien du mal à en saisir les subtilités), c'est toi-même dans six
mois.

Avatar
vandevoorde
Yann Renard wrote:
[...]
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,


(Je suis l'auteur principale de "C++ Templates".)

Il existe au moins une version PDF de "C++ Templates", mais
elle est sur ma machine et pas a vendre ;-)

Il y a aussi une version "on-line" a www.safaribooksonline.com
(c'est payant, bien sur).

David

Avatar
James Kanze
François-Xavier GENDRIN wrote:
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 !


Le code peut, évidemment, jouer un rôle éducateur. Les révues de
code sont là pour en assurer la correction, mais ils peuvent
aussi être un moyen formateur important. N'empèche que pour
qu'un collègue apprend quelque chose de ton code, il faut qu'il
puisse le comprendre. Et parce qu'il a aussi son code à lui à
écrire, ça ne peut pas prendre des journées.

En fait, ce que je constante dans la pratique, c'est que les
programmeurs les plus doués écrivent le code le plus simple.

--
James Kanze
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
James Kanze
Fabien CHÊNE wrote:
"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.


C'est plus qu'une pondération. Une code n'est correcte que si
d'autres peuvent le lire -- comment sinon faire des révues de
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.


Le problème, c'est rarement la technique en soi (encore que je
connais des exceptions). C'est la façon qu'on l'a mise en
oeuvre.

Mais parfois, il peut y avoir un problème des collégues qui ne
sont pas à jour -- il faut aussi évidemment qu'une société qui
veut rester productive investisse dans la formation.

--
James Kanze
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
James Kanze
wrote:
Yann Renard wrote:
[...]


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 ?



(Je suis l'auteur principale de "C++ Templates".)


Il existe au moins une version PDF de "C++ Templates", mais
elle est sur ma machine et pas a vendre ;-)


Tu maintiens le livre en PDF. Je croyais que quand on publie, la
construction du livre, proprement dit, relevait de l'éditeur, et
non de l'auteur. (Et les éditeurs, dans le temps, avait des
outils autrement précis et puissants que le PDF.)

Il y a aussi une version "on-line" a www.safaribooksonline.com
(c'est payant, bien sur).


Aussi peut-être pour les autres. C'est à mon avis une bonne
solution pour les livres sur la méta-programmation per se, c-à-d
qui explique des techniques plus ou moins compliquées
d'utilisation des templates. Dans le cas de « C++ Templates »,
je conseillerais très fortement en revanche d'investir dans le
livre ; c'est le genre de livre auquel on va vouloir retourner
constamment.

--
James Kanze
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
Serge Paccalin
Le samedi 13 mai 2006 à 11:32:24, James Kanze a écrit dans
fr.comp.lang.c++ :

Il existe au moins une version PDF de "C++ Templates", mais
elle est sur ma machine et pas a vendre ;-)


Tu maintiens le livre en PDF.


Il n'a pas dit ça. Je pense plutôt qu'il le maintient dans un format
éditable (TeX ? PostScript ? Word ? OpenOffice ?) et qu'il génère le PDF
pour voir lui-même l'aspect final.

--
___________ 13/05/2006 11:43:42
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Pour bien répondre avec Google, ne pas cliquer
-'(__) « Répondre », mais « Afficher les options »,
_/___(_) puis cliquer « Répondre » (parmi les options).


Avatar
Gabriel Dos Reis
James Kanze writes:

| wrote:
| > Yann Renard wrote:
| > [...]
|
| >> 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 ?
|
| > (Je suis l'auteur principale de "C++ Templates".)
|
| > Il existe au moins une version PDF de "C++ Templates", mais
| > elle est sur ma machine et pas a vendre ;-)
|
| Tu maintiens le livre en PDF. Je croyais que quand on publie, la
| construction du livre, proprement dit, relevait de l'éditeur, et
| non de l'auteur. (Et les éditeurs, dans le temps, avait des
| outils autrement précis et puissants que le PDF.)

oui je connais beaucoup de cas où les auteurs ont une copie
PDF. Imagine que le bouquin aiet été composé en LaTeX. Bien sûr il y a
une certaine "finission" qui manque.

-- Gaby
Avatar
Gabriel Dos Reis
(Fabien CHÊNE) writes:

| James Kanze writes:
|
| > Fabien CHÊNE wrote:
| > > "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.
| >
| > C'est plus qu'une pondération. Une code n'est correcte que si
| > d'autres peuvent le lire
|
| Je ne suis pas sur de comprendre. Veux-tu dire : "Un code peut être
| considéré correct uniquement si d'autres peuvent le comprendre" ?

Je ne peux pas parle pour James, mais au fond comment établis-tu qu'un
code est correct ?

C'est un processus social.

-- Gaby
Avatar
fabien.chene.nospam
James Kanze writes:

Fabien CHÊNE wrote:
"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.


C'est plus qu'une pondération. Une code n'est correcte que si
d'autres peuvent le lire


Je ne suis pas sur de comprendre. Veux-tu dire : "Un code peut être
considéré correct uniquement si d'autres peuvent le comprendre" ?

-- comment sinon faire des révues de code.


Difficilement, sauf si ces revues de code sont aussi une occasion pour
faire de la formation.

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.


Le problème, c'est rarement la technique en soi (encore que je
connais des exceptions). C'est la façon qu'on l'a mise en
oeuvre.


De ma propre -- maigre -- expérience, pour les templates, c'est la
technique en soi qui pose problème.
Mais effectivement, pour les exceptions par exemple, le problème
concerne d'avantage la façon dont on les utilise.

--
Fab





Avatar
vandevoorde
James Kanze wrote:
wrote:
[...]

Il existe au moins une version PDF de "C++ Templates", mais
elle est sur ma machine et pas a vendre ;-)


Tu maintiens le livre en PDF. Je croyais que quand on publie, la
construction du livre, proprement dit, relevait de l'éditeur, et
non de l'auteur. (Et les éditeurs, dans le temps, avait des
outils autrement précis et puissants que le PDF.)


Dans notre cas, nous avons utilise LaTeX pout ecrire le bouquin,
et ensuite nous avons creer une version PDF "camera ready" que
l'editeur a utilise pour creer les copies physique. J'utilise parfois
une version PDF differente pour des recherche rapide.

Il y a aussi une version "on-line" a www.safaribooksonline.com
(c'est payant, bien sur).


Aussi peut-être pour les autres. C'est à mon avis une bonne
solution pour les livres sur la méta-programmation per se, c-à-d
qui explique des techniques plus ou moins compliquées
d'utilisation des templates. Dans le cas de « C++ Templates »,
je conseillerais très fortement en revanche d'investir dans le
livre ; c'est le genre de livre auquel on va vouloir retourner
constamment.


Merci ;-)

David


1 2 3 4