Back

ⓘ リフレクション, 計算機科学. 計算機科学における 自己反映計算 (reflection、リフレクション)とは、計算機システムにおいて対象レベルとメタレベルを分離し、データとし ..




                                     

ⓘ リフレクション (計算機科学)

計算機科学における 自己反映計算 (reflection、リフレクション)とは、計算機システムにおいて対象レベルとメタレベルを分離し、データとしてシステム自身を 因果結合 することで対象レベルの推論や計算に関するメタな情報を、メタレベルで明示的に記述して操作することをいう。因果結合を実現する方法は複数存在する。

                                     

1. 概要

計算機システムの一般論

一般に計算機システムにおいて、なにかしら意味を持つ計算はその計算の対象というべき問題領域を持つ。計算に係るデータや手続き、オブジェクトとはその問題領域における具体的・概念的実体を表現したものであり、計算機システムの本質とはそれらデータなどで表現した問題領域における実体の振る舞いをシミュレートすることにある。

                                     

2. 自己反映計算の実現方法

自己反映計算の実現方法には少なくとも直接法、間接法と呼ばれる2つの方法が知られている。

                                     

2.1. 自己反映計算の実現方法 直接法

直接法とは、言語 L のインタプリタを言語 L で記述する メタサーキュラー meta-circular と呼ばれる言語の実装方法を応用するもので、言語 L のデータオブジェクトとして言語 L 自身を構成することで実現される。

このとき、データオブジェクトとしての言語 L は対象レベル、データオブジェクトを記述している言語 L はその対象レベルに対するメタレベルと見立てられる。

このデータオブジェクトである言語 L に環境 environment と継続 continuation を渡すことで因果結合が成され、メタレベルの情報を反映したデータオブジェクトとなる。一般的には、インタプリタの状態はその時点における環境およびその時点以降のプログラム(継続)によって決定される。自己反映計算は、この情報反映されたデータオブジェクトについての情報取得および操作を行うことで実現される。

なお、この対象とメタレベルの見立てはデータオブジェクトとしての言語 L 内部でも同様に実行することができ、この見立てを無限に繰り返した言語 L の無限の階層は リフレクティブタワー reflective tower と呼ばれる。

                                     

3. 関連項目

  • アルフレト・タルスキ 言語階層説に直接法の源流を読み取ることができる。
  • 表示的意味論
  • リフレクション 情報工学
  • インタプリタ
  • モナド プログラミング
  • 継続
                                     

4. 参考文献

  • 浅井 健一 1996, Duplication and Partial Evaluation -- For a Better Understanding of Reflective Languages,
  • Mitchell Wand, Daniel P. Friedman 1988, The Mystery of the Tower Revealed: A Nonreflective Description of the Reflective Tower,
  • Brian Cantwell Smith 1984, Reflection and semantics in LISP
  • 田中 二郎 「第9章:メタプログラミングとリフレクション」、井田 哲雄、田中 二郎編 『続 新しいプログラミング・パラダイム』、1990年。
  • 山岡悦郎『うそつきのパラドックス―論理的に考えることへの挑戦』海鳴社、2001年。ISBN 4875252056。
  • Brian Cantwell Smith 1982, Procedural Reflection in Programming Languages,
  • 菅野 博靖, 田中 二郎 1989, メタ推論とリフレクション 非標準論理とその応用,
  • John C. Reynolds 1972, Definitional Interpreters for Higher-Order Programming Languages,
  • 米澤 明憲、武市 正人 1994, 特集「自己反映計算リフレクション」の編集にあたって 自己反映計算リフレクション),
  • 中川 理恵、浅井 健一 2004, 部分評価を使った自己反映言語のコンパイル,
  • 渡部 卓雄 1994, リフレクション 自己反映計算リフレクション),
  • 佐伯 豊 2001, 再利用可能な拡張機構を備えた言語処理系,
  • Guy Lewis Steele, Jr. and Gerald Jay Sussman 1978, The Art of the Interpreter or, the Modularity Complex,
  • 栗原 正仁,佐藤 崇昭,大内 東 1993, 項書換えシステムにおける自己反映計算,