Sondage sur la STL

Sondage sur la STL - C++ - Programmation

Marsh Posté le 18-02-2003 à 17:13:44    

Je trouve que la STL est horriblement pas attrayante, elle donne plutôt envie de s'enfuire. La moindre petite chose y a une écriture horrible, repoussante au possible


Message édité par El_gringo le 18-02-2003 à 17:14:45
Reply

Marsh Posté le 18-02-2003 à 17:13:44   

Reply

Marsh Posté le 18-02-2003 à 17:16:51    

perso j'aime bien les composants Borland quand je programme en Delphi, mais je dois reconnaître qu'en C++Builder il m'est arrivé d'utiliser la STL, et une fois qu'on pige le truc et qu'on arrive à relire ce qu'on écrit, c'est excellent :love:
La syntaxe avec ces < > partout pour les templates c'est quand même pas ce qu'il y a de mieux :(


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-02-2003 à 17:17:01    

Je suis pas contre les topics ou il faut donner un avis sur un aspect quelconque de la programmation, ceci dit, ça serait bien si tu étayais ton avis avec quelques arguments dignes de ce nom...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-02-2003 à 17:28:18    

Mes arguments ils sont tout simple :
Quel est l'intérêt des templates, plutôt qu'une classe de base CObject, surchargée par tous les éléments d'une API ? Pourrir la lisibilité du code ?
Et puis, cela mis à part, la STL n'est quand même pas tellement lisible je trouve.  
En STL, on dirait que le code à été volontairement compliqué, des trucs tout bête avec les MFC sont vachement plus complexes à écrire en STL. Et puis j'ai trouvé aucune doc attrayante sur le STL, ça me saoule.

Reply

Marsh Posté le 18-02-2003 à 17:29:31    

El_gringo a écrit :


Quel est l'intérêt des templates, plutôt qu'une classe de base CObject, surchargée par tous les éléments d'une API ? Pourrir la lisibilité du code ?


 
Avoir des conteneur typés et pas des sacs à merdes ou on est contraint de caster comme des cons.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 18-02-2003 à 17:35:32    

El Gringo > je suis désolé, mais tu compares 2 choses totalement différentes. Comment peux tu comparer un ensemble de classes destinées à la création d'interfaces graphiques (MFC) à la STL ? Ca n'a strictement rien à voir... La STL apporte avant tout un ensemble de conteneurs destinés à manipuler des données, ce qui n'est pas du tout le but de la MFC. Donc merci de ne pas mélanger torchons et serviettes. Surtout que les MFC sont un mélange batard de C et C++.
 
 
 


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-02-2003 à 17:39:04    

Harkonnen a écrit :

El Gringo > je suis désolé, mais tu compares 2 choses totalement différentes. Comment peux tu comparer un ensemble de classes destinées à la création d'interfaces graphiques (MFC) à la STL ? Ca n'a strictement rien à voir... La STL apporte avant tout un ensemble de conteneurs destinés à manipuler des données, ce qui n'est pas du tout le but de la MFC. Donc merci de ne pas mélanger torchons et serviettes. Surtout que les MFC sont un mélange batard de C et C++.


 
Heuu, CString, CArray, CTimer, CFileFind, ...
tu crois que c'est quoi ?

Reply

Marsh Posté le 18-02-2003 à 17:41:30    

kadreg a écrit :


 
Avoir des conteneur typés et pas des sacs à merdes ou on est contraint de caster comme des cons.


 
J'aime mieux caster comme un enculé et avoir de code lisible.

Reply

Marsh Posté le 18-02-2003 à 17:45:06    

El_gringo a écrit :


J'aime mieux caster comme un enculé et avoir de code lisible.


 
Le cast pose des problème de validitée du cast (sauf a jouer du narrowing ou du RTTI, mais là, le code vire au write-only), source de bug sans fin, de joyeuses fuites mémoire et autres emmerdes habituelles bien connues du programmeur C++.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 18-02-2003 à 17:46:11    

kadreg a écrit :


 
Le cast pose des problème de validitée du cast (sauf a jouer du narrowing ou du RTTI, mais là, le code vire au write-only), source de bug sans fin, de joyeuses fuites mémoire et autres emmerdes habituelles bien connues du programmeur C++.


 
et le "dynamic_cast", c'est pareil ?

Reply

Marsh Posté le 18-02-2003 à 17:46:11   

Reply

Marsh Posté le 18-02-2003 à 17:47:18    

El_gringo a écrit :


et le "dynamic_cast", c'est pareil ?


 
Oui. D'ailleurs le narrowing est souvent implémenté en dessous par un dynamic_cast.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 18-02-2003 à 17:50:23    

j'ai pas encore étudié le sujet mais je reviens voter dès que j'en sais plus.  J'en ai pour l'instant une toute petite idée, depuis que je lis quelques topics C++ :)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 18-02-2003 à 17:51:08    

El_gringo a écrit :


 
Heuu, CString, CArray, CTimer, CFileFind, ...
tu crois que c'est quoi ?


La question n'est pas la ! Tu compares 2 choses qui n'ont rien à voir, c'est tout !
C'est comme si tu comparais une brique avec une maison !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-02-2003 à 17:56:56    

Harkonnen a écrit :


La question n'est pas la ! Tu compares 2 choses qui n'ont rien à voir, c'est tout !
C'est comme si tu comparais une brique avec une maison !


 
...Le fait est que, généralement, quand on utilise les MFC, on utilise pas la STL

Reply

Marsh Posté le 18-02-2003 à 18:33:49    

a priori la STL est compatible sur tout OS (avec les dernieres version de compilateurs)...
 
Moi j'ai decouvert ça la semaine derniere..pas encore mis en pratique..mais dans le principe je touve ça assez top :)
 
Mais ce n'est que l'avis d'un newbie :)
 
@+

Reply

Marsh Posté le 18-02-2003 à 18:36:52    

kadreg a *crit :


 
Avoir des conteneur typ*s et pas des sacs * merdes ou on est contraint de caster comme des cons.


 
:jap:
 
Et puis, la STL c'est tres lisible. Je ne vois pas le mal qu'il y a avec ce code :

Code :
  1. vector<int> tablo;


Reply

Marsh Posté le 18-02-2003 à 18:55:30    

Je suis un peu géné car j'utilise à la fois la STL et les MFCs. Et même parfois en même temps !
 
En effet, les MFCs me sont indispensables pour faire des interfaces graphiques "évoluées" (ça permet d'aller tout de même beaucoup plus vite) mais je préfère les classes de la STL pour ce qui est "utilitaire" (vecteurs, map, strings...).
 
Par contre, il faudrait que j'essaie de me mettre à ATL qui (je crois) essaie de refaire les MFCs en utilisant les templates. Pour l'instant je m'en suis servi que pour faire des objets COM, mais il semble que l'on puisse s'en servir pour faire de vrais applications. Cela pourrait être un bon complément à la STL pour la programmation Windows. Quelqu'un a plus d'infos là dessus ?


---------------
each day I don't die is cheating
Reply

Marsh Posté le 18-02-2003 à 19:43:02    

je vous laisse deviner

Reply

Marsh Posté le 18-02-2003 à 20:01:13    

Il me semble que ATL est un complément à MFC pour pouvoir créer facilement des composants COM.
Je ne crois pas que ce soit un remplaçant.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-02-2003 à 20:47:36    

El_gringo a écrit :


Quel est l'intérêt des templates, plutôt qu'une classe de base CObject, surchargée par tous les éléments d'une API ? Pourrir la lisibilité du code ?


niveau généricité ce serait quand meme bien galére. pour une liste d'entiers, tu devrais créer une classe enrobante, ce qui alourdirait bien ton truc.
 

El_gringo a écrit :


Et puis, cela mis à part, la STL n'est quand même pas tellement lisible je trouve.  
En STL, on dirait que le code à été volontairement compliqué, des trucs tout bête avec les MFC sont vachement plus complexes à écrire en STL.


la STL est relativement lisible si tu fais un peu attention, et en plus comme ils ont normalisé les noms des méthodes, on s'y retrouve tres vite. et c'est pas parce que c'est plus simple à écrire que c'est plus puissant, plus souple.
 

El_gringo a écrit :


Et puis j'ai trouvé aucune doc attrayante sur le STL, ça me saoule.


la t'as du le faire expres pour ne pas trouver de docs bien foutues.  

Reply

Marsh Posté le 18-02-2003 à 21:30:09    

Bon El_Gringo, je sais pas ce que tu nous a fait là, mais tu ne nous a pourtant pas habitué à troller comme ça  :heink:  
 
Tu n'avances aucun argument valable et surtout constructif, tu passes pour un boolay plus qu'autre chose et le peu d'arguments que tu donnes est très facilement contré...
 
C'est quoi ce bordel ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 19-02-2003 à 12:42:08    

HelloWorld a écrit :

Il me semble que ATL est un complément à MFC pour pouvoir créer facilement des composants COM.
Je ne crois pas que ce soit un remplaçant.


 
Oups... En fait je pensais à la WTL (qui est une extension d'ATL) ! Je viens d'ailleurs de la télécharger et ça semble beaucoup plus léger que les MFC (juste 16 fichiers à inclure) et assez facile d'utilisation.


---------------
each day I don't die is cheating
Reply

Marsh Posté le 19-02-2003 à 13:09:49    

antp a écrit :

perso j'aime bien les composants Borland quand je programme en Delphi, mais je dois reconnaître qu'en C++Builder il m'est arrivé d'utiliser la STL, et une fois qu'on pige le truc et qu'on arrive à relire ce qu'on écrit, c'est excellent :love:
La syntaxe avec ces < > partout pour les templates c'est quand même pas ce qu'il y a de mieux :(


Rien ne t'empêche de nommer ces types instanciés...  :sarcastic:
Un simple "typedef vector<int> IntVector;" suffirait même, dans le principe.
 
En fait, c'est même un pratique conseillée ; bien qu'elle soit très peu répandue en C++, c'est quelque chose que font quasi-systématiquement les programmeurs dans d'autres langages qui offrent la généricité.

Reply

Marsh Posté le 19-02-2003 à 13:10:59    

BifaceMcLeOD a écrit :


Rien ne t'empêche de nommer ces types instanciés...  :sarcastic:
Un simple "typedef vector<int> IntVector;" suffirait même, dans le principe.


 
bah oui c'est ce que je fais, ça rend le truc super lisible (enfin ça reste tj du c++ :whistle:), mais malheureusement certains ne le font pas :(


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-02-2003 à 14:14:13    

Harkonnen a écrit :

Bon El_Gringo, je sais pas ce que tu nous a fait là, mais tu ne nous a pourtant pas habitué à troller comme ça  :heink:  
 
Tu n'avances aucun argument valable et surtout constructif, tu passes pour un boolay plus qu'autre chose et le peu d'arguments que tu donnes est très facilement contré...
 
C'est quoi ce bordel ?


 
Pardon Monsieur Harkonnen, je recommencerai plus !
 
Non, mais en fait, ce poste, c'était surtout pour savoir ce que pense les développeurs C++ de la STL. Parce que moi, ça fait un an et demi de que fait du C++, sans STL.
Jusqu'au jour ou g repris un projet en C, dans lequel je n'pouvais pas utiliser les MFC. G donc découvert la STL, et g été déstabilisé. J'y comprend pas grand chose. Par exemple, pour les attributs de <vector>, T0, T1, T2, T3, c quoi ? Pourquoi des noms aussi peu explicites ?

Reply

Marsh Posté le 19-02-2003 à 15:33:05    

El_gringo a *crit :


 
Pardon Monsieur Harkonnen, je recommencerai plus !
 
Non, mais en fait, ce poste, c'*tait surtout pour savoir ce que pense les d*veloppeurs C++ de la STL. Parce que moi, *a fait un an et demi de que fait du C++, sans STL.
Jusqu'au jour ou g repris un projet en C, dans lequel je n'pouvais pas utiliser les MFC. G donc d*couvert la STL, et g *t* d*stabilis*. J'y comprend pas grand chose. Par exemple, pour les attributs de <vector>, T0, T1, T2, T3, c quoi ? Pourquoi des noms aussi peu explicites ?


 
On a pas du utiliser la meme STL alors. Je ne sais absolument pas ce que peuvent etre ces membres.

Reply

Marsh Posté le 19-02-2003 à 15:34:17    

Kristoph a écrit :


 
On a pas du utiliser la meme STL alors. Je ne sais absolument pas ce que peuvent etre ces membres.


 
C'est les noms des paramètres des différents template, mais je vois pourquoi il en parle, sauf à écrire la STL, on les voit pas.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 19-02-2003 à 15:35:11    

moi non plus
 
edit: ou t'as du mal avec les templates?


Message édité par Taz le 19-02-2003 à 15:36:01
Reply

Marsh Posté le 19-02-2003 à 15:35:48    

Kristoph a écrit :


 
On a pas du utiliser la meme STL alors. Je ne sais absolument pas ce que peuvent etre ces membres.


 
c surement que j'comprend rien, mais voici :

Code :
  1. template<class Ty, class Alloc = allocator<Ty> >
  2.     class vector {
  3. public:
  4.     typedef Alloc allocator_type;
  5.     typedef typename Alloc::pointer pointer;
  6.     typedef typename Alloc::const_pointer
  7.         const_pointer;
  8.     typedef typename Alloc::reference reference;
  9.     typedef typename Alloc::const_reference
  10.         const_reference;
  11.     typedef typename Alloc::value_type value_type;
  12.     typedef T0 iterator;
  13.     typedef T1 const_iterator;
  14.     typedef T2 size_type;
  15.     typedef T3 difference_type;
  16.     // etc...

Reply

Marsh Posté le 19-02-2003 à 15:39:00    

El_gringo a écrit :


    typedef T0 iterator;


 
T0 est un type interne. Pour toi, utilisateur de la STL, seule la partie droite t'interresse : iterator.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 19-02-2003 à 15:45:03    

si tu veux je te balance du code Java non documenté et on va voir si ca te réussi mieux.
 
en plus tu peux pas t'en sortir si regardes des fragments de codes: commence par maitriser l'interface public au lieu de partir direct dans la triperie.

Reply

Marsh Posté le 19-02-2003 à 15:47:45    

El_gringo a *crit :


 
c surement que j'comprend rien, mais voici :

Code :
  1. template<class Ty, class Alloc = allocator<Ty> >
  2.     class vector {
  3. public:
  4.     typedef Alloc allocator_type;
  5.     typedef typename Alloc::pointer pointer;
  6.     typedef typename Alloc::const_pointer
  7.         const_pointer;
  8.     typedef typename Alloc::reference reference;
  9.     typedef typename Alloc::const_reference
  10.         const_reference;
  11.     typedef typename Alloc::value_type value_type;
  12.     typedef T0 iterator;
  13.     typedef T1 const_iterator;
  14.     typedef T2 size_type;
  15.     typedef T3 difference_type;
  16.     // etc...




 
La STL a, de part sa conception, la particularite qu'il ne faut surtout pas mettre le nez dans ses fichiers .h si possible :D Utilise une bonne doc plustot.

Reply

Marsh Posté le 19-02-2003 à 15:59:52    

++Taz a écrit :

si tu veux je te balance du code Java non documenté et on va voir si ca te réussi mieux.
 
en plus tu peux pas t'en sortir si regardes des fragments de codes: commence par maitriser l'interface public au lieu de partir direct dans la triperie.


 
Ben, j'commence par ce que je vois dans la doc !
ce bout de code est vers le début de la description de <vector>

Reply

Marsh Posté le 19-02-2003 à 16:08:29    

la STL c'est super.
Puis de toute facon les MFC c'est pas portable.

Reply

Marsh Posté le 19-02-2003 à 16:58:17    

El_gringo a écrit :


 
Ben, j'commence par ce que je vois dans la doc !
ce bout de code est vers le début de la description de <vector>

:heink: http://www.sgi.com/tech/stl/Vector.html
je vois pas le moindre bout de code faisant référence à l'implémentation

Reply

Marsh Posté le 19-02-2003 à 17:08:43    

kadreg a écrit :


 
Avoir des conteneur typés et pas des sacs à merdes ou on est contraint de caster comme des cons.


 
[+++]
passke quand t'as un taurreau énervé dans ta collection de carottes, t'as pas l'air con avec ton épluche-légumes et ton opérateur de cast.

Reply

Marsh Posté le 19-02-2003 à 17:11:21    

++Taz a écrit :

:heink: http://www.sgi.com/tech/stl/Vector.html
je vois pas le moindre bout de code faisant référence à l'implémentation


 
http://www.dinkumware.com/manuals/ [...] ector.html
...et là je vois ce que j'ai copié tout à l'heure !

Reply

Marsh Posté le 19-02-2003 à 17:12:49    

préfères la doc de SGI peut etre

Reply

Marsh Posté le 19-02-2003 à 17:17:02    

El_gringo a écrit :

Mes arguments ils sont tout simple :
Quel est l'intérêt des templates, plutôt qu'une classe de base CObject, surchargée par tous les éléments d'une API ? Pourrir la lisibilité du code ?
Et puis, cela mis à part, la STL n'est quand même pas tellement lisible je trouve.  
En STL, on dirait que le code à été volontairement compliqué, des trucs tout bête avec les MFC sont vachement plus complexes à écrire en STL. Et puis j'ai trouvé aucune doc attrayante sur le STL, ça me saoule.


 
heu....
 
les templates et partir d'une classe de base ça n'a rien à voir mais rien à voir du tout.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed