Gödel (język programowania) - Gödel (programming language)

Gödel
Paradygmat deklaratywne , logika
Zaprojektowany przez John Lloyd i Patricia Hill
Deweloper John Lloyd i Patricia Hill
Po raz pierwszy pojawiły się 1992
Wersja stabilna
1.5 / 11 sierpnia 1995  ( 11.08.1995 )
Dyscyplina typowania silny
OS Podobny do systemu Unix
Licencja Wyłącznie do niekomercyjnych zastosowań badawczych / edukacyjnych
Dialekty
Gödel z modułami ogólnymi (parametrycznymi)

Gödel jest deklaratywnym językiem programowania ogólnego przeznaczenia , który jest zgodny z paradygmatem programowania logicznego . Jest to język silnie typizowany , system typów oparty na logice wielosegmentowej z polimorfizmem parametrycznym . Jej nazwa pochodzi od logika Kurta Gödla .

funkcje

Gödel ma modułową i obsługuje dowolną dokładnością liczb całkowitych, wymiernych dowolną dokładnością, a także liczb zmiennoprzecinkowych. Potrafi rozwiązywać ograniczenia dotyczące skończonych domen liczb całkowitych, a także liniowych ograniczeń wymiernych. Obsługuje przetwarzanie skończonych zbiorów . Ma również elastyczną regułę obliczeniową i operator przycinania, który uogólnia zatwierdzanie współbieżnych języków programowania logiki.

Narzędzia meta-logiczne firmy Gödel zapewniają wsparcie dla metaprogramów, które wykonują między innymi analizę, transformację , kompilację, weryfikację i debugowanie.

Przykładowy kod

Poniższy moduł Gödla jest specyfikacją największego wspólnego dzielnika (GCD) dwóch liczb. Ma to na celu zademonstrowanie deklaratywnej natury Gödla, a nie być szczególnie wydajnym. CommonDivisor Orzeczenie mówi, że jeśli i i j to nie jest równa zeru, to d jest wspólny dzielnik i i j jeśli leży ona między 1 a mniejszy od i a j i dzieli oba i i j dokładnie. Gcd Orzeczenie mówi, że d jest to największy wspólny dzielnik i i j jeśli jest to wspólny dzielnik i a j , a tam nie ma e , że jest też wspólny dzielnik i a j i jest większa niż d .

MODULE      GCD.
IMPORT      Integers.
 
PREDICATE   Gcd : Integer * Integer * Integer.
Gcd(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.

Linki zewnętrzne