Gödel (język programowania)
Paradygmat | deklaratywny , logiczny |
---|---|
Zaprojektowany przez | Johna Lloyda i Patricii Hill |
Deweloper | Johna Lloyda i Patricii Hill |
Po raz pierwszy pojawiły się | 1992 |
Wersja stabilna | 1.5 / 11 sierpnia 1995
|
Dyscyplina pisania | mocny |
system operacyjny | Uniksopodobny |
Licencja | Tylko niekomercyjne badania/użytek edukacyjny |
Dialekty | |
Gödel z modułami ogólnymi (sparametryzowanymi). |
Gödel to deklaratywny język programowania ogólnego przeznaczenia , który jest zgodny z paradygmatem programowania logicznego . Jest to język silnie typowany , system typów oparty na logice wielosortowanej z polimorfizmem parametrycznym . Jej nazwa pochodzi od imienia logika Kurta Gödla .
Cechy
Gödel ma system modułowy i obsługuje liczby całkowite o dowolnej precyzji , liczby wymierne o dowolnej precyzji, a także liczby zmiennoprzecinkowe. Może rozwiązywać ograniczenia dotyczące skończonych dziedzin liczb całkowitych, a także liniowe ograniczenia wymierne. Obsługuje przetwarzanie zbiorów skończonych . Posiada również elastyczną regułę obliczeniową i operator przycinania, który uogólnia zatwierdzanie współbieżnych języków programowania logiki.
Metalogiczne udogodnienia Gödla zapewniają wsparcie dla meta-programó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 (NWD) dwóch liczb. Ma on zademonstrować deklaratywny charakter Gödla, a nie być szczególnie wydajny. CommonDivisor mówi, że jeśli i
i j
są różne od zera, to d
jest wspólnym dzielnikiem i
oraz j ,
jeśli
leży między 1
a mniejszą z liczb i
i j
oraz dokładnie dzieli zarówno i,
jak i j .
Gcd _
predykat mówi, że d
jest największym wspólnym dzielnikiem i
i j
, jeśli jest wspólnym dzielnikiem i
i j
, i nie ma e,
które byłoby również wspólnym dzielnikiem i
i j
i byłoby większe od d
.
MODUŁ GCD. IMPORTUJ liczby całkowite. PREDYKAT Gcd : Liczba całkowita * Liczba całkowita * Liczba całkowita. Gcd(i,j,d) <- Wspólny Dzielnik(i,j,d) & ~ NIEKTÓRE [e] (Wspólny Dzielnik(i,j,e) & e > d). PREDYKAT Wspólny dzielnik : Liczba całkowita * Liczba całkowita * Liczba całkowita. Wspólny Dzielnik(i,j,d) <- JEŚLI (i = 0 \/ j = 0) TO d = Max(Abs(i), Abs(j)) ELSE 1 =< d =< Min(Abs(i), Abs(j)) & i Mod d = 0 & j Mod d = 0.