Gödel (programovací jazyk)
Paradigma | deklarativní, logické |
---|---|
Vznik | 1992 |
Autor | John Lloyd & Patricia Hill |
Vývojář | John Lloyd & Patricia Hill |
Poslední verze | 1.5 |
Typová kontrola | silná |
OS | Unix |
Licence | nekomerč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 logikovi Kurtu Gödelovi.
Rysy
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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.
Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku Gödel (programming language) na anglické Wikipedii.