Paradigm: Reflective

Reflective programming is a kind of metaprogramming which involves writing programs which can manipulate their own behavior.

The possibility of treating instructions as data is one of the key concepts of von Neumann architecture; the difference between them arises only from the way they are processed by the compiler. In most languages instructions are executed and data is processed, but reflective programming allows processing instructions before their execution. Thus, the sequence of instructions to be executed can be decided at runtime based on input data and other runtime information.

Programming languages that support this paradigm: