Metaprogramming
La metaprogramación consiste en escribir código que manipula la estructura del propio programa, generando, modificando o analizando código en tiempo de compilación o de ejecución.
Propósito
Código que genera código, elevando el nivel de abstracción y reduciendo el código repetitivo.
Mecanismo
En compilación: macros (Rust/C), plantillas (C++), procesamiento de anotaciones (Java). En ejecución: reflexión (Java/Python), eval, Proxy (JS). Ruby implementa muchos DSL mediante metaprogramación.
Casos de uso
- Generación de código
- Reflexión
- Construcción de DSL