Gödel (programovací jazyk)

Z Wikipedie, otevřené encyklopedie
Miranda
Paradigmadeklarativní, logické
Vznik1992
AutorJohn Lloyd & Patricia Hill
VývojářJohn Lloyd & Patricia Hill
Poslední verze1.5
Typová kontrolasilná
OSUnix
Licencenekomerční výzkum/čistě vzdělávací použití

Gödel je v informatice deklarativní a všestranně použitelný programovací jazyk, který dodržuje logické programovací paradigma. Jedná se o silně typový jazyk, jehož systém je založen na mnohotříděné logice s parametrickým polymorfismem. Jazyk je pojmenován po rakouském logiku Kurtu Gödelovi narozeném v Brně.

Rysy

Gödel má modulární systém, který podporuje libovolnou přesnost celých čísel, racionálních čísel a čísel s pohyblivou desetinnou čárkou. Může řešit úlohy v oboru konečných celých čísel a zároveň v oboru lineárních racionálních čísel. Podporuje zpracování konečných množin. Má flexibilní výpočetní pravidla a pročišťovací (?) operátor (anglicky pruning operator), který zevšeobecňuje odkaz programovacích jazyků s konkurenční logikou.

Gödelovy metalogické prostředky poskytují podporu pro meta-programy, které zpracovávají analýzy, transformace, kompilace, verifikace, ladění a další úlohy.

Příklad

Následující modul v jazyce Gödel hledá největšího společného dělitele dvou čísel. Příklad demonstruje deklaratorní povahu jazyka, bez ohledu na efektivitu řešení. CommonDivisor predikát říká, že jestliže čísla i a j nejsou nula, pak d je jejich společným dělitelem za podmínky, že leží v intervalu mezi 1 a menším číslem z čísel i a j, a že i a j dělí celočíselně. Gcd predikát pak říká, že d je největší společný dělitel čísel i a j, jestliže je společným dělitelem i a j a neexistuje žádné takové e, které by bylo společným dělitelem těchto čísel i a j a bylo větší než 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.

Externí odkazy

V tomto článku byl použit překlad textu z článku Gödel (programming language) na anglické Wikipedii.