Gödel (język programowania) - Gödel (programming language)
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
|
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.