Hemos leído: Vandevoorde & Josuttis: C++ Templates. The complete guide

El título de guía completa hace justo honor a su nombre, ya que no creo que haya vida en relación a las plantillas más allá de este libro, y si la hay no es más que combinación de lo visto aquí (ejem, obviemos a BOOST).

Está dividido en cuatro partes bastante independientes entre sí, y casi dedicadas a diferentes públicos. La lectura resulta a veces un poco engorrosa, con expresiones como La razón de la sinrazón que a mi razón se hace, de tal manera mi razón enflaquece que con razón me quejo… Esto… digo: The name of a template parameter of a template template parameter can be used only in the declaration of other parameters of that template template parameter p.103). Ahí es nada, aunque si uno lo piensa bien, está diciendo que el nombre de los parámetros que sean a su vez parámetros de una plantilla anidada sólo se pueden usar en la declaración de la misma y no fuera de ella. No obstante eso no evita que de repente tengas que ir a cambiarte los fusibles porque se te han fundido, o notes cómo el cerebro te sale derretido por la nariz…

Ciertamente no han sido pocas las veces que puesto la guía de lectura al principio del capítulo y/o sección y me he ido a dar una vuelta o a ver la tele. De todos modos esta complejidad es inherente en un texto de este tipo, obviamente no dedicado a principiantes en el lenguaje C++.

Primera parte. Hace un recorrido completo por las plantillas, y está dedicado al programador que las use ya construidas por terceros (como en la STL) o que vaya a hacerlas pero de forma casual. El contenido es completo, es decir, en esta primera parte ya está el libro entero, aunque con pocos aspectos prácticos y de implementación.

Segunda parte. Vuelve a recorrer la primera parte pero desde el punto de vista de un implementador de bibliotecas, asumiendo el contenido básico y profundizando en los detalles más técnicos y en los tiquismiquis de las plantillas, que al parecer no son pocos. Personalmente considero que esta parte es demasiado técnica y demasiado enfocada al mínimo detalle y de poca utilidad para alguien que simplemente quiera saber más. Esta parte termina con un capítulo dedicado a la futura dirección que podrían tomar las plantillas, aunque parece ser que, más de siete años después de escribir el libro, todavía no hay nada concreto.

Tercera parte. De nuevo esta parte es para el usuario accidental (es un decir), por lo menos la primera mitad de ella, ya que tiene un enfoque eminentemente práctico, mostrándonos para qué pueden servirnos las plantillas mejorando la calidad y eficiencia de nuestro código. A destacar cómo sustituir el polimorfismo dinámico por estático con plantillas así como nuevas versiones del patrón Bridge con un enlace más estático. También clases Trait y Policies (que no sé cómo traducir al castellano, pero que básicamente son clases intermedias que hacen de adaptadores genéricos para evitar la proliferación de código), y en general todo lo relacionado con programación genérica.

Luego se centra en la herencia con plantillas y pasa a temas más esotéricos, como la metaprogramación y el uso de las plantillas para realizar cálculos y optimizaciones en tiempo de compilación, técnica que usan algunas bibliotecas matemáticas para mejorar el rendimiento. Como guinda final, explica un código fuente que genera números primos en base a los errores creados por el compilador al parsear dicho fuente, amén de otros ejemplos como el cálculo de potencias o raíces.

Cuarta parte. Aquí volvemos al rol de creador de bibliotecas, de hecho explica y fundamenta clases plantilla para disponer de una especie de reflexión, punteros automáticos o inteligentes, n-tuplas y finalmente functors (que básicamente son clases que representan punteros a función -algo así a los delegados de C#, aunque más bien sería la base en la que bebieron los citados delegados).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *