domingo, 27 de marzo de 2011

Tenemos nuevo estándar de C++

Si os digo que esta semana se ha celebrado en Madrid la reunión del comité ISO/IEC JTC1/SC22/WG21 y que se a aprobado el FDIS de la norma ISO/IEC 14882:2011, probablemente me diréis que lo que quiero es que no entendáis nada de lo que digo. Y tendríais razón. Así que lo diremos de otra forma.

Esta semana se ha reunido en Madrid el comité internacional de normalización del lenguaje C++. Algunos sabéis que represento a España en este comité. Y bueno la gran noticia es que hemos acordado una nueva norma para el lenguaje y su biblioteca estándar. Realmente los procedimientos de ISO harán que la nueva norma no sea oficial hasta el verano (más o menos).

Estoy muy contento por varias razones.

Por una parte, el estándar se a aprobado en Madrid, así que permitidme una ligera dosis de chovinismo. Además, la norma incluyen algunas propuesta menores que yo hice, así que permitidme otra dosis de egolatría.

Siendo un poco más serios, creo que el lenguaje se va a ver sensiblemente reforzado. Ha pasado demasiado tiempo desde la anterior norma (la ISO 14882:1998) que tuvo posteriormente una revisión menor en el año 2003.

Cada vez que doy una charla o conferencia sobre esta renovación siempre que hay alguien que me pregunta sobre su aspecto más destacable. He ido dando una respuesta distinta a lo largo de los últimos años, al tiempo que las características aparecían y desaparecían del lenguaje. A día de hoy, creo que el lenguaje se ha renovado de forma sustancial y que ahora se disponer de una biblioteca mejor y más completa.

Es difícil hacer una enumeración de las distintas novedades en el lenguaje y en la biblioteca. Y además esto está bien hecho en algunas páginas Web. Por ejemplo se puede encontrar una buena explicación de la mayoría de los cambios en la página Web de Bjarne Stroustrup (http://www2.research.att.com/~bs/C++0xFAQ.html).

Desde mi punto de vista, y posiblemente esto sea una visión sesgada, una de las novedades más relevantes es la incorporación de un modelo de hilos como parte del lenguaje. Esto afecta, tanto a las reglas del lenguaje como a la biblioteca, pero permitirá que se puedan escribir aplicaciones multi-hilo de forma portable e independiente de la plataforma (hw y sistema operativo).

A partir de ahora surgirán dos retos importantes:

  • En primer lugar, va a ser necesario realizar un importante esfuerzo de diseminación de la información. Ya están varios libros en marcha. Serán necesarios nuevos materiales de formación y la adaptación de cursos.
  • Por otra parte, será necesario seguir trabajando en la siguiente renovación del lenguajes que debería concluirse con mayor celeridad que la actual. Las estrategias para esta nueva versión la discutiremos en la siguiente reunión del comité que tendrá lugar este verano en Bloomington, Indiana.
Como siempre las posiciones de España se fijarán en el comité español de C++. Este es el comité CTN71/GT21 en el que siempre estamos deseosos de incorporar a nuevas empresas y organismos.

Para más información, me podéis encontrar en josedaniel.garcia@uc3m.es.

5 comentarios:

  1. hola. saludos desde argentina. estoy leyendo tus articulos y necesito saber de donde puedo leer sobre la normalizacion del codigo en c++: como se define una variable, si son mayusculas, minusculas... es que programo en xharbour y tengo una manera de codificar pero veo que existe una normativa que hasta el dia de hoy no la he puesto en practica. soy programador pero no por titulo. gracias.

    ResponderEliminar
  2. Gustavo,

    La normalización tiene que ver con la propia definición del lenguaje. Para los temas que planteas recomiendo algún libro de texto general.

    También hay diversos estándares de codificación al respecto.

    ResponderEliminar
  3. Bueno mi pregunta como aficionado a la programación es ¿por que no se trabaja en hacer un C++ mas legible? , personalmente considero la sintaxis de C++ en muchas ocasiones es confusa,enrevesada...
    Creo que seria bueno adoptar una sintaxis mas "humana" , claro que todo esto lo digo desde el punto de vista de un aficionado que hace programillas , quizás el problema sea mio....

    Saludos y a seguir con el estándar.

    ResponderEliminar
  4. Lo de la "legibilidad" ha sido muy discutido en el pasado. Yo diría que "se hace lo que se puede", aunque esto no sea mucho.

    Por una parte, una parte relevante del éxito de C++ se debe a mantener una compatibilidad (digamos del 90%) con C. Esto impone restricciones.

    Por otra parte, cualquier cambio que se hace en C++ tiene que pensar en la compatibilidad hacia atrás.

    En cualquier caso, creo que en esta línea novedades como la declaración de variables "auto" o los nuevo bucles de rango, mejorarán la legibilidad de los programas.

    ResponderEliminar
  5. Por una parte, una parte relevante del éxito de C++ se debe a mantener una compatibilidad (digamos del 90%) con C. Esto impone restricciones.

    Por otra parte, cualquier cambio que se hace en C++ tiene que pensar en la compatibilidad hacia atrás.

    Quizás sea hora de modernizar también C o de olvidar compatibilidades hacia atrás y dar un buen empujón tanto a C como a C++.
    Creo que tanto C como C++ pierden terreno contra lenguajes como python a la hora de hacer ciertos programas.

    Saludos.

    ResponderEliminar