Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Débat : Quel va donc être l'avenir du C++ ?

Le , par Aurelien.Regat-Barrel, Expert éminent
Dans l'article A Brief Look at C++0x, Bjarne Stroustrup (le créateur du C++) s'exprime sur l'avenir de ce langage. Rappelons que C++0x est le "nom de code" de la prochaine norme du langage qui est à l'étude depuis un certain temps déjà (voir Qu'est-ce que C++0x ?).

Dans son article, Bjarne explique que cette norme est entrée dans "une phase décisive" en vue de sa ratification en 2008. Il explique aussi que l'esprit de cette future norme est davantage de modifier la façon qu'ont les programmeurs de concevoir leur code plutôt que leur manière de l'écrire.
Une des priorités est de limiter l'introduction de nouveautés du langage au profit d'un enrichissement de la bibliothèque standard, dans un esprit de généricité, de simplicité et bien sûr de performance.

Bjarne effectue ensuite un rapide tour d'horizon des nouveautés. Il sera ainsi possible d'initialiser statiquement un conteneur avec une liste d'initialisation (au moyen de ce qui sera vraisemblablement un constructeur de séquence):

Code : Sélectionner tout
1
2
3
4
5
6
7
class A {}; 
 
std::vector<A*> v = {  
    new A, 
    new A, 
    new A 
};
de définir un alias sur des templates (template typedef):

Code : Sélectionner tout
1
2
template<class T> using Vec = vector<T,My_alloc<T>>; 
Vec<double> v = { 2.3, 1.2, 6.7, 4.5  };
l'utilisation des conteneurs de la STL sera simplifiée afin de ne plus exiger un itérateur de début et un autre de fin:

Code : Sélectionner tout
sort( v ); // remplace sort( v.begin(), v.end() );
ceci sera rendu possible grâce à une des grande nouveautés de C++0x : l'introduction des concepts, qui permettent de décrire le type d'un type (ses propriétés). Cela se traduit notamment par l'apparition du mot-clé where dans les templates qui permet de spécifier clairement des conditions sur le paramètre T passé.

Code : Sélectionner tout
1
2
3
template<Container C, Predicate Cmp> 
    where Can_call_with<Cmp,typename C::value_type> // mot-clé where 
    void sort(C& c, Cmp less);
Une autre grande nouveauté fort appréciable est la nouvelle signification du mot-clé auto (qui n'a actuellement plus d'utilité) : il permettra dans une déclaration de déduire automatiquement le type d'une variable à partir de son initialiseur.
Ainsi, l'utilisation des itérateurs de la STL sera fortement allégée. Au lieu d'écrire:

Code : Sélectionner tout
1
2
for (std::vector<double>::const_iterator p = v.begin(); p!=v.end(); ++p) 
    cout << *p << endl;

on pourra simplement écrire:

Code : Sélectionner tout
1
2
for (auto p = v.begin(); p!=v.end(); ++p) 
    cout << *p << endl;

La bibliothèque standard va elle aussi être fortement enrichie, avec l'apparition
  • des tables de hachage
  • des expressions régulières
  • de pointeurs intelligents plus complets
  • de fonctions mathématiques spéciales
et de bien d'autres choses.

En revanche le C++ ne comportera toujours pas de bibliothèque graphique standard, mais pourrait disposer d'un garbage collector et d'une gestion des threads. Les développeurs sur systèmes embarqués ne sont pas non plus oubliés, avec l'apparition d'une bibliothèque facilitant l'utilisation directe du matériel.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur http://www.developpez.com
le 05/11/2008 à 2:09
Citation Envoyé par Klaim  Voir le message
Sinon c'est clair que les libs de parallélisation vont aider (de loin ont dirait de la simplification/ajout de MPI+OpenMP non? On sait si c'est basé sur ces libs?)

Ca fait déjà un bout de temps qu'ils parlent de cette lib (une version .NET avec les mêmes abstractions existe déjà, d'ailleurs), et à ce que j'en ai vu, ça m'avait l'air plus proche des TBB. Par ailleurs, ils comptaient proposer en plus des outils pour aider à débuger le multithread (visualiser en debug des variables par thread,...) Il y a un webcast en français sur le site de Microsoft sur le sujet, il doit dater du début de l'année, de mémoire.
Avatar de Alp Alp - Expert éminent sénior http://www.developpez.com
le 05/11/2008 à 8:45
J'ai justement parlé à celui qui a fait le webcast.

En fait, oui on pourra debugger les programmes multithread plutôt facilement, même si ça ne vaudra pas les outils d'Intel ou autres, et ce n'est pas l'objectif.
Avatar de befalimpertinent befalimpertinent - Membre éclairé http://www.developpez.com
le 12/11/2009 à 16:47
Sur wikipedia C++0x est devenu C++1x (depuis Juillet en fait quand je regarde les diffs). C'est officiel ?

vous me direz c'est juste une question de nom mais je croyais qu'on s'orientait vers un C++0a.

Toujours est il qu'elle se fait désirer cette nouvelle norme. Bonne ou mauvaise nouvelle?
Avatar de Alp Alp - Expert éminent sénior http://www.developpez.com
le 13/11/2009 à 9:09
Bah c'est 1x si on reste en base 10, mais en hexa ça serait surement C++0x toujours, mais avec x = a
Avatar de 3DArchi 3DArchi - Rédacteur http://www.developpez.com
le 13/11/2009 à 10:24
En espérant que ce ne sera pas C++1x en hexa
Avatar de koala01 koala01 - Expert éminent sénior http://www.developpez.com
le 13/11/2009 à 10:35
Ceci dit, il me semble que l'on parle de cette nouvelle norme depuis 2005 ou 2006...

Nous l'attendons donc depuis si longtemps que, tant qu'à faire, je préférerais avoir une norme bien ficelée qui prend "un peu de retard" que quelque chose fait un peut trop à la va vite pour respecter une road map, mais qui devrait être repris d'ici deux ans à coup de technical report

Bien sur, le retard n'est jamais bon, surtout que l'on ne sait pas trop sur quel pied danser en attendant, mais, dans l'ensemble, la norme actuelle, et surtout son technical report, sont, enfin, correctement implémentée, et, malgré tout, elle tient la route
Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur http://www.developpez.com
le 13/11/2009 à 10:47
Pour moi, le risque n'est pas tant un truc pas fini qu'un truc vidé de sens. Finalement la nouvelle norme apporte assez peu par rapport à l'ancienne, quand on réfléchit à la durée depuis 98...
Avatar de koala01 koala01 - Expert éminent sénior http://www.developpez.com
le 13/11/2009 à 11:12
En fait, cela me fait me poser une question...

S'il décident de retarder la sortie officielle de la norme (d'une durée inconnue), y a-t-il une chance pour qu'il décident de faire "marche arrière" sur certaines décisions, comme celle de ne pas inclure les concepts

Ou s'agit-il seulement de se donner "un peu plus de temps" pour la finaliser sous sa forme actuelle

Etant entendu que, de toutes manières, il n'y aura quoi qu'il advienne pas d'ajouts supplémentaire
Avatar de Alp Alp - Expert éminent sénior http://www.developpez.com
le 13/11/2009 à 11:16
Ils ne reviendront pas sur les concepts. Le retrait des concepts leur a déjà fait perdre du temps.
On ne peut espérer que des petites choses, mais à mon avis pas les lambdas polymorphes ou autres grosses features de ce genre. Ils essaient surtout de consolider ce qui est déjà, résoudre le max d'issues, etc.
Avatar de 3DArchi 3DArchi - Rédacteur http://www.developpez.com
le 13/11/2009 à 13:24
Citation Envoyé par JolyLoic  Voir le message
Pour moi, le risque n'est pas tant un truc pas fini qu'un truc vidé de sens. Finalement la nouvelle norme apporte assez peu par rapport à l'ancienne, quand on réfléchit à la durée depuis 98...

En même temps, il y a un tas de petites choses qui seront très utiles. Je pense à la délégation de constructeur souvent demandée par les gens venant d'autres langages, les constantes expressions, le nullptr, =default/=delete, les classes d'enum, les typedef de template, le long long int. Puis d'autres choses qui deviendront rapidement indispensables : les smart pointer, auto/decltype, les ranged-based for, les variadic templates, l'extern template, les assertions statiques, etc. Puis les lambda, et la sémantique de mouvement. Bref, ce ne sont peut être pas de grandes nouveautés mais clairement des choses qui manquent et pénalisent le C++ par rapport à d'autres langages.
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 13/11/2009 à 19:28
http://herbsutter.wordpress.com/2009...dards-meeting/ > Ils font donc principalement du nettoyage pour sortir enfin le nouveau standard.

Par contre je suis jeune mais je me sent vieux rien qu'a l'idée que certaines features (les concepts mais aussi d'autres) mettrons minimum 3 ans suplémentaires pour être standardisé, plus pour être implémenté.

C'est quand même vachement long à force :/
Offres d'emploi IT
Ingénieur(e) systèmes distribués
Artelys - Ile de France - Paris (75002)
Consultant technique mobilité (android, ios) h/f
INEAT Conseil IDF - Ile de France - Boulogne-Billancourt (92100)
La DGSI recrute un technicien en développement d'applications web
DGSI - Ile de France - Levallois-Perret (92300)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique C++