Path: utzoo!attcan!uunet!husc6!cs.utexas.edu!sm.unisys.com!aero!abbott From: abbott@aero.ARPA (Russell J. Abbott) Newsgroups: comp.lang.prolog Subject: Re: The meaning of "declarative" Keywords: Declarative, Procedural Message-ID: <39584@aero.ARPA> Date: 17 Oct 88 18:06:57 GMT Reply-To: abbott@aero.UUCP (Russell J. Abbott) Organization: The Aerospace Corporation, El Segundo, CA Lines: 20 In general, it would seem that any programming language for which there is a semantics that maps programs onto mathematical relations could be called declarative, although doing so does not seem particularly insightful. For example, it is not that unfair to say that to a great extent denotational semantics translates programs to mathematical functions by substituting functional composition for semi-colons. While that might make the resulting objects declarative rather than procedural, it is not clear that making that transformation improves one's intuition a great deal. From a prolog perspective, I would guess that most people, when programming in prolog, think relatively procedurally when writing "rules" and relatively declaratively when writing "facts." What is particularly powerful about prolog as a programming language is the ease with which one can move back and forth between the declarative and procedural domains. "Facts" can be made "smart" by embedding them within rule predicates, and one can gain declarative leverage on "rules" by storing them as facts and interpreting them. -- Russ