「メタプログラミング」の版間の差分
削除された内容 追加された内容
編集の要約なし タグ: 差し戻し済み ビジュアルエディター |
rvv タグ: 手動差し戻し |
||
1行目:
'''メタプログラミング''' (metaprogramming) とは[[プログラミング (コンピュータ)|プログラミング]]技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。主に対象言語に埋め込まれた[[マクロ言語]]によって行われる。
== 概要 ==
== LISPのメタプログラミング ==▼
代表的なメタプログラミングの例は[[LISP]]のマクロである。LISPではデータ、コードが全て[[S式]]で表現されるが、マクロによりS式が言語処理系に解釈される前に別なS式へと変換することができる。これにより例えば、
(defstruct point (x 0) (y 0))
25 ⟶ 22行目:
このことは、Lispのマクロが、'''上のかぎ括弧「」で括った言語仕様を変更し、独自の文法を作り上げた'''とも考えられる。しかし、この文法は、通常のLispにおいて期待されるような構成をしていない「記述どおりでない動作を行うプログラム」の一例であり、コードの可読性を損なう恐れのある不必要なメタプログラミングである。
メタプログラミングの他の例としては[[C++]]における「[[テンプレートメタプログラミング]]」などが挙げられる。
*[[LISP]]▼
*[[REBOL]]▼
== 脚注 ==
<references/>
== 関連項目 ==
* [[Common Lisp]]
* [[Scheme]]
▲* [[LISP]]
▲* [[REBOL]]
* [[部分評価]]
[[Category:プログラミング|めたふろくらみんく]]
|