Reification (computer science)
Reification is the act of making an abstract concept or low-level implementation detail of a programming language acce\ ssible to the programmer.
For example,
- the language C reifies the low-level detail of memory addresses, and
- the language Scheme reifies continuations (the call stack).
Programs written in either C or Scheme make use of both memory addresses and continuations. However, Scheme does not reify memory addresses and C does not reify continuations (unless one counts accessing the stack by pointer arithmetic as is done when smashing the stack).
In the context of object-oriented programming, reification describes the act of making a data model for a previously abstract concept. Reification allows a computer to process an abstraction as if it were any other data. Reification is a useful technique in object-oriented languages, as encapsulating an abstract behaviour in an object makes it easier to isolate that behaviour to do unit tests.
The term has also been used by some in the context of formal methods to mean refinement.