In [[computer science]], '''reflection''' is the ability of a [[Process (computing)|process]] to examine, [[Introspection (computer science)|introspect]], and modify its own structure and behavior.<ref>{{Citation | title = A Tutorial on Behavioral Reflection and its Implementation by Jacques Malenfant et al. | publisher = unknown | url = http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf | accessdate = 23 June 2019 | url-status = dead | archiveurl = https://web.archive.org/web/20170821214626/http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf | archivedate = 21 August 2017 }}</ref>
The earliest computers were programmed in their native [[assembly language]], which were inherently reflective, as these original architectures could be programmed by defining instructions as data and using [[self-modifying code]]. As programming moved to compiled higher-level languages such as [[ALGOL|Algol]], [[Cobol]], and [[Fortran]] (but also [[Pascal (programming language)|Pascal]] and [[C (programming language)|C]] and many other languages), this reflective ability largely disappeared until programming languages with reflection built into their type systems appeared.{{Citation needed|date=July 2015}}
[[Brian Cantwell Smith]]'s 1982 doctoral dissertation<ref>Brian Cantwell Smith, [http://hdl.handle.net/1721.1/15961 Procedural Reflection in Programming Languages], Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, PhD dissertation, 1982.</ref><ref>Brian C. Smith. [http://publications.csail.mit.edu/lcs/specpub.php?id=840 Reflection and semantics in a procedural language] {{Webarchive|url=https://web.archive.org/web/20151213034343/http://publications.csail.mit.edu/lcs/specpub.php?id=840 |date=2015-12-13 }}. Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Massachusetts, January 1982.</ref> introduced the notion of computational reflection in procedural [[programming languages]] and the notion of the [[meta-circular interpreter]] as a component of [[3-Lisp]].