ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ken Wood <>
Subject Re: What is a 'declarative' language [ was Re: [VOTE] vote on general direction ...]
Date Tue, 27 Mar 2001 02:57:55 GMT
I agree this should not become a battle, and I
know other readers will wonder why I'm about
to fire another round if I'm against the war :^).

But, if we can't even agree on basic definitions of
fundametal terminology, how can we define the
requirements for Ant, and from there, the design?
I think we need some shared level of understanding of
what all these words mean, or we could be bogged
down in a quagmire of discussion for weeks because
we aren't communicating on the same terms. If we
use "declarative language' differently, and 'module'
differently, and .... etc, etc, etc...

So, with that caveat in mind ...

>From "The Free Online Dictionary of Computing (
edited by Denis Howe <>."

declarative language

A general term for a relational language or a functional language, as opposed to
an imperative language.
Imperative (or procedural) languages specify explicit sequences of steps to
follow to produce a result,
while declarative languages describe relationships between variables in terms of
functions or inference rules and
the language executor (interpreter or compiler) applies some fixed algorithm to
these relations to produce a result.
The most common examples of declarative languages are logic programming
languages such as
Prolog and functional languages like Haskell. "

In fact, it's hard to do a web search on "declarative language" and not
find 'prolog' part of the same hit.

Jose Alberto Fernandez wrote:

> Well, I did not want to start the battle of the technicalities but I think
> we need to make some things clear.
> Prolog is NOT a declarative programming language.

< SNIP >

> That is what declarative boils down to, freedom for the execution engine to
> be implemented in whatever way it wants.

And conversely, the input text, i.e. the language, that the engine executes
does not have any EXPLICT sequencing of steps or branching. All
of which is what declarative languages are about - an input text that
declares the desired outcome, and an execution engine that makes it

View raw message