2010-09-17 4 views
2

J'ai donc essayé de faire quelques recherches et aimerais les opinions des autres développeurs sur ce sujet. Je suis un programmeur C++ expérimenté et j'utilise la norme C++ actuelle depuis un certain temps. J'ai lu des articles que "C++ 0x deviendra sans aucun doute la nouvelle norme." Jusqu'où est-ce que tout le monde pense-t-il de passer à une toute nouvelle norme de programmation? Aussi, qui, à vos yeux, est un meilleur standard? De la façon dont je le comprends, C++ 0x viendra avec plus de bibliothèques standard rendant le développement plus facile sans beaucoup plus de dépendances. S'il vous plaît aidez-moi à rattraper!C++ ou C++ 0x - Quel est le meilleur standard?

Merci!
Dennis M.

+7

En fait, ils sont tous les deux au pair pour la lecture (sec et sans esprit). Mais, en envisageant la meilleure façon de tuer quelqu'un sur SO pour poser des questions ineptes, le standard C++ 0x est un gagnant clair. Il est beaucoup plus épais et écrasera les crânes en deux fois moins de temps que la norme actuelle :-) – paxdiablo

+0

Ni «C++» ni «C++ 0x» ne sont standard. La dernière spécification de langage C++ est C++ 03. 'C++ 0x' est le surnom utilisé pour la dernière spécification de langue * draft *. Herb Sutter a indiqué qu'il s'attendait à ce que le dernier brouillon soit approuvé en tant que «C++ 11», ce qui signifie approuvé en 2011, ou au plus tard si des changements sont nécessaires en 2012, ce qui signifie que le brouillon deviendrait «C++ 12». . –

+2

@paxdiablo, vous ne pouvez pas dire que la spécification est * entièrement * sèche et sans esprit. Il y a des oeufs de Pâques.Par exemple, note à la page 1107 de la FCD: "341) Les objets atomiques ne sont ni actifs ni radioactifs." Et oui, je l'ai trouvé moi-même en lisant la tombe. –

Répondre

10

Il serait assez triste si la prochaine version de C++ était quantitativement pire que la version actuelle. Tout le but de la nouvelle révision est d'améliorer les choses.

+0

Naturellement, mais j'ai lu quelque chose à propos de "Boost" étant similaire à un C++ 0x; Je me sens boostlib est très bon pour quelque chose, mais je ne suis pas un grand fan de i moi-même. Désolé pour une question apparemment aussi stupide, j'essaie simplement de percevoir un meilleur concept de l'endroit où les choses bougent. – RageD

+2

@Dennis: Boost est une bibliothèque standard "de fait" non-officielle pour C++ qui est destinée à fournir des bibliothèques qui fonctionnent bien avec la bibliothèque standard C++. Il est prévu que les bibliothèques de Boost qui sont largement utiles finiront par devenir standard (comme cela est déjà arrivé avec des choses comme 'shared_ptr '). Lisez tout à ce sujet à http://www.boost.org/ –

+0

@Ken, true. Mais @Dennis, bien sûr, comme toute partie de la bibliothèque standard, c'est votre choix si et quand l'utiliser. Ainsi, par exemple Si vous n'avez pas utilisé 'boost :: shared_ptr', vous n'avez pas besoin de commencer à utiliser' std :: shared_ptr'. –

7

Eh bien, cela dépend. Le standard C++ actuel (C++ 03) est actuellement "meilleur" car la plupart des derniers compilateurs C++ et des implémentations de bibliothèque standard sont assez conformes à la norme. Oui, il existe des problèmes, mais la plupart d'entre eux sont très bien connus (par exemple, pratiquement aucun compilateur ne prend en charge l'exportation) ou sont assez faciles à contourner.

La prise en charge de C++ 0x est assez inégale en ce moment. Différents compilateurs supportent différentes parties et d'importantes modifications y ont été apportées au cours de la dernière année, de sorte que les compilateurs qui fournissaient un support précoce pour certaines fonctionnalités sont maintenant "bogués" si vous considérez leur conformité aux derniers brouillons. À l'avenir, cependant, C++ 0x sera une énorme amélioration par rapport à C++ 03. Des fonctionnalités majeures telles que le modèle de mémoire de concurrence et les bibliothèques de threads et atomiques standard sont extrêmement importantes pour l'avenir de la langue. La sémantique de déplacement facilite l'écriture de code propre et performant. La plupart des nouvelles fonctionnalités du langage rendront le développement en C++ plus agréable.

2

"C++ 0x deviendra sans aucun doute la nouvelle norme" est un euphémisme. C++ 0x est le brouillon de la nouvelle norme. Certaines parties sont maintenant disponibles dans des compilateurs comme G ++ 4.5.

Il est impossible C++ 0x être qualitativement pire que la norme actuelle de C++, parce que l'une des choses essentielles sur la nouvelle norme est qu'il est compatible complètement en arrière. S'il y a de mauvaises parties, vous pouvez simplement les éviter. (Bien sûr, cela ne signifie pas que les nouvelles fonctionnalités de C++ 0x ne peuvent pas être utilisées pour créer du code vraiment mauvais que vous aurez à traiter, mais si vous codez vous-même, vous pouvez toujours choisir pour éviter les fonctionnalités C++ 0x qui sont pires à votre avis.)

+3

"L'une des choses essentielles à propos de la nouvelle norme est qu'elle est totalement rétrocompatible" - c'est une affirmation très forte qui est prouvée incorrecte. Par exemple, le programme C++ 03 valide suivant: 'static static_assert = 0;' - n'est pas un programme C++ 0x valide. C'est un cas trivial, mais de nombreuses autres différences subtiles sont là. Il est définitivement _highly_ rétrocompatible, cependant. –

+1

Vous exagérez un peu. Ce n'est pas * complètement * rétrocompatible. Par exemple. [utilisations inhabituelles de l'auto] (http://stackoverflow.com/questions/2847734/is-auto-int-i-valid-c0x) va casser. De plus, si les langues deviennent trop grandes, elles peuvent devenir ingérables et donc «pires». Je ne pense pas que C++ ait atteint ce point, mais c'est certainement une possibilité générale. –

+1

J'ai juste _love_ personnes qui utilisent le mot "impossible". Les gens qui pensent que les versions ultérieures ne peuvent pas être pire n'ont pas rencontré mon ami, Guido, troisième femme :-) – paxdiablo

1

Dépend de ce que vous entendez par "mieux". Si vous voulez dire "plus susceptible de travailler avec n'importe quel compilateur que j'utilise en ce moment", alors l'ancien standard sera certainement mieux, avec un peu boost.

Questions connexes