Metaprogramowanie
Kod, który generuje, przekształca lub modyfikuje inny kod — w czasie kompilacji (statycznie) albo w czasie działania (dynamicznie).
Spektrum: makra C (podstawianie tekstu) → makra Rusta i Scali (transformacja AST) → makra Lispa (kod jest danymi, najpotężniejsza forma) → szablony C++ → dekoratory Pythona i __getattr__ → JS Proxy. Adnotacje Javy wraz z refleksją tworzą osobną kategorię.
Przydaje się do eliminowania boilerplate'u (Serde, Pydantic, dataclasses), w ORM-ach, mockowaniu i frameworkach. Cena: trudniejsze debugowanie, gorsze wsparcie IDE i stosy wywołań, łatwość nadużycia. Klasyczna zasada: napisz kod trzy razy, zanim napiszesz makro.