Tarea 10

Gödel

Gödel es un lenguaje de programación declarativo y de propósito general de la familia de los lenguajes de programación lógica. Es un lenguaje fuertemente tipificado, el sistema de tipificación se basa en muchos tipos de lógica con polimorfismo paramétrico. Tiene un sistema de módulos. Gödel soporta una precisión infinita números enteros, racionales de precisión infinita, y también números de punto flotante. El carácter declarativo de Gödel lo hace particularmente adecuado para su uso como lenguaje de enseñanza; reduce la brecha que existe actualmente entre la teoría y la práctica en la programación lógica; hace posibles herramientas avanzadas de ingeniería de software tales como depuradores declarativos y generadores de compilación; reduce el esfuerzo que supone proporcionar una aplicación paralela del lenguaje; y ofrece un margen sustancial para la paralelización en tales implementaciones.

Como curiosidad, se puede destacar que este lenguaje no funciona en un entorno Windows

Sintaxis

Está basado en módulos (que aceptan polimorfismo) y en tipos de datos (soporta enteros y racionales con una precisión infinita, y número en coma flotante) y tiene una amplia librería de módulos predefinidos

Simbolos

Aritmeticos

+Suma
-resta
*Multiplicación
/División

Relacionales

==Igual que
> Mayor que
>= Mayor igual que
< Menor que
<= Menor igual que

Esqueleto de un programa en Gödel

-------------------------

       

Aplicación para ejecutar y editar codigo Gödel

Lo mas cercano que encontre para compilar codigo en Gödel es un extensión en VsCode que se llama Project Gödel Runner

Paradigma al que pertenece

Gödel es un lenguaje adherido al paradigma de programación lógica

Programa en Gödel

Este programa calcula el maximo comun divisor

            
        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. 
           
           
        

NOTA: HAY MUY POCA INFORMACION RESPECTO A GÖDEL