「メタプログラミング」の版間の差分
削除された内容 追加された内容
編集の要約なし タグ: 差し戻し済み ビジュアルエディター |
編集の要約なし タグ: 差し戻し済み ビジュアルエディター |
||
2行目:
{{プログラミング・パラダイム}}
'''メタプログラミング'''(''Metaprogramming'')とは、自己反映性のプログラムロジックを操作して、コードまたはデータ定義情報の変容による再帰的
代表的なメタプログラミングの例は[[LISP]]のマクロである。LISPではデータ、コードが全て[[S式]]で表現されるが、マクロによりS式が言語処理系に解釈される前に別なS式へと変換することができる。これにより例えば、
(defstruct point (x 0) (y 0))
25行目:
このことは、Lispのマクロが、'''上のかぎ括弧「」で括った言語仕様を変更し、独自の文法を作り上げた'''とも考えられる。しかし、この文法は、通常のLispにおいて期待されるような構成をしていない「記述どおりでない動作を行うプログラム」の一例であり、コードの可読性を損なう恐れのある不必要なメタプログラミングである。
== マクロ ==
== リフレクティブプログラミング ==
== テンプレートメタプログラミング ==
メタプログラミングの他の例としては[[C++]]における「[[テンプレートメタプログラミング]]」などが挙げられる。
== メタオブジェクト ==
== 代表的なメタプログラミング採用言語 ==
* [[クワイン (プログラミング)]]
== 脚注 ==
31 ⟶ 44行目:
== 関連項目 ==
▲* [[LISP]]
▲* [[REBOL]]
▲* [[クワイン (プログラミング)]]
* [[ドメイン固有言語]] - メタプログラミングにより構築することもできる。
* [[部分評価]]
|