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
#140711
Posté le 13/08/07 à 17:05
Tu dis que les templates ont des utilités par moment, et bien soit. Mais je t'avouerai que je n'ai pas encore vraiment vu où.
Tu parles des vectors en C++, qu'il faut utiliser les templates et par le polymorphisme car il implique le fait de dériver d'un objet commun et que ça ralentit l'exécution.
Je pense que les C++iens pensent ainsi car ils n'ont que les tableaux dynamiques et les vectors pour pouvoir entreposer des objets et n'ont pas des objets de type TList avec tous ses avantages.

Tu dis que ce n'est pas bien de devoir dériver d'une même classe de base, hors tu es d'accord avec moi qu'il n'est pas logique de mettre à la fois des carottes et des moutons dans un même vector.
Soit on fait un vector de carottes, soit un vector de legumes, mais si on a besoin d'un vector de legumes, il est clair que tu aurras une classe de base legume dont les classes carottes et poivreaux dériveront.
Si tu as besoin d'un vector avec des objets dérivant de openGLObject et bien dans ce cas, fait une liste de openGLObject.

En C++ le "castage" à chaud coûte de ressources, mais pas en Delphi, c'est courament utilisé, en C# aussi ça existe et il simple de l'utiliser.

Dans les langages plus récents que le C++ comme le Delphi, C# et Java, tous les objets dérivent d'une classe unique commune, ce n'est pas hazard, c'est que c'est fort utile et puissant. Les purs C++iens ne veulent pas reconnaître les limitations de leur langage qui est vieux, a fait des erreurs de jeunesse et manque de nouvelles notions utiles.
Et bien tant pis, chacun garde son avis.

C'est comme pour la surcharge des opérateurs +, -, ++, ..., quand j'ai appris en C++, je me suis dit "Wouah, trop fort, c'est excellent, ça doit être trop utile". Au résultat, c'est une fausse bonne idée, je n'en ai jamais eu l'utilité quand je faisais du C++, ni aucun manque en Delphi et maintenant que je fais du C# aussi, je ne vois pas d'application utile de la surcharge des opérateurs.

screetch dit :
[apparté]
au niveau de la manipulation pointeur/manipulation par copie, ce que je dis c'est que manipuler un pointeur force le programmeur a allouer de la mémoire pour l'objet alors que travailler par copie coute la copie (une operation qui peut etre complexe mais bien souvent est simple comme de la copie d'octets) et on a pas besoin d'allouer la mémoire pour l'objet, le container s'en est chargé. La copie coute certes plus cher que manipuler les pointeurs mais coute toujours moins cher qu'effectuer un/plusieurs malloc :)

Les langages créés après le C++ ont abandonné cette notion de faire des objets statiques. Ce n'est pas par hazard, je trouve ça inutile.
Un objet n'est pas un autre type classique comme les int, les float.
Les constructeurs par recopie ne sont pas utiles. Un objet est un objet (oui Lapalice fait partie de ma famille), quand on a une instance, on n'a pas à faire d'autres instances comme ça.
Passer une copie d'un objet en paramètre n'a pas de sens, autant passer une référence de l'objet et s'il ne doit pas être modifié rajouter la déclaration const.
On a plus souvent besoin de connaître l'instance que ses attributs (j'ai peur de ne pas être clair).

Que le C++ existe, c'est bien, il a permis à d'autres langages d'être mieux pensés en retirant les concepts inutiles, mais il a besoin d'une bonne mise à jour, de perdre sa compatibilité avec le C qu'il traine comme un boulet et des concepts inutiles pour ne s'arrêter que sur ce qui est vraiment demandé par les programmeurs.
__________________________
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

  

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140716
Posté le 13/08/07 à 17:43
je viens de te l'expliquer plus haut et il faut que tu y mettes de la bonne volonté quand meme :-/

si tu REFUSES de voir l'utilité d'un template ne poste pas ici


on recommence donc :

dans ta TList on bazarde tout et n'importe quoi, des TCarrottes, des TMoutons.
dans mon std::vector<TCarrotte> on ne pourra jamais mettre de TMoutons, ca petera a la compilation.

Comment cela peut il etre considéré comme un avantage de la programation OOP contre les generiques???????????????

ne vient pas me dire que le castage ne coute presque rien, pusque moi je n'ai rien a faire, ca me coute pas presque rien mais ZERO.

tes arguments ne tiennent pas debout :-/

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
#140717
Posté le 13/08/07 à 17:58
screetch dit :
je viens de te l'expliquer plus haut et il faut que tu y mettes de la bonne volonté quand meme :-/

si tu REFUSES de voir l'utilité d'un template ne poste pas ici


on recommence donc :

dans ta TList on bazarde tout et n'importe quoi, des TCarrottes, des TMoutons.
dans mon std::vector<TCarrotte> on ne pourra jamais mettre de TMoutons, ca petera a la compilation.

Comment cela peut il etre considéré comme un avantage de la programation OOP contre les generiques???????????????

...

tes arguments ne tiennent pas debout :-/

C'est un véritable dialogue de sourds, je veux bien faire des efforts mais tu comprends ce que je dis à l'envers.
__________________________
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

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140720
Posté le 13/08/07 à 18:13
en fait je ne sais pas comment tu peux faire l'apologie d'une TList malgré tous les inconvénients que je viens de te donner, c'est ca qui m'echappe.

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
#140723
Posté le 13/08/07 à 18:25
Tout simplement parce que la TList n'est qu'une classe de base qu'il est bon de dériver.
Tu peux très surcharger les méthodes d'ajout d'objet afin de ne prendre que le type que tu souhaites.

Au sujet des nanosecondes dans les boucles for. L'important est de bien connaître le langage qu'on utilise et ne pas utiliser les méthodes lentes et qui prennent beaucoup de ressources. Dans mon code, je connais les parties critiques qu'il faut optimiser et je n'utilise pas de surcharge de fonctions.

La question des nanosecondes n'est pas pour moi très important, je préfère parler de la robustesse d'un langage et des applications faites avec.
Si je devais choisir un langage qui me plait dans son principe, je me dirigerais plus vers des langages fonctionnels comme Ocaml ou F# plutôt que vers le C++.
__________________________
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

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140726
Posté le 13/08/07 à 18:34
je ne suis toujours pas d'accord avec toi, tu compares quelque chose que tu n'as pas besoin de faire (C++ = typage FORT dans les vectors, impossible d'y mettre autre chose) contre quelque chose qu'il est FACILE de faire. meme si la facilité est relative, comment peut on dire que quelque chose de facile a faire l'emporte sur quelque chose qu'on a pas besoin de faire ?

comme je le disais plus haut tout ceci vient de quelqu un qui ne comprend pas les templates et n'a jamais utilisé les facilités de génération de code automatique du C++, car sinon tu comprendrais combien Delphi est pourri sur ce plan la (et tu me cites les deux pires exemples au monde, la Tlist et pas besoin de constructeur de copie)

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
#140728
Posté le 13/08/07 à 18:41
Puisque je vois que tu es un "Je veux toujours avoir le dernier mot" et que j'en ai marre de débattre dans le vide, je clot ce dialogue de sourds (en tout cas pour ma part) par : "tu as raison".
__________________________
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

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140729
Posté le 13/08/07 à 18:47
toujours la solution plus facile que d'essayer de repondre a ce que je dis :-/

[EDIT] apres consultation des sources de la RTL je viens de voir que les methodes add, delete´, put, remove sont pas virtuelles :(

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Czayfaboo
Co-Administrateur
Superviseur :
- Langages Dot.
Modérateur :
- CSharp (C#)
Chef de projet(s) :
- ID3.NET Library
- MoteurProg Work.

Avatar de Czayfaboo
Inscrit : 05/01/2005
Messages : 2876
Message
#140731
Posté le 13/08/07 à 19:44
N'empêche que moi aussi j'attend toujours un exemple de fou qui va me convertir complètement aux templates... Du code vaut mieux que des explications. Une comparaison entre un code template et code POO d'un même bout de programme... et bien sûr que cela soit utile concrètement...
__________________________
Sujet résolu ? Pensez à mettre le tag Image
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140735
Posté le 13/08/07 à 20:31
l'important n'est pas de convertir complètement aux templates mais de voir dans quels cas les templates sont plus adequat que la POO pour resoudre un probleme. Malheureusement si vous ne voyez pas ce que je veux dire pour le coup des containers alors il y a peu a faire, je ne fournis pas des exemples a la demande et ca me parait etre le plus probant.

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