Was ist der Unterschied zwischen C ++ 0x und C ++ 11?

82

Ich sehe eine gemischte Verwendung dieser beiden Begriffe hier auf SO.

Wikipedia sagt

C ++ 11, früher auch als C ++ 0x bekannt ...

aber ich bin mir nicht sicher warum.

  • Warum hieß es zuerst C ++ 0x und dann C ++ 11?
  • Wofür steht das x? Meine Vermutung - wie eine Variable?
Laser
quelle
2
Null bedeutet, dass die Autoren der Spezifikation zu optimistisch waren (sind Programmierer nicht immer so?)
Sergey Kalinichenko
2
C ++ 0x war ein sehr optimistischer Name. Nennen wir es DukeNukem, ähm, C ++ 4ever wäre realistischer gewesen.
Fredoverflow
6
Ich verstehe nicht, was der Zusammenhang zwischen einer Null und Optimismus ist.
René Nyffenegger
5
@ RenéNyffenegger die Null steht für Optimismus, weil die Leute dachten, der Standard würde im Jahrzehnt der 2000er Jahre fertig sein und so C ++ 08 oder C ++ 09 heißen. In Wirklichkeit wurde es erst 2011 fertiggestellt.
Brennan Vincent
2
Ok, ich verstehe es jetzt. Ich dachte immer, das 0xsollte ein hexadezimales Literal einführen.
René Nyffenegger

Antworten:

96

C ++ - und C-Standards werden normalerweise nach dem Jahr benannt, in dem sie veröffentlicht wurden, was das Erinnern erleichtert.

In C ++ wurde beispielsweise der ursprüngliche Standard 1998 veröffentlicht, sodass wir über C ++ 98 sprechen. Wenn wir uns auf die erste Korrektur beziehen, die 2003 veröffentlicht wurde, sprechen wir über C ++ 03.

Es wurde behauptet, dass der nächste Standard für 2008 fertig sein würde, aber da es ungewiss war, wurde es C ++ 0x genannt, wobei das xentweder für 8 oder 9 stand. In der Praxis verschob sich jedoch, wie wir alle wissen, die Planung und so landen wir bei C ++ 11.

Für die nächste Version (C ++ 1x) erklärte Bjarne Stroustrup jedoch seine Absicht, dies in 5 Jahren (also ungefähr 2016) zu tun. Derzeit sind Änderungen an der Kernsprache (Konzepte, Module und Speicherbereinigung) vorgesehen, und der Schwerpunkt scheint eher auf der Erweiterung der Bibliothek (z. B. Dateisystem) zu liegen, aber es ist noch früh, also wer weiß!

Matthieu M.
quelle
2
Es gab eine Reihe von Dingen, die auf den nächsten Standard verschoben wurden: Konzepte, Speicherbereinigung, Module ... (Die Speicherbereinigung ist wahrscheinlich der Bereitschaft am nächsten. Und Module erfordern noch erhebliche Arbeit.)
James Kanze
@ JamesKanze: Ich hatte noch nichts von Garbage Collection gehört und Module vergessen (danke). Module sind für sich genommen recht einfach (viele Sprachen haben sie bereits). Ich erinnere mich, dass Doug Gregor sagte, dass das eigentliche Problem darin bestand, Module und das eigentliche Headersystem zu einem zusammenhängenden Ganzen zu verbinden, damit Sie nicht auf Ihre Abhängigkeiten warten müssen migrieren, bevor Sie dies tun. Doug hat hart an der Integration der Module in Clang gearbeitet, sich aber ein wenig gestellt, um die Lambdas für CLang 3.1 zu verbessern.
Matthieu M.
14
Nachricht aus der Zukunft, wir haben C ++ 14 und C ++ 17
Karolis Ryselis
29

C ++ 0x war der Name für den Standard, bevor er veröffentlicht / finalisiert wurde. Nach der Fertigstellung (im Jahr 2011) konnten wir es richtig benennen. Das heißt, C ++ 11.

Bill Lynch
quelle
3
Und laut Bjarnes Witz "Das 'x' ist hexadezimal" könnte es auch C ++ 0B sein. : P
Jon Purdy
@ JonPurdy Das ursprüngliche Ziel war es, den endgültigen Standard vor 2009 herauszubringen. Bjarne machte seinen Kommentar bezüglich des hexadezimalen x. Es wurde klar, dass wir es nicht schaffen würden. (Er hat es vielleicht ironisch gemeint. Ich weiß es nicht.)
James Kanze
5
@ JamesKanze: Nun ja. Es ist ein Witz. Standardkomitees müssen etwas tun , um die Stimmung aufzuhellen.
Jon Purdy
4

Weil geplant war, dass der Standard in veröffentlicht / genehmigt wird 200x, aber tatsächlich in genehmigt wurde 2011.

Niklas B.
quelle
4

Als 1998 oder so mit der Arbeit an dem neuen Standard begonnen wurde, wusste niemand, in welchem ​​Jahr er fertiggestellt werden würde - das "x" stand also für ein unbekanntes Jahr und die Hoffnung, dass er innerhalb von etwa zehn Jahren fertiggestellt werden würde.

Am Ende wurde es 2011 fertiggestellt, und so ist der Standard jetzt umgangssprachlich als C ++ 11 und offiziell als ISO / IEC 14882: 2011 bekannt.

Jetzt, da dieser Standard offiziell ist, wird die Arbeit am nächsten fortgesetzt. Auch hier weiß niemand, wann dies geschehen wird, aber es wird gehofft, dass es weniger als ein Jahrzehnt dauern wird, und so ist es umgangssprachlich als C ++ 1x bekannt.

Mike Seymour
quelle