A feature of some programming languages that allows a running program to obtain information about its own implementation.

For example, the Lisp function, "symbol-function" takes a Lisp symbol and returns the function definition associated with that symbol. Lisp is particularly suited to introspection because its source code uses the same underlying representation as its data. Another example is Perl's "can" method which returns true if a given object's class provides a given method.