Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le futur du C++
Présenté dans une vidéo de Herb Sutter

Le , par Community Management

0PARTAGES

14  0 
Le futur du C++

Hier, Herb Sutter a dévoilé plusieurs annonces importantes pour l’avenir du C++.
Notamment les dates des prochains standards, qui ont finalement été décidées.

Il a tout d’abord présenté de façon simple l’organisation du processus de standardisation :


Chaque SG est un groupe de travail qui peut comprendre jusqu’à quarante personnes. Ils étudient les besoins spécifiques à leur domaine afin de proposer la conception d’une fonctionnalité majeure. La conception est ensuite améliorée et mise au point par les groupes Evolution et Library : Evolution est responsable de l’évolution du langage tandis que Library traitera de l’impact de cette fonctionnalité dans la STL. Les groupes Evolution et Library peuvent également proposer des fonctionnalités mineures.
Puis chaque fonctionnalité passe par le Core qui en fera un « draft » détaillé capable d’intégrer le standard. Enfin, ce « draft » passera au vote général du WG21 – qui est le nom du comité international qui traite du C++ - , afin de décider de son intégration au prochain standard, ce qui en fait un traité international.

Cette introduction permet de présenter le calendrier des dates décidées par le comité :


On note bien évidemment deux dates importantes qui correspondent à deux nouveaux standards : C++17 qui sera un nouveau standard majeur, autrement dit de même importance que la norme C++11 ; mais également C++14 qui sera un standard mineur, c’est-à-dire qu’il ne comportera que des ajouts mineurs, mais aussi toutes les fonctionnalités majeures votées à cette date.
Ces fonctionnalités majeures feront l’objet de TS – Technical Specification est le nouveau nom donné aux TR alias Technical Report – indépendants, ce qui permettra de profiter des ajouts majeurs sans attendre 2017.
Le SG4 a d'ores et déjà annoncé qu’il publierait un TS Network tous les ans, mais le TS le plus proche concerne FileSystem qui est la 3e révision de cet ajout tiré de boost. Le TS sur la mémoire transactionnelle est plus flou dans les dates puisque le SG5 doit pour cela travailler de concert avec le consortium industriel.

Mais ce n’est pas tout, les annonces ne sont pas terminées. La suivante concerne l’ouverture officielle de isocpp.org, qui sera le site officiel du comité de standardisation. On pourra y trouver des informations sur l’avancement de la norme, des annonces importantes concernant le C++, et beaucoup d’autres choses. Le but de ce site est de promouvoir un style de programmation C++ moderne ainsi que l’expansion des bibliothèques C++ portables.

La dernière annonce concerne la création d’une association indépendante, la Standard C++ Foundation – à noter qu’elle est financée par 17 grandes entreprises à ce jour ayant un intérêt commun à la standardisation du C++. Son but est de promouvoir la compréhension et l’utilisation du C++ standard sur tous les compilateurs et toutes les plateformes – les entreprises qui financent ne contrôlent pas l’association. Les six directeurs de cette association sont C. Carruth, B. Stroustrup, B. Dawes, H. Sutter, S. Du Toit et M. Wong.

Toutes ces annonces promettent un bel avenir pour le C++, l’utilisation et la propagation de ces normes internationales ne tiennent qu’à vous tous, développeurs C++.

Comment suivez-vous l’actualité du C++ ?
Connaissiez-vous le fonctionnement du comité de standardisation du C++ ?
Utilisez-vous le dernier standard (C++11) en production ? À titre personnel ?
Comment vous formez-vous à l’utilisation de la dernière norme (C++11) ?


Voir également Microsoft renforce le support de C++ 11 dans Visual Studio 2012

Source : The Future of C++

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Emmanuel Deloget
Expert confirmé https://www.developpez.com
Le 04/11/2012 à 14:45
Pas nécessairement. Il se passera quand même plusieurs années entre deux releases majeures - et les releases intermédiaires devraient être suffisament limitées en scope. Il faudrait demander d'autres informations pour vraiment comprendre ce qui va se passer, mais il est probable que les vendeurs de compilateurs soient grosso-modo respectés.
1  0 
Avatar de mitkl
Membre éprouvé https://www.developpez.com
Le 04/11/2012 à 18:41
> Comment suivez-vous l’actualité du C++ ?

sur reddit.com/r/cpp principalement
et de loin sur http://www.open-std.org/JTC1/SC22/WG21/

> Connaissiez-vous le fonctionnement du comité de standardisation du C++ ?

Légèrement

> Utilisez-vous le dernier standard (C++11) en production ? à titre personnel ?

Un petit peu dans mon dernier projet professionnel sous VS2010:
- inférence de type avec auto
- quelques lambdas
- nullptr
- etc.

> Comment vous formez-vous à l’utilisation de la dernière norme (C++11)

Mmh bonne question, à vrai dire, la plupart du temps je regarde la liste des nouveautés sur l'article Wikipédia http://en.wikipedia.org/wiki/C%2B%2B11 et après je sélectionne un thème et je fais des recherches google dessus.
1  0 
Avatar de Freem
Membre émérite https://www.developpez.com
Le 05/11/2012 à 10:51
Citation Envoyé par germinolegrand Voir le message

Comment suivez-vous l’actualité du C++ ?
Connaissiez-vous le fonctionnement du comité de standardisation du C++ ?
Utilisez-vous le dernier standard (C++11) en production ? à titre personnel ?
Comment vous formez-vous à l’utilisation de la dernière norme (C++11) ?
Pour ce qui est de suivre l'actualité, principalement DVP, il me reste de toute façon pas mal d'années à rattraper pour en arriver à 2012

Le dernier standard, je ne peux pas l'utiliser à mon boulot, en revanche à titre perso, je n'ai aucune raison de me priver: G++ 4.7 marche sous linux, et les gens avec windows peuvent utiliser mingw, alors au diable l'avarice.

Pour ce qui est de la formation... idem que au-dessus, liste des fonctionnalités nouvelles sur wikipedia qui me fait enchaîner sur une recherche si le nom me plaît.

Pour en revenir au fait qu'accélérer les normes risque de poser problèmes aux éditeurs de compilos, je ne pense pas, à ce que j'avais compris quand C++11 était sortie, ils projettent de faire des normes moins grosses mais plus fréquentes.
En somme, utiliser un truc un peu moins loin du "release early, release often". Tout de même, 6 ans pour la prochaine stable me paraît long... même si le temps est divisé par 2
En tout cas, je saluerais avec joie l'arrivée officielle de filesystem dans le standard. C'est que c'est un peu agaçant quand on nous dis que C++ n'est même pas capable de manipuler des fichiers correctement tout seul... (parce que l'écriture/lecture, il n'y a pas que ça dans la vie).

Au niveau du site, j'ai hâte de voir tout ça se mettre en place, notamment le wiki et les citations des lib portables, ça risque d'être sacrément intéressant.

[edit]
Failli oublier... autre chose que j'aimerai voir, c'est la possibilité d'utiliser le polymorphisme dans les les conteneurs sans s'embêter avec des pointeurs nus. Pour le moment, j'utilise boost::pointer mais je me dis que le voir en standard serait une bonne solution pour rendre plus simple quelque chose que je pense utilisé par la plupart des programmes C++.
1  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 05/12/2012 à 14:40
Citation Envoyé par Klaim
1. a ne plus avoir besoin de headers separe du code source
J'ai toujours eu du mal à comprendre ce point. Actuellement, rien nous oblige à séparer le header du code source (on met tous dans le header), c'est un choix volontaire de séparer l'interface et le code source. Quel intérêt à revenir à un système qui ne permet plus cette séparation ? On perd l'avantage de séparer la partie "stable" d'un classe (son interface) de la partie "moins stable" (son implémentation), non ?

@koala01
J'ai du mal à voir en quoi l'utilisation d'une table de symbole dépend des modules. C'est plutôt une limitation des compilateurs actuels (je croyais d'ailleur de clang utilisait justement un table des symboles pour éviter de relire plusieurs fois les fichiers d'en-tête), non ? Les modules sont juste une réorganisation/regroupement différents/supplémentaires des fichiers ou j'ai loupé une chose ?

EDIT : ok, j'ai pris le temps de regarder la présentation des modules pour clang. Ca ne supprime pas les headers en fait, tout va bien de ce coté. EDIT2 : ah si, ça supprime bien les headers dans la création des modules.
Pour l'histoire de la table des symboles, je me demande si le problème ne vient pas de la norme qui dirait "avec include, faut copier-coller le code" et que donc utiliser une table des symbole avec include irait à l'encontre de la norme. Pour des raisons de rétro compatibiltié, la norme ne peut pas alors modifier la règle "avec include, faut copier-coller le code" et il faut alors une nouvelle fonctionnalité (les modules) pour autoriser l'utilisation de la table des symboles.
C'est plus comme ça qu'il faut comprendre pourquoi on a besoin des modules pour passer à une compilation utilisant une table des symboles ?
1  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 05/12/2012 à 16:47
Citation Envoyé par gbdivers Voir le message
J'ai toujours eu du mal à comprendre ce point. Actuellement, rien nous oblige à séparer le header du code source (on met tous dans le header), c'est un choix volontaire de séparer l'interface et le code source. Quel intérêt à revenir à un système qui ne permet plus cette séparation ? On perd l'avantage de séparer la partie "stable" d'un classe (son interface) de la partie "moins stable" (son implémentation), non ?
Non, parcequ'un module a une partie publique et une partie privee. Ce n'est pas explique dans la presentation parceque ce n'est pas le sujet, mais dans les derniers brouillons de la specification on explique qu'il y a bien une section privee et une section public a chaque module.

Jusqu'ici nos headers servaient de section publique, essentiellement parceque la methode d'import (#include) marche comme un copier/coller d'un fichier entier. (ce qui implique tout un tas de problemes que les modules tentent de resoudre ou d'amoindrir)

Or, des le moment ou ton cpp peut etre decoupe en deux parties publiques et privees ET que tu specifies que le compilateur doit pouvoir prendre en compte lui meme cette notion, pas via de la generation de code par copier coller, alors tu n'as pas forcement besoin de separer ton interface publique dans des headers.

Le vrai probleme que tu souleves c'est au niveau de la documentation: il est plus efficace pour des programmeurs de se baser sur le code comme specification d'interface plutot que sur une documentation separee (et potentiellement fausse).
Quand on travail avec une interface dont on a pas les sources c'est effectivement un gros souci.

Je crois que ca n'a pas encore ete decide de l'orientation sur ce point. D'un cote, les #includes existeront toujours pour la retrocompatibilite, ce qui signifie qu'on peut toujours generer des modules dont la partie publique serait des headers qui seraient fournis aux clients.

Une autre possibilite serait de faire en sorte que le compilateur genere un format intermediaire qui ressemble fortement au C++ normal mais avec des parties caches. En gros on aurait des headers generes mais avec seulement les parties visibles (les membres prives d'une classe ne seraient pas visible).
Le probleme avec ca c'est que ca suppose une sorte de nouveau language a lire pour le compilateur. Il y a aussi le souci des commentaires: est-ce que le compilateur doit les garder avec le code genere? Si oui il faudrait un moyen de specifiier la documentation specific aux interfaces, comme le font C# et java et python par exemple.
En gros, beaucoup de boulot, mais est-ce que ca vaut le coup?

Difficile a dire.
A ce que je sache, tout ca est a l'etude, donc des qu'on peut tester des premieres versions stables avec clang, on aura une idee plus clair de ou ca peut aller.

edit> Le fichier map, c'est la solution 2 1.
1  0 
Avatar de Arzar
Membre émérite https://www.developpez.com
Le 04/11/2012 à 14:14
Une petite question : Donc si je comprends bien le site http://isocpp.org/ est le site officiel de cette association "Standard C++ Foundation" ?
Car j'ai vu apparaitre ce site il y a quelques semaines mais je n'arrivais pas à déterminer s'il s'agit d'une initiative individuelle ou de quelque chose de plus officielle (le design du site fait un poil amateur d’où le doute )
0  0 
Avatar de germinolegrand
Membre expert https://www.developpez.com
Le 04/11/2012 à 14:16
C'est quelque chose d'officiel. Cette association est chargée de détenir les copyrights relatifs au C++ notamment.
0  0 
Avatar de stardeath
Membre expert https://www.developpez.com
Le 04/11/2012 à 14:28
le c++ me parait une norme complexe en terme d'implémentation, faire des nouvelles normes si rapprochées ne risque t'il pas de mettre les compilateurs à la rue?

à peine une norme sera t'elle fini d'implémentée et surtout rodée qu'une nouvelle devra déjà être sur la route.
0  0 
Avatar de germinolegrand
Membre expert https://www.developpez.com
Le 04/11/2012 à 14:44
Eh bien, je dirais non puisque les responsables des compilateurs font je crois partie du comité et les votent...
0  0 
Avatar de Jean-Marc.Bourguet
Expert éminent https://www.developpez.com
Le 04/11/2012 à 17:51
Citation Envoyé par Arzar Voir le message
Une petite question : Donc si je comprends bien le site http://isocpp.org/ est le site officiel de cette association "Standard C++ Foundation" ?
Car j'ai vu apparaitre ce site il y a quelques semaines mais je n'arrivais pas à déterminer s'il s'agit d'une initiative individuelle ou de quelque chose de plus officielle (le design du site fait un poil amateur d’où le doute )
C'est quoi officiel?

C'est une association fondée par des gens qui sont impliqués dans la normalisation du C++ et qui ressentaient un manque d'actions dans des domaines ne relevant pas du comité en tant que tel. (Ada, un autre langage qui souffre de ce problème -- dans les deux cas dû essentiellement à l'absence d'une structure qui se sente propriétaire du langage -- a quelque chose de correspondant plus ou moins: www.adaic.org)
0  0