Petite question qui pourrait parraître "bêtes"... Le C++ évoluera t'il ? Ou cèdera t'il la place à un language plus complet que le C++ ?
Mais est-ce que le C++ est complet... complet ?
Petite question qui pourrait parraître "bêtes"... Le C++ évoluera t'il ? Ou cèdera t'il la place à un language plus complet que le C++ ?
Mais est-ce que le C++ est complet... complet ?
Oui le C++ va évoluer, le nom du prochain standard est C++0x, quand aux améliorations que ça va apporter je m'y suis pas intéressé mais il y a surement pas mal de monde ici qui pourra te renseigner.
Est-ce que le C++ est complet ? Ca dépend de ce que tu entends par complet, tu peux préciser ? Parce que tous les langages ont leurs spécificités.
Humm bien.
En faites, j'ai un livre sur le C++ (un gros livre). J'aimerais savoir, si il sera toujours valable quand le C++0x "sortira".
Je supposes que le C++0x sera assez semblable au C++ de mnt. Et donc, après ma formation au C++ actuelle, il ne me sera pas trop dur de me mettre à jour par rapport au C++0x.
En bref, j'aimerais savoir, si le livre que je possèdes ne sera pas inutile quand le C++0x sera "sorti".
Inutile je dirais proabalement pas même si certaines choses auront changées.
Mais connaissez-vous approximativement la date de "sortie" de ce nouveau standard (qui succédera donc à l'ANSI/ISO actuel je suppose) ?
Il me semble que c'est en partie traité dans la FAQ.
Je crois avoir lu dans un blog que le futur standard sera validé vers la fin de la décennie -- de plus après "C++0x" ne serait plus un sobriquet valide, et ils l'aiment bien au commité.
Dans les trucs en plus ... pas mal de choses. J'avoue ne pas tout suivre.
Diverses bibliothèques dont pas mal ont été expérimentées/pré-étudiées chez boost. On les retrouve déjà dans certaines distributions (GCC, dinkumware, ...) sous le namespace std::tr1.
Des corrections mineures au langage, et des plus profondes. J'attends avec hâte la sémantique déplacement.
Côté ce que l'on connait du C++ et des bouquins, il faut voir qu'aujourd'hui déjà beaucoup trop de bouquins passent à côté du C++ 98 et de comment il serait bon de l'utiliser.
De plus si certaines notions comme les concepts sont validées, il va y avoir encore très probablement des évolutions dans la philosophie d'utilisation du C++ (côté développement de bibliothèques essentiellement, je crois) -- à moins de vouloir se restreindre au pur objet, il y a des gens comme ça.
Bref, un point de départ moins imprécis et moins biaisé que moi sera la FAQ où on devrait pouvoir trouver un lien vers le site du commité de standardisation.
Il a dû y avoir des petites discussions sur fclc++ dernièrement (un mois ou deux) -> "post lil'hammer metting" (ou un titre comme ça)
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Que veux-tu dire par là ? Que pas mal de livres sur le C++ sont mal écrits ? Comment est-ce que cela se fait selon toi ?Envoyé par Luc Hermitte
(Tu sembles être un programmeur expérimenté donc ton avis la dessus m'intéresse...)
merci
J'entends que beaucoup de livres ne montrent pas le C++ tel qu'il devrait être utilisé, mais le C++ d'après quelqu'un qui connait le C, le Pascal, le Java, ... (cocher la case qui va bien), et qui débarque donc avec des habitudes et des idiomes pas toujours très adaptés quand ils ne sont pas dangereux et faux une fois transposés.
Il y a divers détails du C++ qui changent la donne. Dans les divers post-it (sur les divers forums), il y a des bouts de discussions à ce sujet et d'autres. Dans les récurrents "quel bouquin utiliser", d'autres bouts de discussions.
Le C++ n'est pas un langage qui se limite à une syntaxe.
Pour ce qui est de la sémantique de déplacement (j'avais oublié le "de"), il s'agit que la responsabilité des données stockées dans un objet est déplacée (confiée) à un autre objet au lieu d'une copie de type duplication.
Un exemple type serait une matrice de beaucoup d'éléments.
Avoir une fonction qui retourne une matrice veut généralement dire (mais pas toujours, cela dépend des compilateurs, des options de compilations et divers détails -> chercher C++ et RVO '"return value optimization")) que l'on va copier la matrice : soit faire une allocation en mémoire pour stocker les éléments à retourner, et faire une libération des éléments qui avaient été alloués dans la fonction. Ce n'est pas toujours efficace.
Avec une sémantique de déplacement, on pourrait transférer de façon certaine la responsabilité de la zone mémoire qui avait été allouée dans la fonction.
Plus d'infos dans les bouquins/sites qui traitent des std::auto_ptr<> (voir GOTW par exemple (Guru Of The Week)), dans l'article sur MOJO d'Andrei Alexandrescu (lien accessible depuis son site, google!), et bien sûr dans les diverses propositions à ce sujet dispos sur le site du commité.
Note: Mon exemple est assez simpliste, la sémantique de déplacement couvre d'autres applications. -> puits et sources (=> GOTW), ...
EDIT: des 's' s'étaient égarés
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Ah bon. Moi ce qui me surprend un peu c'est que les livres (en général) se concentrent beaucoup sur le langage et trop peu sur l'algorithmique.Envoyé par Luc Hermitte
Je me trompe peut être, c'est une impression ...
Sinon ce qui me fait bien rire c'est les phrases du genre "Ce livre a été conçu pour que vous maitrisiez le langage X à la fin de votre lecture ..."
S'il suffisait de lire un livre pour maitriser un langage ...
S'il suffisiat de lire un livre pour connaître tous les algos...
Beaucoup de livres proposent tout simplement un code faux, qui ne compile pas sur des compilos récents. D'autres donnent de mauvaises habitudes (char *, ...), ou réinventent la roue en n'utilisant pas les possibilités de la STL.
Bref, le C++ est trop souvent présenté comme un C avec des classes. Le code donné peut souvent compiler en Java/C# moyennant quelques changements mineurs.
En ce qui me concerne, je pense que le C++ commence aux templates.
Pour le lien de la FAQ:
http://c.developpez.com/faq/cpp/?pag...DIVERS_cpp_o_x
Je n'ai jamais dit que c'était le cas (d'ailleurs qu'entends-tu par "tous" les algos ?)Envoyé par Miles
Tout à fait d'accord, tous les livres que j'ai lu ne parlaient pas des templates, juste d'une surcouche du C![]()
La genericite uniquement? A mon avis, le grand apport sont les fonctions virtuelles, qui donnent au C++ toute sa puissance (et sa reelle qualite de langage oriente objet).Envoyé par Aurelien.Regat-Barrel
Un programmeur C qui commence le C++ va se dire que c'est un "meilleur C", avec un typage plus fort, un prototypage obligatoire, les simplifications apportees par le passage par reference et la surcharge d'operateurs, etc.
Ensuite, il se mettra a la programmation par objet, comme il le faisait en C, en utilisant des types abstraits de donnees via la declaration de types incomplets. Rien de nouveau pour quelqu'un qui a concu une bibliotheque...
Enfin, s'il a le courage, il decouvrira l'orientation objet. L'abstraction et l'heritage sont faisables en C, mais la grande puissance du C++ apparait avec les fonctions virtuelles (le polymorphisme en C, il faut s'accrocher...).
Les fonctions virtuelles n'ont rien de propre au C++. Ca existait avant, ça existe en C#, Java, ... c'est un concept objet qu'on retrouve à l'identique dans plein d'autres langages objets, à la syntaxe près. Et encore:
ce code compile en C++, Java, C#, ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class A { virtual void Hello() {} };
Par contre, lire un fichier de mots, les trier par ordre alphabétique et stocker le tout dans un autre fichier, ça se fait en quelques lignes en C++ et de manière très performante grâce aux templates.
Oui. Je disais seulement que par rapport au C, il me semble que l'apport le plus important sont les fonctions virtuelles. Par rapport au C# ou au Java, c'est peut-etre les templates, je ne peux pas juger comme je ne connais ni le C#, ni le Java.Envoyé par Aurelien.Regat-Barrel
Par contre, tu dis que les fonctions virtuelles existaient avant le C++. Quel langage les a introduit? Smalltalk?
En même temps la glib implémente tout les aspects de l'orienté objet en C ... Faut pas oublier que le language n'est qu'une facilité, après c'est l'utilisation qu'on en fait qui compte.Envoyé par DaZumba
Quelqu'un n'aurait-il pas quelque information à propos du C++0x ?
8)
Ok. Moi je parlais de ce qui faisait la particularité de C++, je ne me situais pas par rapport à un langage particulier.Envoyé par DaZumba
Je sais pas. Je sais que C++ s'est pas mal inspiré de Simula, mais je connais pas ce langage. Je pense que ces concepts objets sont bien plus anciens, et ont été développés dès les années 60.Par contre, tu dis que les fonctions virtuelles existaient avant le C++. Quel langage les a introduit? Smalltalk?
Comme l'a dit zdra, c'est pas vraiment lié au langage. Le C n'interdit pas de faire de l'orienté objet, avec des appels virtuels. C'est plus contraigant c'est tout. Il cite la glib, on pourrait aussi citer COM, ou certains mécanismes de Win32.
Partager