On est d'accord que le retrait des concepts de C++0x est déplorable, mais ils existent bel et bien et pas seulement virtuellement.
C'est comme si tu disais que les interfaces n'existaient pas en C++ simplement parce que le mot-clé « interface » n'existe pas…
Il me semble qu'on t'a déjà répondu à ce sujet.Citation:
et si t'utilise std::string il y en a d'autres qui utilisent char* ou QString ou CString ou ATL::CString ou autre.
char*, c'est du C, dont le C++ hérite.
Si tu te retrouves avec une fonction qui prend un const char*, str.c_str() et roule ma poule.
Une fonction qui renvoie un const char* ? std::string a le constructeur qui va bien.
CString ? Les MFC c'est objectivement de la merde, pourquoi continuer à en parler ? (C'est bien du MFC, non ? J'ai cherché « CString » sur Google pour m'en assurer… hum… ne faites pas ça chez vous, les enfants :aie:)
En ce qui concerne les redondances entre Qt et la STL (que je suis le premier à déplorer), il faut savoir que Qt est antérieur à la STL. Et de toute façon, si j'en crois les commentaires de mes confrères, l'interaction entre les deux types n'est pas très douloureuse.
wxWidgets, gtkmm et d'autres ont également leur type string propre. Mais en fait, est-ce vraiment un problème si terrible ?
Lorsque l'on utilise une bibliothèque, il faut autant que possible éviter de rendre le code dépendant de celle-ci, éviter d'être dépendant de ses types, de ses structures de données, etc. Le projet utilise ses structures de données propres en interne dans ses classes métiers (quand rien n'existe dans la STL ou dans Boost) et fait les conversions et wrappings qui vont bien dans le code encapsulant les libs en question (preuve qu'on sait ce que c'est, une abstraction).
En quoi serait-ce une précaution propre au C++ ?
On attend tous les concept_map avec impatience ;).Citation:
et le vrai intérêt du concept ce n'est pas de l'avoir dans la tête mais concrètement avoir l'entité qui fait l'abstraction pour que la communication entre librairies soit facile.
Sans vouloir t'attaquer personnellement (je me suis moi aussi posé ces questions au cour de mon apprentissage du C++, venant à l'origine du Java), cette remarque en dit plus sur ta maitrise du langage que sur les soit-disant faiblesses de ces bibliothèques.Citation:
et pour ta critique sur ma phrase:
pour être clair pour concept je parle la de classe abstract pure indépendante de toute implémentation, a tu compter combien il y en a dans STL,Boost et QT ?
par exemple dans QTCore de QT je peux t'assurer qu'il n y a pas assez d'abstraction et essaye d'énumérer combien de classes abstraites pur qu tu rencontre dans les différents projets sur lesquels t'a travailler.
La virtualité des interfaces a un cout au runtime. L'abstraction apportée par les templates déplace ce cout à la compilation.
Pourquoi n'y a-t-il pas d'interface IContainer dans la STL ? Parce que les concepts de conteneurs la remplacent avantageusement.
Tu vas peut-être encore me répondre que ce n'est pas assez concret à ton gout, et pourtant c'est grâce à ça que les algorithmes de la STL fonctionnent (et fonctionnent même extrêmement bien).
Nous débâtons dans le calme et je m'en réjouis ;). Merci à toi pour cela.Citation:
d'autre part ne prenais pas comme attaque personel chaque idée evoqué,
J'ai plus l'impression que ce qui se passe, c'est qu'on est tous en train d'essayer te convaincre que tu mets le doigt sur des faux problèmes (ce qui ne veut pas dire qu'il n'y a pas de vrai problème).Citation:
on est entrain de débattre de la manière d'aborder c++ pour convaincre les décideurs que C++ n'est pas si compliqué que ca.
Bien sûr que le C++ peut mieux faire, sinon le comité et ses innombrables débats n'auraient pas lieu d'être.Citation:
et si t'est convaincu que le monde de C++ c'est le paradis et il n y a aucun souci de complexité de ces librairies (je parle bien de librairies mais non du langage) tu n'a qu'a demander a ton DRH combien maintenant c'est mission impossible de trouver un bon profil C++.
Bien sûr qu'il y a des bibliothèques qu'on aimerait voir disparaitre. Ici, on pousse les gens à utiliser les bonnes.
Toutefois, je ne pense pas qu'on puisse attribuer cet état de fait (la difficulté de trouver des bons codeurs C++) à tous les « problèmes » que tu as désigné. À mon humble avis, c'est plus un problème d'enseignement.
Enfin, pour DotNet, désolé, je ne connais pas du tout !