 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
M. B. Guest
|
Posted: Wed Aug 18, 2004 4:31 am Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
"Michel Michaud" <mm (AT) gdzid (DOT) com> a écrit dans le message de news:
sZzUc.19898$Tr.916797 (AT) news20 (DOT) bellglobal.com...
| Quote: | Dans news:cfsb5g$vga$1 (AT) news-reader2 (DOT) wanadoo.fr, M.
B. <m_binder (AT) magicnet (DOT) com> a écrit :
Effectivement, avec le nouveau C++/CLI, dont j'ignorais
l'annonce, les choses s'arrangent tres nettement pour le C++
sur .NET
Il y aura a nouveau un interet certain a utiliser C++ sur .NET
En fait, C++ deviendra (redeviendra ?) le langage de choix pour
développer pour la plate-forme de MS... et d'ailleurs (voir Mono).
|
Certes. Mais les autres langages evoluent egalement sur .NET
Javascript (JScript) support a present l'heritage, VB support
les types generiques, etc ...
Ne va-t-on pas, a terme, vers une equivalence stricte de tous
les langages sur .NET ?
MB
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Wed Aug 18, 2004 5:40 am Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Dans news:cfum3d$kb4$1 (AT) news-reader5 (DOT) wanadoo.fr, M.
B. <m_binder (AT) magicnet (DOT) com> a écrit :
| Quote: | "Michel Michaud" <mm (AT) gdzid (DOT) com> a écrit dans le message de news:
sZzUc.19898$Tr.916797 (AT) news20 (DOT) bellglobal.com...
En fait, C++ deviendra (redeviendra ?) le langage de choix pour
développer pour la plate-forme de MS... et d'ailleurs (voir
Mono).
Certes. Mais les autres langages evoluent egalement sur .NET
Javascript (JScript) support a present l'heritage, VB support
les types generiques, etc ...
|
Donc en attendant 5 ou 10 ans, on pourra faire avec VB ce qu'on
peut faire aujourd'hui avec C++ ? Si tu peux attendre... :-)
| Quote: | Ne va-t-on pas, a terme, vers une equivalence stricte de tous
les langages sur .NET ?
|
Non, car C++ est le seul qui existe aussi (et très bien) en
dehors de .NET comme langage de développement sérieux pour de
multiples usages... (sans compter toutes les choses de C++ qui
ne seront pas ajoutées aux autres langages)
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Wed Aug 18, 2004 6:29 am Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Jean-Marc Bourguet wrote:
| Quote: |
Et faire de l'heritage multiple quand on connait
l'heritage simple, c'est pas si complique
À nouveau, j'étais dans l'optique d'une implémentation de
C++ sur CLR.
Là je ne suis pas d'accord : en terme d'implémentation,
c'est *beaucoup* plus compliqué.
C'est plus compliqué que l'héritage simple, ce n'est pas si
compliqué que celà. Si tu as une classe C qui hérite des
classes A et B, tu définis des classes AC héritant de A et
BC héritant de B et la classe C contient les nouveaux
membres et des pointeurs vers AC et BC (qui elles-mêmes
contiennent des pointeurs vers C). Ensuite il y a quelque
détails à résoudre mais ce n'est pas compliqué. Je l'ai
fait en Ada à la main (mais quand on le fait à la main, on
arrive souvent à simplifier un peu).
Regardes du côté de l'héritage virtuel, des vtordisp, et
autres joyeusetés! Ca complique aussi énormément la
logique des pointeurs de méthodes : Quelle est la taille
d'un pointeur de méthode (sur un compilateur donné), selon
les modèle d'héritage de la classe?
Jamais réfléchit en profondeur au problème. J'ai
l'impression que deux pointeurs suffisent mais je me trompe
peut-être.
|
http://www.codeproject.com/cpp/FastDelegate.asp
Regardes le paragraphe "Implementation of member functions pointers".
| Quote: | Est-il légal de caster un pointeur vers une méthode de
classe dérivée en pointeur vers une méthode de la classe
de base?
5.2.9/8 : oui, sous certaines conditions.
|
Exact, et qu'est ce qu'on peut faire ensuite du pointeur casté? Rien!
| Quote: | Par ailleurs, le CLR définit un modèle objet et un
mécanisme d'introspection de ce modèle, et ce modèle ne
supporte que l'héritage simple d'implémentation (c'est
très proche du Java).
L'introspection voit une structure hierarchique plus
complexe. C'est tout.
|
"Bien sûr", mais ca demanderait de mettre à jour tous les langages .NET
(détail!), et de toute façon, je ne pense pas que ça corresponde à la
"philosophie" .NET, qui est d'interdire l'héritage multiple d'implémentation
car elle est souvent mal utilisée (conceptions objet foireuses qui utilisent
l'héritage multiple à la place de l'aggrégation). Par ailleurs, cela
encourage à la programmation par interface (vu que l'héritage multiple
d'interfaces est autorisé - oui, je sais que les interfaces .NET ou Java
sont notoirement insuffisantes ;-)
PS : C'est *mon* interprétation des choix de MS -:)
Arnaud
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Wed Aug 18, 2004 6:30 am Post subject: Re: [HS] Re: lire le contenu d'un répertoire en C++ |
|
|
M. B. wrote:
| Quote: | "drkm" <usenet.fclcxx (AT) fgeorges (DOT) org> a écrit dans le message de news:
[email]wkr7q5fjre.fsf_-_ (AT) fgeorges (DOT) org[/email]...
Loïc Joly <loic.actarus.joly (AT) wanadoo (DOT) fr> writes:
- Si on veut que le développeur en VB puisse utiliser le template
vector qu'il instancie pour les types de son choix
VB supporte les types génériques ?
Oui.
http://msdn.microsoft.com/library/en-us/dnvs05/html/vb2005_generics.asp
|
Sauf que les génériques .NET ne sont pas les templates. C'est un autre
approche qui présente certains intérêt, mais qui est quand même clairement
moins puissante que les templates.
Arnaud
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Wed Aug 18, 2004 9:52 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
"Michel Michaud" <mm (AT) gdzid (DOT) com> writes:
| Quote: | Dans news:cfsb5g$vga$1 (AT) news-reader2 (DOT) wanadoo.fr, M.
B. <m_binder (AT) magicnet (DOT) com> a écrit :
Effectivement, avec le nouveau C++/CLI, dont j'ignorais
l'annonce, les choses s'arrangent tres nettement pour le C++
sur .NET
Il y aura a nouveau un interet certain a utiliser C++ sur .NET
En fait, C++ deviendra (redeviendra ?) le langage de choix pour
développer pour la plate-forme de MS... et d'ailleurs (voir Mono).
|
D'apres des sources surs, MS ne requiert plus, pour ses employes, C#
comme langage de developpement ; en fait C++ est de nouveau tres
encourage pour developper de nouveaux projets.
Comprenne qui pourra.
-- Gaby
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Wed Aug 18, 2004 10:54 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Dans news:m33c2kunax.fsf (AT) uniton (DOT) integrable-solutions.net, Gabriel
Dos Reis <gdr (AT) integrable-solutions (DOT) net> a écrit :
| Quote: | D'apres des sources surs, MS ne requiert plus, pour ses
employes, C# comme langage de developpement ; en fait C++ est
de nouveau tres encourage pour developper de nouveaux projets.
Comprenne qui pourra.
|
Je ne vois pas ce qui est difficile à comprendre :
« Cool ! Un nouveau langage ! Il doit être vraiment mieux que
notre vieux C++ ! On va réussir à faire nos projets en moins
de temps et de meilleure qualité ! Essayons-le ! »
.... (le temps passe et les expériences aussi)
« Bon, rien ne vaut notre bon vieux C++ ! On y retourne ! »
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Tue Aug 24, 2004 6:11 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
"Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> writes:
| Quote: | Regardes du côté de l'héritage virtuel, des vtordisp, et
autres joyeusetés! Ca complique aussi énormément la
logique des pointeurs de méthodes : Quelle est la taille
d'un pointeur de méthode (sur un compilateur donné), selon
les modèle d'héritage de la classe?
Jamais réfléchit en profondeur au problème. J'ai
l'impression que deux pointeurs suffisent mais je me trompe
peut-être.
http://www.codeproject.com/cpp/FastDelegate.asp
Regardes le paragraphe "Implementation of member functions pointers".
Est-il légal de caster un pointeur vers une méthode de
classe dérivée en pointeur vers une méthode de la classe
de base?
5.2.9/8 : oui, sous certaines conditions.
Exact, et qu'est ce qu'on peut faire ensuite du pointeur
casté? Rien!
|
Si j'ai bonne mémoire -- je suis rentré mais j'ai rien
relu -- les conditions en question sont celles pour
lesquelles le pointeur résultant peut être utilisé avec une
sémantique définie.
| Quote: | Par ailleurs, le CLR définit un modèle objet et un
mécanisme d'introspection de ce modèle, et ce modèle ne
supporte que l'héritage simple d'implémentation (c'est
très proche du Java).
L'introspection voit une structure hierarchique plus
complexe. C'est tout.
"Bien sûr", mais ca demanderait de mettre à jour tous les
langages .NET (détail!),
|
Les langages n'ayant pas d'héritage multiple voient une
hiérarchie avec de l'héritage simple. Rien à mettre à jour
où je ne te comprends pas. Éventuellement il faudrait
définir la manière précise d'organiser cet héritage pour que
les langages (tiens si j'ai bonne mémoire il y a un Eiffel
pour .NET) ayant un héritage multiple le fasse de la même
façon.
| Quote: | et de toute façon, je ne pense pas que ça corresponde à la
"philosophie" .NET, qui est d'interdire l'héritage
multiple d'implémentation car elle est souvent mal
utilisée (conceptions objet foireuses qui utilisent
l'héritage multiple à la place de l'aggrégation).
|
As-tu un pointeur vers un document décrivant la
"philosophie" .NET, expliquant les choix faits et leurs
raisons?
As-tu une définition d'un "bon usage" de l'héritage
multiple? Y at'il consensus dessus?
As-tu des stats sur l'utilisation effective de l'héritage
multiple analysée en fonction de ce bon usage?
A+
--
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
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Tue Aug 24, 2004 6:16 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
"Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> writes:
| Quote: | Jean-Marc Bourguet wrote:
Regardes du côté de l'héritage virtuel, des vtordisp, et
autres joyeusetés! Ca complique aussi énormément la
logique des pointeurs de méthodes : Quelle est la taille
d'un pointeur de méthode (sur un compilateur donné), selon
les modèle d'héritage de la classe?
Jamais réfléchit en profondeur au problème. J'ai
l'impression que deux pointeurs suffisent mais je me trompe
peut-être.
http://www.codeproject.com/cpp/FastDelegate.asp
Regardes le paragraphe "Implementation of member functions pointers".
|
À voir les tailles données, 2 pointeurs a bien l'air d'être
ce qui est utilisé par certains compilateurs. Je devrais
peut-être lire tout ça pour voir ce qui pousse d'autres à
utiliser plus de place.
A+
--
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
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Wed Aug 25, 2004 7:35 am Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
"Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> writes:
| Quote: | Jean-Marc Bourguet wrote:
[...]
Regardes du côté de l'héritage virtuel, des vtordisp, et
autres joyeusetés! Ca complique aussi énormément la
logique des pointeurs de méthodes : Quelle est la taille
d'un pointeur de méthode (sur un compilateur donné), selon
les modèle d'héritage de la classe?
Jamais réfléchit en profondeur au problème. J'ai
l'impression que deux pointeurs suffisent mais je me trompe
peut-être.
http://www.codeproject.com/cpp/FastDelegate.asp
Regardes le paragraphe "Implementation of member functions pointers".
[...]
l'héritage multiple d'interfaces est autorisé
[...]
|
À partir du moment où l'héritage multiple d'interfaces est autorisé,
je me demande quelles complications additionnelles il y aurait dans
les pointeurs vers membres avec un héritage multiple plus général.
A+
--
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
|
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Wed Aug 25, 2004 9:02 am Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Jean-Marc Bourguet wrote:
| Quote: | À partir du moment où l'héritage multiple d'interfaces est autorisé,
je me demande quelles complications additionnelles il y aurait dans
les pointeurs vers membres avec un héritage multiple plus général.
|
Il n'y a pas de décalage à faire lors de conversion depuis un pointeur
sur dérivé vers un pointeur sur base quand seul l'héritage multiple
d'interface est autorisé.
--
Loïc
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Wed Aug 25, 2004 8:15 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Loïc Joly wrote:
| Quote: | Jean-Marc Bourguet wrote:
À partir du moment où l'héritage multiple d'interfaces est autorisé,
je me demande quelles complications additionnelles il y aurait dans
les pointeurs vers membres avec un héritage multiple plus général.
Il n'y a pas de décalage à faire lors de conversion depuis un pointeur
sur dérivé vers un pointeur sur base quand seul l'héritage multiple
d'interface est autorisé.
|
Et l'héritage d'interfaces ne pose pas non plus le problème de l'héritage en
diamant et donc de l'héritage virtuel.
Arnaud
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Wed Aug 25, 2004 8:47 pm Post subject: Re: lire le contenu d'un répertoire en C++ |
|
|
Jean-Marc Bourguet wrote:
| Quote: | "Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> writes:
5.2.9/8 : oui, sous certaines conditions.
En re-regardant, tu voulais sans doute dire 5.2.9/9, mais il s'agit de |
"pointer to member", pas de "pointer to member function".
Personnellement, je n'ai rien pu trouver concernant les conversions de
pointeurs vers fonction membre sauf 5.2.10/9 et je n'ai pas compris
l'intérêt de cette clause. J'ai peut être mal cherché?
<snip>
| Quote: | Les langages n'ayant pas d'héritage multiple voient une
hiérarchie avec de l'héritage simple. Rien à mettre à jour
où je ne te comprends pas.
Et quelle est la classe de mère que tu choisis comme étant "visible"? Tu ne |
peux pas appeler les méthodes héritées des classes de bases "non visibles"?
Je suis curieux de voir comment tu ferais çà.
D'autre part, ca ne rentre pas dans le modèle d'introspection de .NET (que
l'on pourrait faire évoluer, d'accord, "yapluka" le faire, bon courage! Je
te rappelle que tous ces éléments de .NET sont normalisés).
Enfin, tu ne tiens compte que de l'aspect visible de l'héritage, pas de son
implémentation. La grosse différence avec l'héritage multiple, c'est qu'un
seul et même objet peut avoir plusieurs adresses différentes selon la
"facette" (la classe de base) par laquelle tu le regardes. Comment tu fais
pour faire interagir cela avec le garbage collector et le mécanisme de
références de .NET?
| Quote: | et de toute façon, je ne pense pas que ça corresponde à la
"philosophie" .NET, qui est d'interdire l'héritage
multiple d'implémentation car elle est souvent mal
utilisée (conceptions objet foireuses qui utilisent
l'héritage multiple à la place de l'aggrégation).
As-tu un pointeur vers un document décrivant la
"philosophie" .NET, expliquant les choix faits et leurs
raisons?
Non, c'est mon impression personnelle uniquement (et je la partage!). |
Impression malgré tout renforcée par quelques conférences de gars de chez MS
auquelles j'ai pu assister, pour ce que ca vaut ;-)
| Quote: | As-tu une définition d'un "bon usage" de l'héritage
multiple? Y at'il consensus dessus?
Certainement pas, par contre je peux te citer des dizaines de cas de |
mauvaise utilisation sans aucun problème. Exemple sur
microsoft.public.fr.dotnet, un gars qui tenait absolument à nous faire
comprendre que l'héritage multiple d'implémentation, c'est génial parce que
s'il a une classe oiseau et une classe cheval, il lui suffit d'hériter des 2
pour faire une classe pégase Jusqu'à ce qu'on lui fasse remarquer que
son pégase pondait des oeufs...
C'est un exemple caricatural (le gars était limite troll), mais pour des
développeurs avec peu d'expérience en conception objet, l'héritage multiple
est souvent faussement "simple" et sur-utilisé. Je pense que tous les gens
avec une expérience de l'enseignement de la POO seront d'accord pour dire
que les débutants ont tendance à trop utiliser l'héritage et pas assez
l'aggrégation, jusqu'à ce que le principe de substitution de Liskov leur
soit rentré dans le crane. L'héritage multiple ne fait qu'empirer cela.
Maintenant, savoir si c'est un argument valide pour interdire l'héritage
multiple, je n'en sais rien (personnellement, je regrette qu'il ne soit pas
présent dans .NET), mais je peux comprendre les raisons de ce choix, à
défaut de les approuver totalement.
Arnaud
|
|
| Back to top |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|