Nuevo estándar de C++ para este año
Este año se espera un nuevo estándar del lenguaje de programación C++, que intentará ser compatible con el estándar actual y posiblemente también con C. El nuevo estándar traerá nueva funcionalidad al lenguaje, sobre todo a través de la librería estándar de C++. Antes de comentar las novedades que incluirá demos un repaso a la historia de este lenguaje.
Un poco de Historia
C++ es un lenguaje de programación orientado a objetos inspirado en C. Al igual que este último, es considerado un lenguaje de nivel medio pues permite tanto programar a bajo nivel, más cercano al hardware, como a alto nivel, abstrayéndose del mismo.
Su autor, Bjarne Stroustrup, desarrolló C++ en 1979 para mejorar, o mejor dicho ampliar, el lenguaje C (sin llegar a sustituirlo). Esta primera versión recibió el nombre de “C con clases” y en 1983 fue mejorado y renombrado a C++.
Este lenguaje ha evolucionado mucho desde 1983. Fue ratificado como estándar en 1998 como ISO/IEC-14882:1998 y posteriomente, en 2003, fue mejorado y actualizado como ISO/IEC-14882:2003. Este proceso de estandarización fue esencial para el crecimiento de la comunidad de C++, y hoy en día, ambos son conocidos como C++98 y C++03.
Actualmente, y según el rankin de lenguajes de programación más usados [inglés] (que no mejores), C++ ocupa el 3er puesto por detrás de Java y C, pero permaneciendo igual en cuanto a la anterior publicación.
El nuevo estándar
C++0x es el nombre que recibe el estándar actualmente en fase de desarrollo. Este nuevo estándar ampliará el lenguaje y extenderá la librería estándar. Para ver el estado actual de C++0x hay que acudir a los informes que se publican sobre su desarrallo, uno de los más recientes es éste, N2597 [inglés], publicado en mayo del 2008. Muchas son las propuestas recibidas por el comité encargado de C++, pero puesto que sería imposible evaluar e introducir todas ellas, este comité decidió centrar sus esfuerzos en las propuestas introducidas hasta 2006 para terminar a tiempo el desarrollo. Cuando C++0x se publique este año, recibirá el nombre de C++09.
Características
Entre las muchísimas características que se espera incluya C++0x comentaré las que, en mi opinión, son más interesantes.
- Soporte de programación concurrente (modelo de memoria para programacion concurrente)
- Almacenamiento local de hilos de ejecución
- Tipos seguros de datos
- Especificación de como integrar un recolector de basura en el lenguaje (puesto que no hubo tiempo para hacerlo xD)
- Gran cantidad de aportaciones del proyecto boost
- Compatibilidad con C++98 casi al 100% y también con C
- Lista de inicializadores
- Soporte de bucles con tipos de rango
- Mejora de los constructores
- Puntero nulo
- Soporte de strings unicode
- Tipo long long int
- Asserts estáticos
- Permitir a sizeof funcionar con miembros de clases sin objeto
- Expresiones regulares
- Punteros inteligentes
- Facilidades para extender números aleatorios
- etc, etc, etc…
Para tener en detalle las características al completo de este nuevo estándar, hecharle un vistazo al informe que se menciona arriba, N2597 [inglés].
Fuentes:
C++0x [en.wikipedia.org]
Interview to Bjarne Stroustrup [www.computerworld.com]