Une solution très simple pour éviter tous les problèmes du
polymorphisme d'inclusion dynamique consiste à ne pas utiliser
d'héritage et de fonctions virtuelles, mais d'utiliser à la place les
templates et de simples fonctions,
Bien sûr la type erasure on a toujours la même limitation qu'avec
l'objet : le type est perdu une fois qu'il a été effacé, et donc le s
appels suivants ne vont pas le refiner. Mais si ceci est un problème,
c'est probablement que l'algorithme générique en question ne demande
pas les bons concepts à ses arguments.
Une solution très simple pour éviter tous les problèmes du
polymorphisme d'inclusion dynamique consiste à ne pas utiliser
d'héritage et de fonctions virtuelles, mais d'utiliser à la place les
templates et de simples fonctions,
Bien sûr la type erasure on a toujours la même limitation qu'avec
l'objet : le type est perdu une fois qu'il a été effacé, et donc le s
appels suivants ne vont pas le refiner. Mais si ceci est un problème,
c'est probablement que l'algorithme générique en question ne demande
pas les bons concepts à ses arguments.
Une solution très simple pour éviter tous les problèmes du
polymorphisme d'inclusion dynamique consiste à ne pas utiliser
d'héritage et de fonctions virtuelles, mais d'utiliser à la place les
templates et de simples fonctions,
Bien sûr la type erasure on a toujours la même limitation qu'avec
l'objet : le type est perdu une fois qu'il a été effacé, et donc le s
appels suivants ne vont pas le refiner. Mais si ceci est un problème,
c'est probablement que l'algorithme générique en question ne demande
pas les bons concepts à ses arguments.
Alors je me permet de me reciter moi-meme puisque ce dont vous parlez
s'appelle "Curiously recurring template pattern" depuis plus de 15
ans, abrege en CRTP dans mon post precedent.
Vous devriez essayer d'ecrire un interpreteur
un evaluateur de
feuille Excel
ou encore un client de database par exemple
et nous
montrer quels concepts vos algorithmes generiques demanderont a leurs
arguments dont les types seront inconnus a la compilation.
Alors je me permet de me reciter moi-meme puisque ce dont vous parlez
s'appelle "Curiously recurring template pattern" depuis plus de 15
ans, abrege en CRTP dans mon post precedent.
Vous devriez essayer d'ecrire un interpreteur
un evaluateur de
feuille Excel
ou encore un client de database par exemple
et nous
montrer quels concepts vos algorithmes generiques demanderont a leurs
arguments dont les types seront inconnus a la compilation.
Alors je me permet de me reciter moi-meme puisque ce dont vous parlez
s'appelle "Curiously recurring template pattern" depuis plus de 15
ans, abrege en CRTP dans mon post precedent.
Vous devriez essayer d'ecrire un interpreteur
un evaluateur de
feuille Excel
ou encore un client de database par exemple
et nous
montrer quels concepts vos algorithmes generiques demanderont a leurs
arguments dont les types seront inconnus a la compilation.
Mathias Gaunard writes:
[...]
| Si tu fais de l'OO, de toutes façons, tu veux sûrement virer
| constructeur de copie et opérateur d'affectation.
Pourquoi ?
wow. Je me demande pourquoi personne n'y a pensé avant.
| Apparemment c'est plus cette approche de programmation qui plaît aux
| gens qui travaillent sur le standard, et l'orienté objet est donc un
| peu délaissé.
Que connais-tu de l'approche de programmation des personnes qui
travaillent sur le standard ?
Mathias Gaunard <loufo...@gmail.com> writes:
[...]
| Si tu fais de l'OO, de toutes façons, tu veux sûrement virer
| constructeur de copie et opérateur d'affectation.
Pourquoi ?
wow. Je me demande pourquoi personne n'y a pensé avant.
| Apparemment c'est plus cette approche de programmation qui plaît aux
| gens qui travaillent sur le standard, et l'orienté objet est donc un
| peu délaissé.
Que connais-tu de l'approche de programmation des personnes qui
travaillent sur le standard ?
Mathias Gaunard writes:
[...]
| Si tu fais de l'OO, de toutes façons, tu veux sûrement virer
| constructeur de copie et opérateur d'affectation.
Pourquoi ?
wow. Je me demande pourquoi personne n'y a pensé avant.
| Apparemment c'est plus cette approche de programmation qui plaît aux
| gens qui travaillent sur le standard, et l'orienté objet est donc un
| peu délaissé.
Que connais-tu de l'approche de programmation des personnes qui
travaillent sur le standard ?
| Je ne comprends pas trop pourquoi vous me donnez ce lien, que j'ai
| d'ailleurs déjà lu il y a longtemps.
C'est ce qui rend ta conclusion fascinante.
| Je n'ai jamais dit que c'était équivalent.
Il y a une section appelée « related work » -- qui en plus du corps de
l'article -- discute brievement alternatives ainsi que quelques unes d e
limitations.
La section « results » montre a une comparaison entre les
différents systèmes mentionnés où Loki occupe une place mémorab le.
| La proposition parle d'ailleurs d'un outil de Loki pour faire du
| multiple-dispatch qui nécessite de lister l'ensemble des classes dans
| une type list, donc ce n'est pas une restriction si gênante.
comme la performance (taille du code, temps d'exécution) ?
| Après la solution de Loki est lente car linéaire, mais elle fonctio nne
| avec le typage objet et ne nécessite pas l'information de typage
| inhérente à un variant.
| On pourrait néanmoins faire une solution à la Loki en temps constan t
| en utilisant des astuces, en utilisant le nom du type manglé et en le
| comparant à std::type_info::name. J'ai d'ailleurs un projet de
| bibliothèque dans Boost qui fait ça.
Je me permets de me répéter ici :
# La question n'est pas si c'est possible -- tout le monde sait que c 'est
# possible, de la même manière que c'est possible de faire de la
# programmation orientée objet en C. La vraie question est à q uel coût,
# et comment les « trics » mis en oeuvre soutiennent une programm ation
# propre, efficace, donnant lieu à des programmes maintenables.
| À part ça selon moi l'orienté objet est un paradigme assez mauvai s,
est-ce un postulat ?
| donc je trouve le genre de solution que je propose (variant) plus
| élégant, mais ce n'est que mon opinion personnelle.
[...]
| Je ne comprends pas trop pourquoi vous me donnez ce lien, que j'ai
| d'ailleurs déjà lu il y a longtemps.
C'est ce qui rend ta conclusion fascinante.
| Je n'ai jamais dit que c'était équivalent.
Il y a une section appelée « related work » -- qui en plus du corps de
l'article -- discute brievement alternatives ainsi que quelques unes d e
limitations.
La section « results » montre a une comparaison entre les
différents systèmes mentionnés où Loki occupe une place mémorab le.
| La proposition parle d'ailleurs d'un outil de Loki pour faire du
| multiple-dispatch qui nécessite de lister l'ensemble des classes dans
| une type list, donc ce n'est pas une restriction si gênante.
comme la performance (taille du code, temps d'exécution) ?
| Après la solution de Loki est lente car linéaire, mais elle fonctio nne
| avec le typage objet et ne nécessite pas l'information de typage
| inhérente à un variant.
| On pourrait néanmoins faire une solution à la Loki en temps constan t
| en utilisant des astuces, en utilisant le nom du type manglé et en le
| comparant à std::type_info::name. J'ai d'ailleurs un projet de
| bibliothèque dans Boost qui fait ça.
Je me permets de me répéter ici :
# La question n'est pas si c'est possible -- tout le monde sait que c 'est
# possible, de la même manière que c'est possible de faire de la
# programmation orientée objet en C. La vraie question est à q uel coût,
# et comment les « trics » mis en oeuvre soutiennent une programm ation
# propre, efficace, donnant lieu à des programmes maintenables.
| À part ça selon moi l'orienté objet est un paradigme assez mauvai s,
est-ce un postulat ?
| donc je trouve le genre de solution que je propose (variant) plus
| élégant, mais ce n'est que mon opinion personnelle.
[...]
| Je ne comprends pas trop pourquoi vous me donnez ce lien, que j'ai
| d'ailleurs déjà lu il y a longtemps.
C'est ce qui rend ta conclusion fascinante.
| Je n'ai jamais dit que c'était équivalent.
Il y a une section appelée « related work » -- qui en plus du corps de
l'article -- discute brievement alternatives ainsi que quelques unes d e
limitations.
La section « results » montre a une comparaison entre les
différents systèmes mentionnés où Loki occupe une place mémorab le.
| La proposition parle d'ailleurs d'un outil de Loki pour faire du
| multiple-dispatch qui nécessite de lister l'ensemble des classes dans
| une type list, donc ce n'est pas une restriction si gênante.
comme la performance (taille du code, temps d'exécution) ?
| Après la solution de Loki est lente car linéaire, mais elle fonctio nne
| avec le typage objet et ne nécessite pas l'information de typage
| inhérente à un variant.
| On pourrait néanmoins faire une solution à la Loki en temps constan t
| en utilisant des astuces, en utilisant le nom du type manglé et en le
| comparant à std::type_info::name. J'ai d'ailleurs un projet de
| bibliothèque dans Boost qui fait ça.
Je me permets de me répéter ici :
# La question n'est pas si c'est possible -- tout le monde sait que c 'est
# possible, de la même manière que c'est possible de faire de la
# programmation orientée objet en C. La vraie question est à q uel coût,
# et comment les « trics » mis en oeuvre soutiennent une programm ation
# propre, efficace, donnant lieu à des programmes maintenables.
| À part ça selon moi l'orienté objet est un paradigme assez mauvai s,
est-ce un postulat ?
| donc je trouve le genre de solution que je propose (variant) plus
| élégant, mais ce n'est que mon opinion personnelle.
[...]