The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

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