El mejor libro para aprender C++: C++ for the impatient

Autor: | Última modificación: 3 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post:
Resulta que pasados un montón de años, esta mañana me vi en la necesidad de volver a C++ en serio. La cosa pintaba lúgubre y decidí hacer unos experimentos para ver qué tal seguía manejándome con el lenguaje (a falta de mejor nombre). Pronto me di cuenta que había muchas novedades en C++ 11, y tenían buena pinta. Sin embargo, las posibilidades de encontrar un libro bueno y relativamente corto para ponerme al día no pintaban muy bien: los libros cortos en C++ suelen empezar a partir de las 1500 páginas y suelen ser bastante soporíferos.

C++ for the impatient

Por casualidad me di de narices con «C++ for the impatient» en Amazon. Parecía tener buena pinta, pero como estaba impaciente de verdad, opté por la versión kindle. Primera sorpresa, el precio: ¡USD 2.44! Llegué a pensar que era un error, pero lo compré de inmediato.
C++ for the impatient
Y tan impaciente: ¡700 páginas en 8 horas!
¡Probablemente haya sido la mejor compra que he hecho en meses! El libro es sin lugar a dudas la mejor intro a C++ que he visto en años, es corto (para un libro de C++, o sea, 700 páginas) y sin duda merece el título que le han dado. Lo compré a las 11 de la mañana y lo terminé a las 8 de la tarde. En un día de furia lectora, ¡ya estoy al día con las últimas novedades del engendro lenguaje!

C++ 11: un error camino de la perfección

Por si fuera poco, he de decir que la situación de C++ ha mejorado enormemente. No solo se han añadido cosas fantásticas (o sea, elementales en otros lenguajes), como los smart pointers (han reinventado el retain count de Cocoa), el coñazo de implementar constructores se ha reducido algo, una especie de «fast iteration», literales para los std::vector, y ¡hasta bloques (le llaman lambdas)! Otra cosa que sí es muy de agradecer es que parece ser que LVM implementa casi todo el standard 11: esto suena a ciencia ficción a quien penó con los compiladores de MS y Borland en el remoto pasado. Por supuesto, no es oro todo lo que reluce, sigue siendo un lenguaje ferozmente estricto, convencido férreamente de que soy un idiota al que hay que proteger de si mismo. La personalidad del lenguaje no ha cambiado en nada, y me pasé un buen rato riéndome con las lambdas (los bloques de C++): es increíble hasta que extremo están dispuestos a llegar los cpluspluseros  con tal de complicarse y amargarse la vida. ;-D

El pecado original de C++

Hace años, intenté descubrir por qué detestaba C++, un lenguaje derivado de uno que sí me gusta y admiro: C. Para ello, emprendí la colosal tarea de leerme el mastuerzo soporífero «The Design and evolution of C++«, de Don Bjarne. Todas las decisiones de diseño que tomó me parecían sensatas y hasta acertadas. No obstante, el resultado seguía siendo un lenguaje detestable. ¿Donde podía entonces estar el fallo?
The-design-and-evoltion-of-C++
¿Problemas de insomnio? El doctor Stroustrup se lo cura.
Tras devanarme los sesos, di con la clave: su pecado era el original. El gran fallo, evitado por Tom Love y Brad Cox con Objective C, fue poner una cataplasma estricta sobre un lenguaje dinámico y flexible como C. A partir de ahí, todo fue (inevitablemente) cuesta abajo. Es decir, C++ sigue siendo un error, pero poco a poco lo están llevando a la perfección: otros 20 años así y lograrán alcanzarla. Es decir, habrán reimplementado Objective C. ¡Animo! 😉

C++ for the impatient

Volviendo al libro, si quieres ponerte las pilas con C++, no se me ocurre mejor opción que ¡C++ for the Impatient! Si tienes algo que deseas compartir o quieres formar parte de KeepCoding, escríbenos a [email protected].