Vážení zákazníci a čtenáři – od 28. prosince do 2. ledna máme zavřeno.
Přejeme Vám krásné svátky a 52 týdnů pohody a štěstí v roce 2025 !

Gödel (programovací jazyk)

Z Multimediaexpo.cz

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 logiku Kurtu Gödelovi.

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