¿Cuál es la diferencia entre C ++ 0x y C ++ 11?

82

Veo un uso mixto de estos dos términos aquí en SO.

Wikipedia dice

C ++ 11, también conocido anteriormente como C ++ 0x ...

pero no estoy seguro de por qué.

  • ¿Por qué se llamó primero C ++ 0x y luego C ++ 11?
  • Además, ¿qué significa la x? Mi conjetura, ¿como una variable?
Lazer
fuente
2
Cero significa que los escritores de la especificación eran demasiado optimistas (¿no son los programadores siempre así?)
Sergey Kalinichenko
2
C ++ 0x era un nombre muy optimista. Llamarlo DukeNukem, erm, C ++ 4 alguna vez hubiera sido más realista.
fredoverflow
6
No entiendo cuál es la conexión entre cero y optimismo.
René Nyffenegger
5
@ RenéNyffenegger el cero representa optimismo porque la gente pensó que el estándar estaría terminado en la década de 2000 y por eso se llamaría C ++ 08 o C ++ 09. En realidad, no se terminó hasta 2011.
Brennan Vincent
2
Ok, lo entiendo ahora. Siempre pensé que 0xestaba destinado a introducir un literal hexadecimal.
René Nyffenegger

Respuestas:

96

Los estándares C ++ y C generalmente reciben el nombre del año en que se publicaron, lo que hace que sea más fácil de recordar.

Por ejemplo, en C ++, el Estándar original se publicó en 1998, por lo que hablamos de C ++ 98, y cuando nos referimos a su primera corrección, publicada en 2003, hablamos de C ++ 03.

Se había pretendido que el siguiente estándar se haría para 2008, pero como era incierto, se denominó C ++ 0x, donde xrepresentaba 8 o 9. En la práctica, aunque, como todos sabemos, la planificación cambió y así terminamos con C ++ 11.

Aún así, para la próxima versión (C ++ 1x), Bjarne Stroustrup declaró su intención de hacerlo en 5 años (aproximadamente 2016). Por ahora, hay cambios previstos en el lenguaje central (conceptos, módulos y recolección de basura), y el enfoque parece estar más en extender la biblioteca (sistema de archivos, por ejemplo), pero aún es temprano, ¡quién sabe!

Matthieu M.
fuente
2
Hubo una serie de cosas que se trasladaron al siguiente estándar: conceptos, recolección de basura, módulos ... (La recolección de basura es probablemente lo más cercano a estar listo. Y los módulos aún necesitan un trabajo considerable).
James Kanze
@JamesKanze: No había oído hablar de Garbage Collection y había olvidado los módulos (gracias). Los módulos son bastante fáciles por sí mismos (muchos lenguajes ya los tienen), recuerdo que Doug Gregor dijo que el problema real era en realidad unir módulos y el sistema de encabezado real en un todo coherente para que no tenga que esperar a que sus dependencias migre antes que usted. Doug ha estado trabajando duro para integrar los módulos en Clang, pero parece que posó un poco para pulir las lambdas de CLang 3.1.
Matthieu M.
14
mensaje del futuro, tenemos C ++ 14 y C ++ 17
Karolis Ryselis
29

C ++ 0x era el nombre del estándar antes de que fuera lanzado / finalizado. Una vez finalizado (en el año 2011), pudimos nombrarlo correctamente. Es decir, C ++ 11.

Bill Lynch
fuente
3
Y de acuerdo con la broma de Bjarne "la 'x' es hexadecimal", también podría ser C ++ 0B. : P
Jon Purdy
@JonPurdy El objetivo original era tener el estándar final antes de 2009. Bjarne hizo su comentario sobre que la x era hexadecimal y quedó claro que no íbamos a lograrlo. (Puede que lo haya dicho irónicamente. No lo sé.)
James Kanze
5
@JamesKanze: Bueno, sí. Es una broma. Los comités estándar tienen que hacer algo para aligerar el ánimo.
Jon Purdy
4

Debido a que se planeó publicar / aprobar la norma en 200x, pero en realidad se aprobó en 2011.

Niklas B.
fuente
4

Cuando se empezó a trabajar en el nuevo estándar, en 1998 más o menos, nadie sabía en qué año se finalizaría, por lo que la "x" representaba un año desconocido y la esperanza de que se finalizara en unos diez años.

Al final, se finalizó en 2011, por lo que el estándar ahora se conoce coloquialmente como C ++ 11, y oficialmente como ISO / IEC 14882: 2011.

Ahora que ese estándar es oficial, se continúa trabajando en el siguiente; de nuevo, nadie sabe cuándo se hará, pero se espera que lleve menos de una década, por lo que se conoce coloquialmente como C ++ 1x.

Mike Seymour
fuente