A pair of *(term)s characterizing two useful ways of looking at a _(computing system):

<dl>
<dt>Referential Transparency</dt>
<dd>The view that all elements of a program are describable at some level of timelessness, or without reference to implicit context. Even more importantly, that the elements of a program can be exchanged and substituted reliably like terms in a set of mathematically-consistent equations. Such is the impetus behind _(functional) programming: _(lazy evaluation) and _(concurrency) are possible because of referentially-transparent semantics offered. Without time-invariant substitutability, evaluation order cannot be freely adjusted separately from the programmer's specification.</dd>
<dt>State</dt>
<dd>The view that all programs move through time, and have meaning (as _(information) content) that depends on actions which occur, altering the set of meaningful relationships between _(object)s within some outer domain of all possible values.</dd>
</dl>

There are many ways in which the adherents of each camp attempt to embrace the other: within _(functional) programming, there are _(monad)s used and _(linear| linear logic) types. Stateful languages, while mostly categorized as _(imperative), can also be _(logic)al or equational in nature, where state is equivalent to the idea of reduction or evaluation. There is also the use of single static assignment forms of imperative languages, used in _(Sisal) and many intermediate languages of compilers for the purpose of providing a portable yet provable encoding of programs.

This dichotomy of viewpoints is also expressed in the distinction between _(pure) and impure, or _(side effect)ing, _(object)s. In a properly _(unified) system, the distinction is purely a matter of linguistic perspective: determining what effects an object has vs. what side-effects it has depends on the notion of _(context) in general. Most languages avoid this issue by not providing rich-enough contexts or ways to modify them.

<ul class="links">
<li>_("Comparing Proofs about I/O in Three Paradigms"| http://www.cs.tcd.ie/publications/tech-reports/reports.01/TCD-CS-2001-31.pdf).
<li>_(Alan Bawden)'s thesis paper also provides an interesting way to view this, using his linear naming concept.
</ul>