Escribir plantillas de función y de clase con parámetros variádicos y deducción de tipos.
Restringir plantillas con conceptos de C++20 y obtener mensajes de error legibles.
Componer algoritmos de la STL y rangos en lugar de escribir bucles a mano.
Diseñar tipos que gestionan recursos con semántica de movimiento y garantías de excepción.
Analizar el efecto de la disposición de datos en caché y reorganizar estructuras para mejorarlo.
Medir alternativas con Google Benchmark y comprobar el código máquina generado por el compilador.
Contenido del curso
8 módulos · 39 clases en vídeo · práctica guiada en cada módulo
Módulo 1 · Presentación y método4 clases
Qué se da por sabido en este curso
Preparar el proyecto: CMake, sanitizers y Google Benchmark
Cómo medir sin engañarse
Leer el ensamblador generado con explorador de compiladores
Módulo 2 · Plantillas de función y de clase5 clases
Deducción de argumentos y parámetros por defecto
Plantillas variádicas y expansión de paquetes
Especialización total y parcial
SFINAE y su sustitución por conceptos
Plantillas de alias
Módulo 3 · Conceptos y programación genérica5 clases
Definir un concepto propio
requires y restricciones compuestas
Mensajes de error antes y después
Rasgos de tipo de la biblioteca
if constexpr para ramas en tiempo de compilación
Módulo 4 · Tiempo de compilación5 clases
constexpr y consteval
Cálculo en compilación con ejemplos útiles
Tablas generadas por el compilador
Coste de compilación: qué lo dispara
Unidades de traducción y compilación incremental
Módulo 5 · Gestión de recursos y excepciones5 clases
Punteros inteligentes con borradores personalizados
Asignadores propios y polimórficos
Garantías básica, fuerte y sin excepciones
Semántica de movimiento en tipos propios
Copy elision y valores de retorno
Módulo 6 · STL y algoritmos5 clases
Categorías de iterador y su efecto
Algoritmos de la biblioteca frente a bucles a mano
Rangos, vistas y evaluación perezosa
Algoritmos paralelos y políticas de ejecución
Contenedores asociativos y sus costes
Módulo 7 · Rendimiento y memoria5 clases
Jerarquía de caché y localidad de datos
Estructura de arrays frente a array de estructuras
Evitar asignaciones en el camino caliente
Perfilado con perf y análisis de puntos calientes
Optimizaciones que el compilador ya hace
Módulo 8 · Caso práctico: biblioteca genérica de series temporales5 clases
Interfaz pública y conceptos que la restringen
Implementación con contenedor contiguo
Batería de pruebas y comprobaciones en compilación
Mediciones antes y después de cada cambio
Entrega: biblioteca de cabecera documentada
Requisitos
C++ moderno a nivel intermedio: clases, RAII, referencias rvalue y contenedores estándar.
Compilador con soporte de C++20 (g++ 12 o clang 15 en adelante) y CMake instalados.
Soltura con la línea de comandos y con un depurador.
Descripción
En un proyecto C++ grande, el coste no está en escribir clases sino en las decisiones que se repiten un millón de veces por segundo: una copia de más, una indirección innecesaria, un contenedor que provoca fallos de caché. A la vez, la parte genérica del código se llena de plantillas que compilan mal y producen errores de varias pantallas que nadie sabe leer.
Este curso entra en esas dos zonas. Por un lado, metaprogramación con plantillas hasta conceptos y restricciones, con ejemplos de bibliotecas reales. Por otro, rendimiento medido: perfilado, disposición de datos en memoria, evitación de asignaciones y comprobación del ensamblador generado. Cada afirmación sobre velocidad se acompaña de una medición reproducible con Google Benchmark.
Al terminar se puede diseñar una biblioteca genérica que otros usen sin sufrir, y defender con números una decisión de rendimiento ante el equipo. Es el nivel que se espera en desarrollo de motores, procesamiento de señal, simulación numérica y sistemas de baja latencia, donde C++ se elige precisamente por el control que ofrece.
¿Para quién es este curso?
Desarrolladores C++ con experiencia que mantienen bibliotecas usadas por otros equipos.
Ingeniería de simulación o de procesado de señal con requisitos estrictos de latencia.
Programadores de sistemas que necesitan justificar con mediciones cada decisión de diseño.
Bajo demanda
Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.
Este sitio web utiliza cookies propias y de terceros para recopilar información con finalidad técnica. No se recaban ni ceden datos de carácter personal sin tu consentimiento. Más información en la política de cookies.