コンテンツへスキップ
uencoder

Metaprogramming

メタプログラミングは、プログラム自身の構造を操作するコードを書く手法である。コンパイル時や実行時にコードを生成・変形・分析する。

目的

コードを生成するコードにより、抽象度を上げて定型コードを減らす。

メカニズム

コンパイル時はマクロ(Rust/C)、テンプレート(C++)、アノテーション処理(Java)がある。実行時はリフレクション(Java/Python)、eval、Proxy(JS)がある。Ruby はメタプログラミングで多くの DSL を実現している。

ユースケース

  • コードの生成
  • リフレクションの活用
  • DSLの構築

関連用語

References