2.2 Paradigma Declarativo

A ideia do paradigma declarativo , por sua vez, é que um programa pode ser visto como um teorema em uma lógica apropriada. Por essa linha de raciocínio, a programação é levada a um nível mais alto de abstração, onde o programador pode concentrar-se em descrever o resultado o que deve ser computado, e não necessariamente como esse resultado deve ser computado. Dessa forma, a programação declarativa define "o que" é para ser computado, mais do que "como" computar, entrando assim em contraste a programação imperativa.

Por exemplo, o programa a seguir, em linguagem Prolog , que é uma linguagem declarativa, resolve o problema de obter todos os números binários de três dígitos. Note que esse programa especifica “o que” deve ser computado como resultado. O programa declara os dígitos que podem ser usados na composição de um número binário, e define um binário de três dígitos como uma tupla (A,B,C), em que cada componente representa um dígito binário. Para ver o resultado computado pelo programa, o usuário deve fazer a consulta: ?-binário(N).

Exemplo 2:

dígito(0).

dígito(1).

binário(N) :- N=(A,B,C), dígito(A), dígito(B), dígito(C).

Na programação declarativa, não há a ideia de estado do programa, como ocorre na programação imperativa. Nesta primeira há apenas declarações de verdades que, após serem declaradas, são imutáveis. Por consequência, a programação se torna sem efeitos colaterais, isto é, dadas algumas declarações e realizada alguma interação entre elas, o resultado será sempre o mesmo para aquelas declarações, enquanto que, na programação imperativa, um mesmo trecho de código nem sempre retornará o mesmo resultado (pois o resultado depende do estado em que ele é computado).

Como a programação declarativa é baseada em dados imutáveis, ela expressa a lógica de uma computação sem descrever exatamente seu fluxo de controle. Dentro do paradigma declarativo, podemos identificar outros paradigmas, como o funcional , o lógico e a programação restritiva .