Self-modifying Code
In computer science, self-modifying code is code that alters its own instructions, intentionally or otherwise, while it is executing.
In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. The programming paradigm driven by reflection is called reflective programming. It is a particular kind of metaprogramming.
Reflection is most commonly used in high-level virtual machine programming languages like smalltalk and scripting languages, and less commonly used in manifestly type and/or statically typed programming languages such as Java and C.