メインメニューを開く

自己反映計算 (計算機科学)

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

目次

概要編集

計算機システムの一般論編集

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

自己反映計算の実現方法編集

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

直接法編集

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

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

このデータオブジェクトである言語 L に環境(environment)と継続(continuation)を渡すことで因果結合が成されメタレベルの情報を反映したデータオブジェクトとなる[2]。自己反映計算はこの情報反映されたデータオブジェクトについての情報取得及び操作を行うことで実現される。

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

間接法編集

関連項目編集

脚注編集

参考文献編集

  1. 菅野 博靖 , 田中 二郎 (1989), メタ推論とリフレクション (<特集>非標準論理とその応用), http://ci.nii.ac.jp/naid/110002717109 
  2. 渡部 卓雄 (1994), リフレクション (<特集>自己反映計算(リフレクション)), http://ci.nii.ac.jp/naid/110003743804 
  3. 田中 二郎、「第9章:メタプログラミングとリフレクション」、井田 哲雄、田中 二郎編 『続 新しいプログラミング・パラダイム』、1990年 
  4. Brian Cantwell Smith (1982), Procedural Reflection in Programming Languages, http://repository.readscheme.org/ftp/papers/bcsmith-thesis.pdf 
  5. Brian Cantwell Smith (1984), Reflection and semantics in LISP 
  6. Mitchell Wand, Daniel P. Friedman (1988), The Mystery of the Tower Revealed: A Nonreflective Description of the Reflective Tower, http://mirrors.csl.sri.com/www.brics.dk/%257Ehosc/local/LaSC-1-1-pp11-37.pdf 
  7. Guy Lewis Steele, Jr. and Gerald Jay Sussman (1978), The Art of the Interpreter or, the Modularity Complex (Parts Zero, One, and Two), http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-453.pdf 
  8. John C. Reynolds (1972), Definitional Interpreters for Higher-Order Programming Languages, http://cs.au.dk/~hosc/local/HOSC-11-4-pp363-397.pdf 
  9. 佐伯 豊 (2001), 再利用可能な拡張機構を備えた言語処理系, https://dspace.jaist.ac.jp/dspace/bitstream/10119/908/3/1184paper.pdf 
  10. 米澤 明憲、武市 正人 (1994), 特集「自己反映計算(リフレクション)」の編集にあたって (<特集>自己反映計算(リフレクション)), http://ci.nii.ac.jp/naid/110003743803 
  11. 浅井 健一 (1996), Duplication and Partial Evaluation -- For a Better Understanding of Reflective Languages, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.372 
  12. 中川 理恵、浅井 健一 (2004), 部分評価を使った自己反映言語のコンパイル, http://pllab.is.ocha.ac.jp/~asai/jpapers/ppl/nakagawa04.pdf 
  13. 栗原 正仁,佐藤 崇昭,大内 東 (1993), 項書換えシステムにおける自己反映計算, http://eprints.lib.hokudai.ac.jp/dspace/bitstream/2115/42410/1/167_57-66.pdf 
  14. 山岡悦郎 『うそつきのパラドックス―論理的に考えることへの挑戦』 海鳴社2001年ISBN 4875252056