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