Jump to content

Reification (computer science): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
No edit summary
Line 4: Line 4:
For example,
For example,
* the [[C (programming language)|C programming language]] reifies the low-level detail of memory addresses, and
* the [[C (programming language)|C programming language]] reifies the low-level detail of memory addresses, and
* [[Scheme (programming language) | Scheme]] reifies continuations (the call stack).
* [[Scheme (programming language) | Scheme]] reifies [[Continuations | 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 [[Buffer_overflow#Stack-based_exploitation | smashing the 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 [[Buffer_overflow#Stack-based_exploitation | smashing the stack]]).



Revision as of 02:51, 18 January 2007

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,

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.

See also

Template:Comp-prog-stub