Reification (computer science)
From Wikipedia, the free encyclopedia
Reification is the act of making an abstract concept or low-level implementation detail of a programming language accessible to the programmer.
For example,
- the C programming language reifies the low-level detail of memory addresses, and
- the Scheme programming language reifies continuations (the call stack).
- in Java programming language there exist "reifiable types", which are "types that are completely available at run time" (i.e. their information is not erased during compilation). [1]
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.
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).
The term has also been used by some in the context of formal methods to mean program refinement.