En dos palabras: impresionante. La segunda es mamotreto de más de mil doscientas páginas, y el primer libro técnico que he leído que viene impreso a todo color.
El libro es un libro de aprendizaje para quien quiera iniciarse en el desarrollo y en C++, es decir, no presenta C++ como un lenguaje, sino que, a la vez que nos va explicando qué es y cómo se programa, lo va haciendo con C++.
Y eso significa que los punteros no se ven hasta la página seiscientos y pico, de las funciones típicas de C mejor no hablar, o más bien hablar de ellas en el último capítulo, tratadas como lo que son: obsoletas para un programador de C++, que tiene otras herramientas mucho más poderosas a su disposición.
EL libro es el mejor ejemplo que he podido ver que contrarresta la caduca y trasnochada falacia de que para aprender C++ primero hay que aprender C. Si todavía piensas así, léete el libro y verás.
Hay una cosa que siempre me ha molestado mucho. Y que conste que yo soy de los que aprendieron primero C y luego C++, no porque siguiera la regla falaz, sino porque cuando yo aprendí C, C++ era un animal mitológico casi en la cabeza del amigo Stroustrup. Recuerdo que se comentaba algo de un “C con clases”, de un metacompilador que traducía aquello a algo completamente ilegible que se suponía que era una mezcla de C y de preprocesador pero que sin embargo el compilador de C tragaba y generaba código. Hablamos de los tiempos del Turbo C 2.0. Ojo, Turbo C, no Turbo C++, ese vino luego. Y luego el Borland C++, en los tiempos mitológicos en los que Borland era alguien en el tema de los lenguajes de programación.
Vaya, me fui por los Cerros de Úbeda, debe ser cosa de la edad. Repitamos: hay una cosa que siempre me ha molestado mucho, es que es una lástima ver a chavalines con apenas conocimientos de programación pelearse con las funciones de C como printf y lo que es peor, con punteros. Así pronto se van a aburrir y van a pensar que C++ es algo enormemente difícil, y no es cierto.
Bueno, al menos no totalmente cierto. C++ es complejo. Pero no necesariamente uno tiene que ver esa complejidad el segundo día de clase. Y el libro lo demuestra plenamente. El capítulo sobre los punteros es antológico (recordemos, página seiscientos y pico, no cien), y el que explica la STL creando a mano y explicando la clase vector, también. Y el que trata sobre desarrollo de sistemas embebidos no tiene precio. Tampoco los tres o cuatro en los que explica la herencia y el polimorfismo mediante la creación de un envoltorio a parte de la biblioteca FLTK…
Vaya, realmente todos los capítulos son antológicos. Aparte de los conceptos sobre programación que no solo sirven para C++, el desarrollo de los mismos está completamente cuidado y, por primera vez en la historia de todos los libros básicos sobre programación que he leído, los ejemplos no son ejemplos chorra que luego no sirven para nada. Ya he dicho cómo envuelve la FLTK, cómo explica la STL construyendo una clase Vector que es homónima de la real y que tiene casi sus mismas características, pero no he dicho que las cadenas son, desde el primer momento, string (o más bien, basic_string<char>). Tampoco he dicho la cuidada forma en que parte de un diseño no válido y lo va mejorando paso a paso, explicándonos qué está mal y por qué (esa es otra, hacer que un aprendiz de C++ tenga que pelear con las cadenas de C (léase: de C) terminadas en nulo; es una aberración).
Por supuesto, la sempiterna calculadora que aparece en todos sus libros sigue estando, pero esta vez explica qué es una gramática y, a partir de ella, va refinando, paso a paso, el diseño original (que sólo es capaz de sumar y restar, y encima mal) hasta construir una calculadora capaz de realizar las operaciones básicas con un número indeterminado de agrupaciones con paréntesis y definición de variables y constantes. Ciertamente en algunos aspectos la construcción final no es la óptima ya que todavía no se ha visto la STL ni otros conceptos, pero el resultado es espectacular.
Quizás el arranque del mismo sea un poco fuerte para un estudiante novel, pero seguro que si lo termina y hace todos los ejercicios que vienen en él, estoy plenamente convencido de que cuando lo acabe, será un programador situado por encima de la media. Ojo, que no es un libro para aprenderlo en un mes, ni en dos, quizás en un año o incluso más, al menos si sigues y haces todos los ejercicios que vienen… Menos mal que uno ya pasó esa etapa, pero si tuviera que repetirla, indudablemente me gustaría hacerla con este libro como maestro.