Алма-0 - Alma-0

Алма-0
Парадигма мультипарадигма : принуждение , императив , логика
Семья Вирт Модула
Разработано Кшиштоф Апт, Марк Безем, Якоб Брунекри, Винсент Партингтон, Андреа Шерф
Разработчик Centrum Wiskunde & Informatica
Впервые появился 1997 ; 24 года назад  ( 1997 )
Печатная дисциплина статический
Объем Лексический (статический)
Интернет сайт www .cwi .nl / en / alma
Основные реализации
Алма-0
Под влиянием
Модула-2

Алма-0 является несколькими парадигмами компьютерного языком программирования . Этот язык является расширенной версией императивного языка Modula-2 с функциями логического программирования и удобной возможностью поиска с возвратом . Он небольшой, строго типизированный и сочетает в себе программирование в ограничениях, ограниченное количество функций, вдохновленных логическим программированием, и поддерживает императивные парадигмы . Язык поддерживает декларативное программирование . Разработчики утверждают, что построенные с его помощью ориентированные на поиск решения существенно проще, чем их аналоги, написанные в чисто императивном или логическом стиле программирования. Alma-0 предоставляет естественные высокоуровневые конструкции для построения деревьев поиска.

Обзор

Поскольку разработчики Alma-0 хотели создать отчетливое и существенно более простое предложение, чем предыдущие попытки интегрировать конструкции декларативного программирования (такие как автоматический возврат с возвратом) в императивное программирование, при разработке Alma-0 руководствовались четырьмя принципами:

  • Расширение на основе логики должно иметь обратную совместимость с базовым императивным языком программирования.
  • Расширение на основе логики должно быть совместимо снизу вверх с будущим расширением, которое будет поддерживать программирование в ограничениях.
  • Конструкции, реализующие расширение, должны поддерживать и поощрять декларативное программирование.
  • Расширение должно быть небольшим: было предложено и реализовано девять новых функций.

Alma-0 можно рассматривать не только как конкретное и конкретное предложение языка программирования, но также как пример универсального метода расширения любого императивного языка программирования функциями, поддерживающими декларативное программирование.

Реализуемость подхода Alma-0 была продемонстрирована посредством полной реализации языка (включая описание его семантики) для подмножества Modula-2 .

Функции

Реализованные функции в Alma-0 включают:

  • Использование логических выражений в качестве операторов и наоборот
  • Дуал для FOR утверждения, вводящего недетерминизм в виде точек выбора и обратного отслеживания.
  • FORALL Утверждение , что вводит контролируемую форма итерации по возвратам
  • Унификация, которая, хотя и ограничивается использованием равенства в качестве присваивания, дает новый механизм передачи параметров .

Императивный и логический режимы программирования

Разработчики Alma-0 утверждают, что присваивание, которого обычно избегают в чисто декларативном и логическом программировании, на самом деле необходимо в ряде естественных ситуаций, в том числе для целей подсчета и записи. Они также утверждают, что средства выражения такого «естественного» использования присваивания в рамках парадигмы логического программирования неестественны.

Рекомендации