On page 8 of his paper The Next 700 Programming Languages, Peter Landin introduces the word "denotative" as the direct opposite of the term "imperative". To be considered denotative, Landin stipulates the following conditions for the expressions of a programming language:
A programming language is trivially denotative if it only permits programs to be defined in terms of denotative expressions.
Of the three conditions, (c) is the most interesting from the viewpoint of an implementation: the absolute requirement for an expression to depend solely on the values of its subexpressions - not its ordering relative to other expressions, or any observable use of effects (e.g outside interactions) - requires an implementation to accomodate all the imperative mechanisms needed to make the use of denotative programs commonplace, in contrast to the current trend of moving the subsequent complexity out of the implementation into the language:
It remains to be seen whether the two seemingly-opposite approaches can be reconciled.