DECLARATIVE PROGRAMMING

'Declarative programming' is a term with two distinct meanings, both of which are in current use.
According to one definition, a program is "declarative" if it describes ''what'' something is like, rather than ''how'' to create it. For example, HTML web pages are declarative because they describe ''what'' the page should contain — title, text, images — but not ''how'' to actually display the page on a computer screen. This is a different approach from imperative programming languages such as Fortran, C, and Java, which require the programmer to specify an algorithm to be run. In short, imperative programs explicitly specify an algorithm to achieve a goal, while declarative programs explicitly specify the goal and leave the implementation of the algorithm to the support software (for example, a SQL select statement specifies the properties of the data to be extracted from a database, not the process of extracting the data).
According to a different definition, a program is "declarative" if it is written in a purely functional programming language, logic programming language, or constraint programming language. The phrase "declarative language" is sometimes used to describe all such programming languages as a group, and to contrast them against imperative languages.
These two definitions overlap somewhat. In particular, constraint programming and, to a lesser degree, logic programming, focus on describing the properties of the desired solution (the ''what''), leaving unspecified the actual algorithm that should be used to find that solution (the ''how''). However, most logic and constraint languages are able to describe algorithms and implementation details, so they are not strictly declarative by the first definition.
Similarly, it is possible to write programs in a declarative style even in an imperative programming language. This is usually done by encapsulating non-declarative details inside a library or framework. An example of this style is the use of reflection in the JUnit unit test framework, which allows unit tests to be registered with the framework merely by being defined.
In a declarative program you write (declare) a data structure that is processed by a standard algorithm (for that language) to produce the desired result.
A declarative language, like all languages, has a syntax describing how the words in the language may be combined, and a semantics describing how sentences in the language correspond to a program's output.

Contents
Domain-specific languages
Examples
See also
References
External links

Domain-specific languages


One popular form of declarative programming is its use in domain-specific languages (DSLs). "Domain" in this case refers to the "domain of discourse" — the subject matter that the language is intended to describe. Examples of DSLs are configuration files, spreadsheets, and even email (the "From:" and "To:" headers can be seen as processing instructions).
One drawback of DSLs is that they are often not Turing-complete. That is, there are certain things they cannot do. Just as you cannot use a spreadsheet to send e-mail, you cannot use e-mail to calculate your bank balance. For this reason, DSLs are sometimes ''embedded'' inside a general-purpose programming language. This allows a programmer to use the DSL for problems that play to its strengths, and use the general purpose language for problems that are difficult or impossible in the DSL.
Stand-alone DSLs — those not embedded in a general purpose language — are often easier to use than an embedded equivalent, since they avoid the added conceptual complexity imposed by the general purpose language.

Examples


:'' tries to provide an exhaustive list.''
Frameworks whose deployment has declarative programming aspects:

JUnit
Domain-specific languages that support declarative programming:

XSLT is a declarative language for transforming XML documents

SQL has a declarative part for relational database queries

TK Solver

XForms is an XML format for the specification of a data processing model for XML data and user interface(s) for the XML data, such as web forms.
Functional/logic/constraint programming languages that support declarative programming:

★ Functional: Erlang, Haskell and Lisp

★ Logic: Prolog, Mercury

★ Constraint: Oz, several prolog extensions (like ECLiPSe or SICSTUS)

See also



Declarative programming language for programming languages that support declarative programming

Computer programming for programming in general

Programming paradigm for programming paradigms in general


Imperative programming which in contrast concentrates on manipulating state


Procedural programming which in contrast concentrates on sequences of steps to follow

Business rules

Domain-specific programming language

References



Declarative language in The Free On-line Dictionary of Computing, Editor Denis Howe.

Relational language in The Free On-line Dictionary of Computing, Editor Denis Howe.

Logic programming in The Free On-line Dictionary of Computing, Editor Denis Howe.

Functional programming in The Free On-line Dictionary of Computing, Editor Denis Howe.

External links



★ Frans Coenen. Characteristics of declarative programming languages. 1999.

★ Olof Torgersson. A Note on Declarative Programming Paradigms and the Future of Definitional Programming. 1996.

David Mertz. Declarative Programming with XML Stylesheet Language Transformations. 2001.

★ Anders Norås. Declarative JavaScript programming. 2004-08-09.

★ David Mertz. Advanced OOP: Declarative Programming and Mini-Languages. 2003-07-31.

★ Narayanan Jayaratchagan. Declarative Programming in Java. 2004-04-21.

★ N. Alex Rupp. Ruling Out: Rule Engines and Declarative Programming Come to Java. 2004-08-19.

This article provided by Wikipedia. To edit the contents of this article, click here for original source.

psst.. try this: add to faves