Declarative programming: Difference between revisions

Content deleted Content added
Fix FOLDOC link.
Use the Wayback Machine for a now-dead link.
Line 8:
Many languages that apply this style attempt to minimize or eliminate [[side effect (computer science)|side effects]] by describing ''what'' the program must accomplish in terms of the [[___domain knowledge|problem ___domain]], rather than describing ''how'' to accomplish it as a sequence of the programming [[language primitive]]s<ref name="FOLDOC 2004">{{cite web | title=declarative language | website=FOLDOC | date=17 May 2004 | url=https://foldoc.org/declarative+language | access-date=7 September 2023}}</ref> (the ''how'' being left up to the language's [[programming language implementation|implementation]]). This is in contrast with [[imperative programming]], which implements [[algorithm]]s in explicit steps.<ref name="Sebesta 2016">{{cite book | last=Sebesta | first=Robert | title=Concepts of programming languages | publisher=Pearson | publication-place=Boston | year=2016 | isbn=978-0-13-394302-3 | oclc=896687896}}</ref>
 
Declarative programming often considers [[program (machine)|programs]] as theories of a [[Mathematical_logic#Formal_logical_systems|formal logic]], and computations as deductions in that logic space. Declarative programming may greatly simplify writing [[parallel computing|parallel programs]].<ref>{{cite web|url=http://www.cse.unsw.edu.au/~pls/damp09/ |title=DAMP 2009: Workshop on Declarative Aspects of Multicore Programming |publisher=Cse.unsw.edu.au |date=20 January 2009 |access-date=15 August 2013 |archive-url=https://web.archive.org/web/20130913162703/http://www.cse.unsw.edu.au/~pls/damp09/ |archive-date=13 September 2013 |url-status=dead}}</ref>
 
Common declarative languages include those of [[Query languages|database query languages]] (e.g., [[SQL]], [[XQuery]]), [[regular expression]]s, [[logic programming]] (e.g. [[Prolog]], [[Datalog]], [[answer set programming]]), [[functional programming]], and [[Configuration management database|configuration management]] systems.