⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

{{stub}}{{feature|Programming paradigm}} A [[programming language]] is said to be '''reflective''' if it has the integral ability to observe or change its own code as well as all aspects of its programming language (syntax, semantics, or implementation) at runtime. A Tutorial on Behavioral Reflection and its Implementation by Matt Hurlbutt Reflective programming languages includes features that allow it to ask about the current state of the program, e.g., by being able to inspect what classes are defined, what methods those classes define, or what instances of those classes have been created. This makes it far easier to write test harnesses and dynamic programs. However, one issue with reflective programming languages is that it is less clear when a part of the program has become actually unreachable as reflective techniques could be used to revive a reference to it.

== References ==