WikiDer > Гёдель (язык программирования)
| Парадигма | декларативный, логика |
|---|---|
| Разработано | Джон Ллойд и Патриция Хилл |
| Разработчик | Джон Ллойд и Патрисия Хилл |
| Впервые появился | 1992 |
| Стабильный выпуск | 1.5 / 11 августа 1995 г. |
| Печатная дисциплина | сильный |
| Операционные системы | Unix-подобный |
| Лицензия | Только для некоммерческих исследований / образовательных целей |
| Диалекты | |
| Гедель с универсальными (параметризованными) модулями | |
Гёдель это декларативный, общее назначение язык программирования который придерживается логика парадигма программирования. Это строго типизированный язык, система типов основана на разносторонняя логика с параметрический полиморфизм. Назван в честь логика Курт Гёдель.
Функции
У Gödel есть модульная система, и она поддерживает произвольная точность целые числа, рациональные числа произвольной точности, а также числа с плавающей запятой. Это может решить ограничения над конечными областями целых чисел, а также линейными рациональными ограничениями. Он поддерживает обработку конечные множества. Он также имеет гибкое правило вычислений и оператор отсечения, который обобщает фиксацию языков параллельного логического программирования.
Гёделя мета-логический средства обеспечивают поддержку метапрограмм, выполняющих анализ, трансформация, компиляция, проверка и отладка, среди других задач.
Образец кода
Следующий модуль Гёделя является спецификацией наибольшего общего делителя (НОД) двух чисел. Он призван продемонстрировать декларативный характер Гёделя, а не быть особенно эффективным. CommonDivisor предикат говорит, что если я и j не равны нулю, тогда d является общим делителем я и j если он находится между 1 и меньший из я и j и делит оба я и j точно. Gcd предикат говорит, что d является наибольшим общим делителем я и j если это общий делитель я и j, и нет е это также общий делитель я и j и больше чем d.
МОДУЛЬ GCD.IMPORT Целые числа. 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 =внешняя ссылка