Gödel é um linguagem de programação declarativa, de propósito geral que adere ao paradigma lógico. É uma linguagem fortemente tipada, o sistema de tipos é baseado em muitos ordenados da lógica com polimorfismo paramétrico. Seu nome é uma homenagem ao lógico Kurt Gödel.
Características
Gödel tem um sistema de módulos, e suporta inteiros de precisão arbitrária, racionais de precisão arbitrária, e também números de ponto flutuante. Pode resolver restrições sobre domínios finitos de inteiros e também restrições racionais lineares. Ele suporta o processamento de conjuntos finitos. Ele também tem uma regra de computação flexível e um operador de poda que generaliza a consignação (em inglês: commit) das linguagens de programação lógica concorrente.
As instalações meta-lógicas da linguagem Gödel fornecem suporte para meta-programas que fazem análise, transformação, compilação, verificação e depuração, entre outras tarefas.
Código de exemplo
O módulo de Gödel que se segue é uma especificação do maior divisor comum (mdc) de dois números. Pretende-se demonstrar a natureza declarativa de Gödel, e não, o ser particularmente eficaz.
O predicado CommonDivisor
diz que se i
e j
não são zero, então d
é um divisor comum de i
e j
se situa entre 1
e os menores entre i
e j
e divide ambos i
e j
exatamente.
O predicado Mdc
diz que d
é um máximo divisor comum de i
e j
se for um divisor comum de i
e j
, e não há e
que também é um divisor comum de i
e j
e é maior do que d
.
MODULE MDC.
IMPORT Integers.
PREDICATE Mdc : Integer * Integer * Integer.
Mdc(i,j,d) ←
CommonDivisor(i,j,d) &
~ SOME [e] (CommonDivisor(i,j,e) & e > d).
PREDICATE CommonDivisor : Integer * Integer * Integer.
CommonDivisor(i,j,d) ←
IF (i = 0 \/ j = 0) THEN
d = Max(Abs(i),Abs(j))
ELSE
1 =< d =< Min(Abs(i),Abs(j)) &
i Mod d = 0 &
j Mod d = 0.
Bibliografia
- Hill, Patricia; Lloyd, John (1994). The Gödel Programming Language (em inglês). Cambridge: The MIT Press. 350 páginas. ISBN 0-262-08229-2
Ligações externas