Veo un uso mixto de estos dos términos aquí en SO.
C++11, también conocido anteriormente como C++0x…
pero no estoy seguro de por qué.
- ¿Por qué primero se llamó C++0x y luego C++11?
- Además, ¿qué significa la x? Mi conjetura – como una variable?
Matthieu M.
Los estándares de C++ y C suelen llevar 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, entonces hablamos de C++98, y cuando nos referimos a su primera corrección, publicada en 2003, hablamos de C++03.
Se suponía que el siguiente estándar se realizaría en 2008, pero como no estaba claro, se denominó C++0x, donde el x
representaba 8 o 9. Sin embargo, en la práctica, como todos sabemos, la planificación cambió y 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 (alrededor de 2016). Por ahora, se prevén cambios 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 pronto, ¡quién sabe!
-
Hubo una serie de cosas que pasaron 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 todavía necesitan un trabajo considerable).
– James Kanze
02/03/2012 a las 19:30
-
@JamesKanze: No había oído hablar de Garbage Collection y había olvidado los módulos (gracias). Los módulos son en realidad bastante fáciles por sí mismos (muchos lenguajes ya los tienen), recuerdo que Doug Gregor dijo que el verdadero problema era unir los 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 para CLang 3.1.
– Matthieu M.
2 de marzo de 2012 a las 20:06
-
mensaje del futuro, tenemos C++14 y C++17
– Karolis Ryselis
24 mayo 2018 a las 16:42
C++0x era el nombre del estándar antes de su lanzamiento/finalización. Una vez que se finalizó (en el año 2011), pudimos nombrarlo correctamente. Es decir, C++11.
-
Y de acuerdo con la ocurrencia de Bjarne de que “la ‘x’ es hexadecimal”, también podría ser C++0B. :PAGS
– Jon Purdy
2 de marzo de 2012 a las 18:53
-
@JonPurdy El objetivo original era tener el estándar final antes de 2009. Bjarne hizo su comentario acerca de que x era hexadecimal y quedó claro que no lo íbamos a lograr. (Puede haberlo dicho irónicamente. No lo sé.)
– James Kanze
2 de marzo de 2012 a las 19:29
-
@JamesKanze: Bueno, sí. Es una broma. Los comités estándar tienen que hacer alguna cosa para aligerar el estado de ánimo.
– Jon Purdy
2 de marzo de 2012 a las 19:31
Debido a que el estándar estaba planeado para ser lanzado/aprobado en 200x
pero en realidad fue aprobado en 2011
.
Cuando se comenzó 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 finalizaría 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á eso, pero se espera que tome menos de una década, por lo que se conoce coloquialmente como C++1x.
Cero significa que los escritores de la especificación fueron demasiado optimistas (¿no son siempre así los programadores?)
– Serguéi Kalinichenko
2 de marzo de 2012 a las 18:47
C++0x era un nombre muy optimista. Llamarlo DukeNukem, erm, C++4ever hubiera sido más realista.
– fredo desbordamiento
17 de diciembre de 2013 a las 7:04
No entiendo cuál es la conexión entre un cero y el optimismo.
– René Nyffenegger
22 de septiembre de 2018 a las 6:05
@RenéNyffenegger el cero representa optimismo porque la gente pensó que el estándar estaría terminado en la década de los 2000 y por eso se llamaría C++08 o C++09. En realidad no se terminó hasta 2011.
– Brenan Vincent
4 de diciembre de 2018 a las 19:15
Bien, lo entiendo ahora. Siempre pensé que el
0x
estaba destinado a introducir un literal hexadecimal.– René Nyffenegger
5 de diciembre de 2018 a las 6:14