El polimorfismo se suele considerar en muchos equipos como sinónimo de polimorfismo en tiempo de ejecución. Sin embargo, el polimorfísmo dinámico (con sus funciones virtuales y su uso extensivo de memoria dinámica) es solamente una de las posibilidades. La programación genérica (los templates) permiten también hacer uso del polimorfismo en tiempo de ejecución que en muchos casos puede ser suficiente, aportando ventajas en rendimiento.
En esta charla mostraré como se pueden combinar ambas aproximaciones y presentaré como se pueden simplificar los diseños mediante el borrado de tipos (type erasure), permitiendo que se transfiera la complejidad del código de usuario al código de biblioteca. Además, mostraré los beneficios de esta técnica cuando se combina con la “optimización del objeto pequeño”, mejorando el rendimiento de las aplicaciones.
Material
- Transparencias.
- Ejemplos en Github: https://github.com/jdgarciauc3m/polyexamples
J. Daniel García
J. Daniel García es un programador de C++ con 25 años de experiencia. Ha usado el lenguaje en diversos sectores industriales, que van desde la ingeniería civil hasta la medicina. Es miembro del comité ISO de normalización de C++ donde ha realizado contribuciones a C++11 y C++14. También preside el comité español de normalización en Lenguajes de Programación, sus entornos e interfaces de sistema.
Su principal interés es simplificar la vida de los desarrolladores buscando equilibrio entre el rendimiento de las aplicaciones y la facilidad de mantenimiento.
Es profesor titular de Arquitectura de Computadores de la Universidad Carlos III de Madrid. Ha sido coordinador del proyecto europeo REPARA y también lidera la participación de la Universidad Carlos III de Madrid en el proyecto europeo RePhrase, ambos muy relacionados con el lenguaje de programación C++.