RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Pour ou contre les templates en C++ ?

Forum : C & C++
Sous Catégorie : Aucune
Type du sujet : Débat
FAQ : FAQ C & C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ

Etes-vous plutôt pour ou contre l'utilisation des templates en C++ ?
Pour 4 (100%)
Contre 0 (0%)
Nombre de participants : 4

PAGES : [1] [2] [3] [4] [5] [6]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C & C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#114112
Posté le 29/10/06 à 09:39
Les vtables alourdissent et gnagnagna et ....
Mais arrête de dénigrer l'héritage !

L'héritage est une bonne chose qu'il faudrait utiliser bien plus souvent, la très grande majorité des GUI se base sur l'héritage la VCL, la CLX, en .NET, la QT, la wxWidget etc ...

Ce qui veut dire que presque toutes les applications sont composées de composants utilisant l'héritage, et on n'est pas sur 2 ou 3 héritages mais parfois ça peut dépasser la dizaine. Et pourtant personne ne s'en plaint et trouve ça plutôt pratique. Sinon bien sûr, tu peux remettre en question l'ensemble de GUI en disant qu'elles ont été mal programmées.

De plus, imagines, qu'on ne dérive pas toujours d'une même classe de base (ce qui peut toujours être le cas et c'est si pratique, mais imaginons). Tu dis qu'on a besoin de faire des templates pour manipuler des classes n'ayant pas d'ancêtre commun.
C'est pour moi une erreur de conception, si on doit manipuler de la même façon plusieurs classes, c'est qu'elles ont des propriétés communes et donc il est bon qu'elles dérivent d'une classes mère commune.
Réfléchis à ton besoin d'utiliser des templates, penses que tes vtables alourdissent effectivement ton programme que dans ta tête et penses à chaque fois que tu les as utilisé si tu ne pouvais pas faire autrement, qui t'apportera d'autres avantages.

Quand on a des propriétés communes, il y a des avantages de dériver de la même classe mère.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#114128
Posté le 29/10/06 à 10:56
Mais ceux que je veux te dire, c'est qu'il existe un équivalent de l'héritage, avec les templates, et je dis que dans certains cas je préfère cette utilisation des templates à l'héritage normal.
Mais l'héritage est utilisé à tout va, mal même. Suffit de lire le bouquin de Sutter, et même de bien d'autres grands noms du C++ pour le voir.


La POO et la programmation génériques sont deux types de programmation différents. On peut faire pas mal de choses avec chacun. Contrairement à ce que vous avez l'air de croire, j'utilise beaucoup la POO, pas que la programmation générique. Seulement il y a bien des cas où la programmation générique m'aide alors que la POO ne peut. (ici on parle toujours de C++ hein)

Je pense que le juste milieu est illustré par la stl, ou boost(qui d'ailleurs possède plusieurs modules qui vont être intégrés à la prochaine STL, une dizaine) qui utilisent les deux.
Ils n'héritent pas à tout va, choisissent le bon héritage(on a l'impression que les gens ne croient qu'il existe que l'héritage public), utilisent les templates intelligemment.
J'essaye de me rapprocher le plus possible de ce style de programmation.

Tout ça pour dire que je ne pense pas que les templates soient inutiles en C++ et loin de là. Cela permet de créér un code réutilisable, de manipuler "du code" à la compilation(metaprogrammation), les traits, les policies, ...

Voilà pourquoi j'essaye de te faire sortir de ton cocon où il n'y a aucun templates.

En delphi l'utilité serait réduite, mais encore pas inexistante. Enfin le delphi c'est totalement différent. Bref ...
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#114134
Posté le 29/10/06 à 11:13
Merci de vouloir me sortir de mon cocon, mais arrêtes de vouloir imposer tes choix aux autres. Il faut que chacun soit libre de faire ce qu'il désire.
Tu prêches comme si tu avais raison et moi tord, tant que tu parleras ainsi, on ne t'écoutera pas.

De toute façon, tu ne me convaincras pas parce que tu as tord. La preuve, tu ne m'as trouvé aucun exemple simple et concret prouvant son utilité.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#114139
Posté le 29/10/06 à 11:26
Au final, ce débat n'aura servi à rien.
Je persiste à penser que les templates sont inutiles et de toute façon, je pense que le C++ est compliqué pour rien.
Les gens aiment dire qu'ils font du C++ pour faire les malins parce que c'est compliqué.
Mais il est compliqué car il utilise des choses compliqués pour rien, comme la construction statique des objets.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#114151
Posté le 29/10/06 à 12:59
Il est pas compliqué, il est simplement très complet Smiley (t'énerves pas, joke hein)

Ensuite, pourquoi _tu_ aurais raison?
Je dis qu'il est bon d'utiliser les templates et la POO. Et c'est pas réellement moi qui l'ai dit pour la première fois. Les bons bouquins, les programmeurs C++ conus(ou non d'ailleurs) le disent aussi.

Il faut trouver le juste milieu entre les deux.

J'ai eu une période ou je voulais caser mes templates partout.

Maintenant ma programmation a muri, et je me sers modéremment des templates, en combinant avec la POO. Bien sur que j'utilise pas mal l'héritage, mais je préfère la composition à l'héritage dans certains cas, etc. Je n'ai pas inventé ça, je l'ai lu, et fait murir.

Tout ce que je veux que tu retienne de tout ce que j'ai pu dire, sans l'accepter forcément, c'est que les templates ne sont pas _inutiles_ en C++. En delphi peut-être, et encore, mais pas en C++.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#114152
Posté le 29/10/06 à 13:03
Vu qu'il n'a rien apporté, je te propose de supprimer ce topic, quand t'auras lu ma reponse.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#114155
Posté le 29/10/06 à 13:39
Nous sommes d'accord sur le fait qu'on n'est pas d'accord, c'est déjà un premier point.
Personne ne peut affirmer qu'il a raison, il doit donc accepter que l'autre ait un avis différent.
Je propose de ne pas supprimer le topic, il se peut très bien qu'une autre personne apporte un jour de nouvelles informations et nouveaux arguments.

Ton dernier argument peut être accepté mais ce n'en est pas un, on ne peut pas dire "ça peut servir dans certains cas, c'est utile", si on n'explique ni comment ni pourquoi ni dans quel cas, on peut te croire sur parole mais c'est tout sauf un argument.

Et le C++ n'est pas complet. Il commence à être vieux, il est précurseur dans la POO mais ça fait de lui un langage incomplet, les nouveaux langages POO ont pu récupérer les points forts, oublier les points faibles et rajouter ce qui a été oublié. Mais c'est un autre débat qui peut être intéressant. D'ailleurs je pense l'ouvrir dans la journée.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#114159
Posté le 29/10/06 à 14:30
En effet, il est pas complet, j'ai mis joke hein.

Les nouveaux langages de l'époque Delphi, C# ont en effet une POO plus développée.

Mais le C++ a quand même été conçu de telle manière que l'on puisse programmer la plupart de ce que l'on peut imaginer. Et même de plusieurs manière, cf le duel Programmation OO/Générique.

Mais je suis quand même content de connaitre une grande partie des différents aspects du C++. Connaissant tout cela, il ne m'est pas très difficile d'apprendre de nouveaux langages, car ils reprennent pour la plupart pas mal de style de programmation du C++.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#114162
Posté le 29/10/06 à 15:16
Alp dit :
Mais le C++ a quand même été conçu de telle manière que l'on puisse programmer la plupart de ce que l'on peut imaginer. Et même de plusieurs manière, cf le duel Programmation OO/Générique.

Heureusement que tu le peux, lol, même en C, tu peux le faire très bien aussi, bien qu'il ne soit pas OO, qu'il n'ait pas de références, pas de templates... on peut quand même tout programmer avec.
C'est juste qu'il manque des outils bien pratiques.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

patriarch24
Membre actif
Avatar de patriarch24
Inscrit : 08/05/2005
Messages : 100
Message
#114429
Posté le 31/10/06 à 10:43
pac dit :
C'est pour moi une erreur de conception, si on doit manipuler de la même façon plusieurs classes, c'est qu'elles ont des propriétés communes et donc il est bon qu'elles dérivent d'une classes mère commune.

Faux et archi faux. Tu parles de propriétés de types (en programmation générique, on appelle cela des traits). On peut très bien vouloir manipuler de la même manière deux concepts, sans qu'ils soient liés par une relation aussi "intime" que l'héritage. C'est pour cela que C++ n'a pas de classe mère Object. Sinon on pourrait justement traiter un mouton comme une carotte, sans que cela ne soit choquant... Cela s'appelle : la sûreté de type.

pac dit :

Réfléchis à ton besoin d'utiliser des templates, penses que tes vtables alourdissent effectivement ton programme que dans ta tête et penses à chaque fois que tu les as utilisé si tu ne pouvais pas faire autrement, qui t'apportera d'autres avantages.

Désolé, mais les vtables sont plus lentes qu'un appel direct à une fonction, car justement il y a une indirection supplémentaire. Maintenant, la lenteur est relative...


Les templates ont leur utilité, la solution n'est pas : polymorphisme et fonctions virtuelles à tout va, et n'est pas non plus template à tout va. C++ est un des langages les plus riches en ce qui concerne les paradigmes de programmation, il faut savoir en profiter.
Tu dis que les templates n'ont aucune utilité, car tu ne leur trouves aucune utilité. La nuance est assez forte. Je ne penses pas que tu aies déjà utilisé une list ou un map de la STL, sinon tu y trouverais des avantages. A moins bien sûr, que tu ne préfères écrire une nouvelle classe de liste pour chaque type différent...

Le meilleur exemple, pour te montrer l'utilité des templates, est de jeter un oeil sur boost : la bibliothèque de graphes, par exemple, ou encore uBlas, la bibliothèque de matrices. Dire que tu n'en a pas le temps est hypocrite, car tu as le temps de répondre à ce topic. Prend ne serait-ce que 15 minutes pour jeter un oeil à la doc.

pac dit :
le duel Programmation OO/Générique

Il ne s'agit pas d'un duel, mais de deux concepts complémentaires !!!

C++ est un vieux qui sait passer le temps. Les techniques avancées (et notamment les techniques avancées de programmations avec les templates, qui est un système Turing complete, ne t'en déplaise), les nouvelles bibliothèques, les efforts effectués au niveau du futur standard font que C++ a encore de beaux jours devant lui.
Je te conseilles enfin une lecture : Effective C++, de Scott Meyers. On en reparlera après.
__________________________
Lisp : (have a (nice day))
C : have (a, nice, day);
C++/Java : have.aNice(day);
OCaml : have a nice day;;
shell : have a nice $day

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C & C++



    PAGES : [1] [2] [3] [4] [5] [6]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.