Metaprogramming
Metaprogrammierung bedeutet, Code zu schreiben, der die Struktur des Programms selbst manipuliert — Code wird zur Kompilier- oder Laufzeit erzeugt, verändert oder analysiert.
Zweck
Code, der Code erzeugt, hebt das Abstraktionsniveau und reduziert Boilerplate.
Mechanismus
Zur Kompilierzeit: Makros (Rust/C), Templates (C++), Annotationsverarbeitung (Java). Zur Laufzeit: Reflexion (Java/Python), eval, Proxy (JS). Ruby realisiert viele DSLs per Metaprogrammierung.
Anwendungsfälle
- Codegenerierung
- Reflexion
- DSL-Bau