Gödel (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Gödel
Paradigma lógico, declarativo
Surgido em 1992
Última versão 1.5 (11/8/1995)
Criado por John Lloyd & Patricia Hill
Estilo de tipagem: forte

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

  • Hill, Patricia; Lloyd, John. The Gödel Programming Language (em ). Cambridge: The MIT Press, 1994. 350 pp. ISBN 0-262-08229-2.

Ligações externas[editar | editar código-fonte]