C, C++ o C++–++
Leyendo los artículos sobre C y C++ que menciono en mi post anterior, me puse a reflexionar sobre esta vieja discusión sobre C++ y si el Standard Template Library (STL) y todo el paradigma de clases, templates, y diseño OO de C++ vale la pena o no. En realidad, luego de programar durante años una librería para desarrollo de juegos (más que un motor grafico en realidad) el mismo esfuerzo, el trabajo de 8-10 horas un domingo (es decir, en vez de jugar WOW o Bat yo estaba programando un juego), y no sé cuántos proyectos cortos en C y C++ (incluyendo el roguelike que ya tengo un año y que desarrollando en mi tiempo libre), mi propio trabajo, las exigencias de tiempo y garantizar lo más importante de un programa que es que funcione y no tenga bugs, todos estos requerimientos me han llevado a tomar una decisión inconsciente: programar en C. Claro, los archivos tienen extensión .cpp, y las rutinas están encapsuladas en C++, pero hasta ahi el uso del paradigma. Nada de namespaces, templates, encapsulación llevada al extremo. Uso STL, pero es basicamente cuando necesito una estructura asociativa (map) porque la costumbre con los arreglos asociativos de PHP es irresistible.
¿Es desechable C++ como Linus y otros dicen? No. La librería Irrlich que yo recomiendo para el desarrollo de juegos 3D está completamente programada en C++ y es muy fácil de entender, y utilizar. Claro, ignora muchos de los errores de diseño de C++. Quizás C++ requiere un programador excepcional. Si el programador es incompetente, C++ se convierte en una amenaza. Pero es que cualquier lenguaje de programación en manos de un incompetente es una amenaza. Corrijo, cualquier herramienta en en manos de un incompetente es una amenaza! Yo creo que el problema C++ es la combinación de incompetencia con un lenguaje incompetentemente diseñado. ¿Mi recomendación? Usar los features (ventajas) de C++ con cuidado, y no abusar del paradigma OO.