being difficult to program in (and therefore challenging). These languages are the exception to the common ground between procedural and functional languages. Logic programming In logic programming, a program is a set of premises, and computation is performed by attempting to prove candidate theorems. From this point of view, logic programs are declarative, focusing on what the problem is, rather than on how to solve it. However, the backward reasoning technique, implemented by SLD resolution, used to solve problems in logic programming languages such as Prolog, treats programs as goal-reduction procedures. Thus clauses of the form: have a dual interpretation, both as procedures to show/solve , show/solve and … and and as logical implications: . Experienced logic programmers use the procedural interpretation to write programs that are effective and efficient, and they use the declarative interpretation to help ensure that programs are correct. See also Comparison of programming paradigms Declarative programming Functional programming (contrast) Imperative programming Logic programming Object-oriented programming Programming paradigms Programming language Structured programming SQL procedural extensions References External links Programming paradigms