反射 (计算机科学)

计算机科学中,反射是指 计算机程序运行时Run time)可以访问、检测和修改它本身状态或行为的一种能力。 [1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。

要注意术语“反射”和“ 内省”(type introspection)的关系。内省(或称“自省”)机制仅指程序在运行时对自身信息(称为 元数据)的检测;反射机制不仅包括要能在运行时对程序自身信息进行检测,还要求程序能进一步根据这些信息改变程序状态或结构。 [1]

历史背景

最早的计算机在它们的原生汇编语言里编程,它本质上是反射,因为它是由定义编程指令作为数据。反射功能,如修改指令或分析它们是很平常的。编程迁移到更高层次的语言如C,这种实践消失了 [來源請求],直到带有反射特性的编程语言在它们的类型系统出现。

布莱恩·史密斯(Brian Cantwell Smith)在1982年的博士论文《编程语言中的步骤式反射》("Procedural Reflection in Programming Languages")中介绍了“编程语言的计算反射”概念,并且引入meta-circular解释器的概念用作3-Lisp的一个组成部分。

其他语言