C++0x : l’avenir du C++ ?
Hier je suis tombé un peu par hasard (ou pas d'ailleurs) sur les specs du C++0x (qui devrait maintenant s'appeler C++1x), norme qui devrait remplacer à terme le C++ tel qu'on le connait aujourd'hui...
J'étais assez sceptique car dernièrement je trouve que le C/C++ n'avance pas trop (par rapport à ce qui se fait partout ailleurs), mais je dois admettre que j'ai eu quelques bonnes surprises (et quelques mauvaises, dommage ^^). Voici quelques points que j'ai trouvé intéressants à signaler.
Points positifs
Expressions constantes
On pourra préciser qu'une fonction a un résultat constant et doit être évaluée à la compilation. Pas révolutionnaire, mais ça pourrait permettre de nettoyer un peu certains bouts de code.
Améliorations des constructeurs
En plus des initialisations déjà possibles, on pourra faire mieux, comme par exemple : AltStruct(int x, double y) : x_{x}, y_{y} {}. Ca permet d'initialiser directement avec les valeurs passées en paramètre.
De plus, un constructeur pourra enfin appeler un autre constructeur ! Fini les fonctions "init" à la con qui trainaient dans les sens, avec des constructeurs vides qui ne faisaient qu'appeler init()....
Types automatiques
Introduction du type "auto", le compilo n'a qu'à se démerder ^^. A voir à l'usage.
Boucles foreach
Les boucles for sont enfin étendues !! Voici l'exemple donné par Wikipedia :
int my_array[5] = {1, 2, 3, 4, 5};for(int& x : my_array){ x *= 2;}
Lambda-fonctions/expressions
A voir à l'usage, la déclaration a l'air plutôt moche. Donc je verrais quand ça sortira ^^
Gestion du UTF-8 et cie
Toujours bon à prendre ^^
Ajout des N-uplets
typedef tuple< int, double, long &, const char * > test_tuple ;
Je trouve la syntaxe très moche, mais c'est toujours bon à prendre ^^
Hashtables dans les libs standard
Pareil, toujours bon à prendre, ça peut dépanner et ça évite de se faire chier
Meilleur support des Regexp
Enfin !!!
Bon, j'ai zappé pas mal de features, dont certaines très importantes (métaprogrammation et améliorations diverses concernant les threads, entre autres), mais j'ai parlé des features pour lesquelles j'ai le sentiment que ça pourrait me servir un peu tout le temps.
Points négatifs
Par contre, comme je l'avais précisé au début, tout n'est pas rose... Certaines choses ne seront toujours pas présentes, et sont repoussées à plus tard :
Garbage Collector
Ca c'est bien dommage ! J'aurai bien aimé un mécanisme pour avoir le choix de placer certains objets sous la responsabilité d'un GC, et d'en garder d'autre en maintenance à la main ^^
C'est LA feature qui va le plus me manquer. Et s'en est une bien grosse :/
Synthèse
Au final, du bon et du mauvais. Je sais que je n'ai listé que le Garbage Collector, mais pour moi c'est un gros bout quand même, qui peut apporter pas mal de souplesse et de facilité au développement. Ne pas avoir ça en 2010, c'est dommage.
Du coup je vais voir ce que ça donne quand ça sortira (je suppose que GCC sera rapidement à jour), mais je vais surement me tourner du côté d'autres langages du même genre (niveau perfs ^^), comme le D, qui commence à sérieusement me faire de l'oeil :p
Aucun trackbacks pour l'instant