「メタプログラミング」の版間の差分
削除された内容 追加された内容
編集の要約なし |
編集の要約なし タグ: 差し戻し済み ビジュアルエディター |
||
1行目:
[[ファイル:Atom classes.svg|代替文=|境界|右|フレームなし|215x215ピクセル]]
{{プログラミング・パラダイム}}
'''メタプログラミング'''(''Metaprogramming'')とは、自己反映性のプログラムロジックを操作して、コードまたはデータ定義情報の変容による再帰的かつ帰納的なプログラムの自己修正を表現するためのプログラミング技法である。そのプログラムロジックは[[形而上学|形而上的]]要素になぞらえられて実装面では[[メタデータ]]と呼ばれる。プログラムの自己修正はランタイム時とコンパイル時に大別される。ランタイム時の方はプログラム開始時の動作制約を越えた実行プロセスの最適化を目的にしており[[機械学習]]にも似た性質を持つ。コンパイル時の方は[[ソースコード]]の記述量削減と[[オブジェクトコード]]の最適化を目的にしている。ランタイム時メタの実装方式には[[動的型付け]]向けのメタオブジェクトと[[静的型付け]]向けの[[リフレクション (情報工学)|リフレクション]]がある。コンパイル時メタの実装方式には[[マクロ (コンピュータ用語)|マクロ]]と[[テンプレートメタプログラミング]]がある。[[自動プログラミング]]、{{仮リンク|属性指向プログラミング|en|Attribute-oriented programming|label=}}{{仮リンク|多段階プログラミング|en|Multi-stage programming|label=}}といったスタイルも存在する。メタプログラミングの原点は「[[LISP]]」であり[[人工知能]]研究とも関係性がある。
== 概要 ==
23 ⟶ 26行目:
メタプログラミングの他の例としては[[C++]]における「[[テンプレートメタプログラミング]]」などが挙げられる。
== 脚注 ==
<references/>
== 関連項目 ==
* [[LISP]]
* [[REBOL]]
* [[クワイン (プログラミング)]]
* [[部分評価]]▼
* [[ドメイン固有言語]] - メタプログラミングにより構築することもできる。
▲* [[部分評価]]
{{プログラミング言語の関連項目}}
[[Category:プログラミング|めたふろくらみんく]]
|