jueves, 8 de octubre de 2009

C++0x ¿Revolución o Evolución?

Ayer por la tarde, José Daniel García Sánchez impartió en la EUITIO una conferencia sobre C++0x, la previsible futura versión del lenguaje C++.

La verdad que hace mucho tiempo que no escribo programas en C++ y reconozco que dejé de seguir la evolución del lenguaje. De hecho, cuando lo presenté, me equivoqué con el nombre y pensaba que era una O en lugar de un cero. Luego José Daniel explicó que el nombre "0x" es por la versión del lenguaje que se espera que esté asociada al año (así, tienen C++98, del año 1998, y esperaban tener C++09, por ejemplo en el año 2009. Lástima que, según él, no creen que vaya a salir en este año, y entonces la X podría representar un valor hexadecimal.

El caso es que la conferencia me gustó porque recordé los años en los que mi pasión era la evolución de los lenguajes de programación y porque el turno de preguntas fue también divertido.

Además, parece que en el nuevo lenguaje están incorporando muchas innovaciones que vienen de los lenguajes funcionales, especialmente de ML, como son las expresiones lambda y la inferencia de tipos (mediante la palabra clave "auto", el autor le deja al compilador que infiera el tipo).

Claro que como suele ocurrir en los lenguajes populares que se estandarizan, los comités tienen que buscar soluciones de compromiso entre la compatibilidad hacia atrás, las innovaciones demasiado rompedoras y las restricciones de los fabricantes de compiladores.

Y esas soluciones de compromiso deben ser muy difíciles de tomar, y sobre todo, debe ser muy difícil tener a todo el mundo contento, por lo que este tipo de procesos acaban produciendo pequeños monstruos, que es la pinta que tiene el lenguaje.

En cualquier caso, creo que C++ seguirá teniendo un importante nicho de mercado en los sistemas en tiempo real y me parece genial que vaya introduciendo características funcionales.

Lo que no tengo tan claro es qué va a pasar con la enseñanza del lenguaje porque desde el punto de vista de diseño del lenguaje, creo que se han pasado la ortogonalidad por el forro y tiene un montón de casos "especiales" que harán muy difícil conseguir expertos en ese lenguaje.