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 ...
Serv: irc.irc-land.org
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
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 : 2547
Message
#113977
Posté le 28/10/06 à 12:24
Bonjour à tous,

Hé bien suite à une discussion avec un membre, nous avons remarqué que nos points de vue divergeaient quand à l'utilité des templates.

Je pense que les templates sont un outil très riche offert par le C++, et m'en servant beaucoup, je les trouve réellement utiles. Ayant pris l'habitude de m'en servir, ça m'allège beaucoup les codes, ça me permet de ne pas avoir à recoder plusieurs fois les mêmes fonctions. Ca me fait également gagner du temps d'exécution.

Je sollicite donc la communauté pour qu'elle donne son avis sur cette question.

Pour ceux qui ne connaissent pas les templates, voici un tuto que j'ai écrit sur le sujet.


Alors, êtes-vous plutôt pour ou contre? Pourquoi?
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 1946
Message
#114062
Posté le 28/10/06 à 20:07
plutôt pour, mais pas aussi extrémiste que toi :P

je les utilise surtout pour des fonctions récurrentes comme max(float, float), max(int, int) etc ou des conversions toString ou autre
__________________________
Spirit - modérateur casu ^-^'

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 : 6571
Message
#114064
Posté le 28/10/06 à 20:18
Je ne vois absolument pas l'utilité des templates, je n'ai pas besoin de recoder 2x le même code et je n'ai jamais utilisé les templates.
Je ne vois pas de cas concret d'utilisation qui me simplifiera la vie.

Donc contre.

PS : et ce tuto, tu ne veux pas le mettre sur MoteurProg ?
__________________________
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 : 2547
Message
#114074
Posté le 28/10/06 à 22:10
Il y est, seulement je le retrouve plus.

Si tu veux connaître leur utilité, lis donc des docs dessus.

Tu n'as jamais besoin de templates?
Donc toi tu coderais un vector que pour les int, un que pour les char, un que pour les float, etc ... ?
Tu utiliserais à tout va le polymorphisme d'exécution en ralentissant par conséquent tes applis? Car dans certains cas les templates peuvent remplacer.

Les templates permettent de plus d'écrire des outils génériques, que tu n'auras pas à recoder pour chaque projet. Tu auras juste à imposer une certaine contrainte sur tes types génériques, et roule ma poule.

Enfin les utilisant souvent, je vois l'utilité. Mais je comprends que toi tu ne la voie pas, ne faisant d'ailleurs plus de C++. Si je me rappelle bien, en Delphi il y a quelques manques niveau POO en C++ qui sont comblés.
__________________________
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 : 6571
Message
#114079
Posté le 28/10/06 à 23:05
Merci merci, mais pour moi ce n'est pas du tout un manque de ne pas avoir les templates.

Je ne code pas de vectors, je ne trouve pas ça très utile, il y a d'autres objets plus pratiques et puis ils possèdent déjà tout ce dont j'ai besoin.

Le polymorphisme ralentit par conséquent les applis ? Tu as des chiffres ?
Ce n'est pas bien de dénigrer des évolutions de la POO pour vendre les templates.

Peux-tu me dire le temps CPU utilisé pour une méthode utilisant le polymorphisme et la même méthode utilisant les templates ?
Qui te dit que c'est plus rapide avec les templates ?

De plus, je n'ai pas besoin de faire des fonctions génériques. Au contraire, elles sont toujours spécialisées pour ce dont j'ai besoin de faire.

Je n'ai pas besoin d'une méthode générique qui est capable de traiter des carottes et des voitures.

Je n'ai toujours pas d'exemple qui montre les avantages des templates dans un cas concret.

Peut-être trouves-tu ça utile car tu ne penses que templates mais que tu pourrais très bien faire un code plus simple en pensant autrement.
__________________________
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 : 2547
Message
#114080
Posté le 28/10/06 à 23:23
Ah non je pense aussi très orienté objet.
Le polymorphisme d'exécution est plus lent car il nécessite les vtable. les templates n'utilisant pas la hiérarchie(ça marche pas pour tous les cas) de classes, tous les types sont déterminés à la compilation, d'ou le gain de rapidité évident.
Pour des cas concrets, tu n'as qu'à lire n'importe quel cours/tuto/livre sur le sujet.
Comment remplaces tu les vectors? tu recodes chaque fois tes propres tableaux dynamiques? pour chaque type?
__________________________
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 : 6571
Message
#114082
Posté le 28/10/06 à 23:28
Oui c'est vrai que l'exemple de faire une fonction afficher qui affiche n'importe quel type d'objet montre bien l'utilité des templates.

Je n'ai pas besoin de tableaux dynamiques, j'ai des objets liste qui gère une liste d'objets et quand j'ai besoin de faire un tableau de nombre (ce qui est rare), je n'ai pas besoin qu'il soit dynamique.

Et si j'ai besoin d'un tableau d'entiers, je n'ai pas besoin qu'il sache faire de même avec carotte, des strings et des méthodes, j'ai juste besoin qu'il sache travailler avec des entiers.
__________________________
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 : 2547
Message
#114088
Posté le 28/10/06 à 23:56
Oui mais le fait que le même code de tableau puisse prendre tous ces types, ça t'est utile non?
Je n'ai pas cité mon tuto dans la liste exprès car je ne présente pas vraiment d'exemple très concret.
Quand je parle de tableau, c'est même chose pour listes et autres conteneurs.

A chaque fois tu connais à l'avance le nombre d'élément que ça contiendra ?

Ensuite, les templates servent aussi pour la metaprogrammation, au polymorphisme de compilation, et surtout, vraiment surtout, à créér du code générique, permettant de coder des "librairies" que l'on peut réutiliser à volonté.

Vois un peu l'utilité sur boost.org.
__________________________
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 : 6571
Message
#114096
Posté le 29/10/06 à 01:59
Les listes contiennent des objets qui dérivent tous du même ancêtre, donc pas de problème la dessus, de plus elle possèdent déjà toutes les méthodes utiles pour trier, ajouter, retirer un élément.

Je n'ai pas envie de faire de recherche la dessus comme tu me le demandes, je n'en vois pas l'intérêt, je n'ai pas de manque dans mes connaissances.
Je ne ferrai de la recherche dessus que quand je me dirai que ça peut me servir et que j'en ai besoin concrètement mais je sais que je n'en aurai jamais besoin et que ce serrait une perte de temps à faire de la recherche sur le sujet, il y a des choses bien plus utiles.

Ce que je veux, c'est que toi, tu me donnes un exemple concret.

Alp dit :
permettant de coder des "librairies" que l'on peut réutiliser à volonté.

C'est du pur commercial, ça fait très joli mais ça ne veut rien dire.
Soit tu fais une bibliothèque pour gérer la base de registre et elle ferra ce qu'on lui demande, soit on fait une bibliothèque qui gère la 3D et elle travaillera avec des objets 3D...
On ne va pas faire une bibliothèque pour la base de registre qui va aussi savoir gérer des objets 3D.

Trouves moi des exemples concrets et à partir de ce moment là, on pourra en parler, mais pour l'instant tu parles dans le vide.
Tu ne veux pas donner d'exemple concret parce que tu n'en as pas et tu demandes qu'on fasse des recherches pour ne pas le reconnaître.

PS : tu parles des langages qui n'ont pas les templates comme s'ils n'étaient pas complets, mais on pourrait très bien parler des manques dans le C++ qui ne permet pas un certain nombre de choses qui sont possibles dans d'autres langages OO, mais c'est un autre débat.
__________________________
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 : 2547
Message
#114109
Posté le 29/10/06 à 08:35
J'ai pas dit que les autres langages _manquaient_ de templates. J'ai dit qu'il y avait des choses qui les compensaient. Par exemple en Delphi et en Java il y a la classe mère de tous les objets.

En reprenant ton exemple d'objets 3D : si un jour tu décides soit de changer ta classe représentant un objet 3d, soit de changer de moteur, bref changement de code, mais que tu ais codé énormément de fonctions les manipulant.
En Delphi ok, tu peux te servir de la classe de base.
En C++, il faudrait alors dans chacun de ces cas créér une classe de base pour des objets n'ayant pas forcément tant de choses que ça en commun. Et en plus les vtable allourdiront l'exécution. Alors qu'avec les templates par exemple, il suffit d'imposer à ton type d'avoir telle ou telle fonction ou tel ou tel typedef, etc... pour que le type soit utilisable, sans forcément savoir quel type sera transmis au moment où tu codes ta fonction.

Ce n'est qu'un exemple.

L'intérêt des templates existe en C++, mais moins en Delphi. Il faut donc en rester au C++. C'est pour ça que tu me disais que tu n'avais pas besoin pour les listes etc...
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

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 :.