viernes, 20 de enero de 2012

C++ sigue siendo relevante (y está de moda de nuevo)

El Mapa de C++

Mientras que el Assembler (mi primer lenguaje de programación) perdió gran parte del brillo salvo para quienes programan para una plataforma exclusiva de hardware, C y C++ siguen siendo los lenguajes preferidos para gran parte del desarrollo de aplicaciones que requieren alto desempeño y optimización de recursos.

Es cierto, son lenguajes complejos y un tanto problemáticos (un gran poder conlleva una gran responsabilidad, decía el tío de Spiderman), y en la práctica pocas aplicaciones se escriben completamente en C++ pero hoy día pocas aplicaciones se escriben en un único lenguaje, de todas maneras (entre manipulación de datos, scripting, lógica, etc, casi siempre usamos dos o tres sin darnos cuenta). En el caso clásico de los juegos, por ejemplo, los motores de animación, detección de colisiones, etc, muchas veces se escriben en C++ mientras que la lógica final suele escribirse a más alto nivel, en lenguajes como LUA o Python.

Pero C/C++ siguen manteniendo un amplio reinado (como puede verse en este mapa creado por Elena SagalaevaVladimir "Jim" Gorshunin), y su avance sigue siendo importante aun cuando usamos lenguajes dinámicos o compiladores a demanda (estilo Java/.NET), porque los motores por debajo son cada vez más eficientes gracias a los progresos en C++, en algún punto. También, el auge de los dispositivos móviles (teléfonos y tabletas), ha hecho que la economía de recursos y el tiempo de respuesta  (sobre todo en interfaces multitouch) sea nuevamente un tema crítico.

Entre otras cosas, estos lenguajes siguen siendo casi únicos en la capacidad de determinar el consumo de ciclos de procesador y memoria en forma explícita, y los agregados a C++ 11 lo han hecho un poco más flexible y -un poco- menos peligroso, al utilizar técnicas modernas como inferencia de tipos, mejoras en el soporte de genéricos, inicializadores, expresiones lambda, todo un nuevo modelo para ejecución de tareas en múltiples hilos, incluyendo variables por hilo de ejecución, soporte para recolección de memoria, y muchísimas otras características basada en la biblioteca estándar, como soporte de tuplas y tablas hash, expresiones regulares, punteros inteligentes, meta-programación a través de plantillas, y muchísimo más.

Para una lista completa de novedades sobre el estándar aprobado recientemente, incluyendo preguntas frecuentes, pueden leer este documento mantenido por el creador de C++, Bjarne Stroustrup.

Finalmente, demostrando que el interés por el código nativo y la nueva versión de C++ es generalizado entre los participantes más activos en la industria, en los primeros días de febrero se realizará en Redmond, Washington, EEUU (dentro de uno de los auditorios del Campus de Microsoft) la conferencia Going Native 2012, que cuenta con un interesantísimo grupo de expositores (vean debajo los nombres y las empresas de las que provienen). El evento podrá ser presenciado en vivo o más tarde a demanda, desde la misma página.

Día 1 (2 de febrero)

Dia 2 (3 de febrero)

Espero que los programadores nativos los disfruten.