Metaprogramming
メタプログラミングは、プログラム自身の構造を操作するコードを書く手法である。コンパイル時や実行時にコードを生成・変形・分析する。
目的
コードを生成するコードにより、抽象度を上げて定型コードを減らす。
メカニズム
コンパイル時はマクロ(Rust/C)、テンプレート(C++)、アノテーション処理(Java)がある。実行時はリフレクション(Java/Python)、eval、Proxy(JS)がある。Ruby はメタプログラミングで多くの DSL を実現している。
ユースケース
- コードの生成
- リフレクションの活用
- DSLの構築