Алма-0 - Alma-0
Парадигма | мультипарадигма : принуждение , императив , логика |
---|---|
Семья | Вирт Модула |
Разработано | Кшиштоф Апт, Марк Безем, Якоб Брунекри, Винсент Партингтон, Андреа Шерф |
Разработчик | Centrum Wiskunde & Informatica |
Впервые появился | 1997 |
Печатная дисциплина | статический |
Объем | Лексический (статический) |
Интернет сайт | www |
Основные реализации | |
Алма-0 | |
Под влиянием | |
Модула-2 |
Алма-0 является несколькими парадигмами компьютерного языком программирования . Этот язык является расширенной версией императивного языка Modula-2 с функциями логического программирования и удобной возможностью поиска с возвратом . Он небольшой, строго типизированный и сочетает в себе программирование в ограничениях, ограниченное количество функций, вдохновленных логическим программированием, и поддерживает императивные парадигмы . Язык поддерживает декларативное программирование . Разработчики утверждают, что построенные с его помощью ориентированные на поиск решения существенно проще, чем их аналоги, написанные в чисто императивном или логическом стиле программирования. Alma-0 предоставляет естественные высокоуровневые конструкции для построения деревьев поиска.
Обзор
Поскольку разработчики Alma-0 хотели создать отчетливое и существенно более простое предложение, чем предыдущие попытки интегрировать конструкции декларативного программирования (такие как автоматический возврат с возвратом) в императивное программирование, при разработке Alma-0 руководствовались четырьмя принципами:
- Расширение на основе логики должно иметь обратную совместимость с базовым императивным языком программирования.
- Расширение на основе логики должно быть совместимо снизу вверх с будущим расширением, которое будет поддерживать программирование в ограничениях.
- Конструкции, реализующие расширение, должны поддерживать и поощрять декларативное программирование.
- Расширение должно быть небольшим: было предложено и реализовано девять новых функций.
Alma-0 можно рассматривать не только как конкретное и конкретное предложение языка программирования, но также как пример универсального метода расширения любого императивного языка программирования функциями, поддерживающими декларативное программирование.
Реализуемость подхода Alma-0 была продемонстрирована посредством полной реализации языка (включая описание его семантики) для подмножества Modula-2 .
Функции
Реализованные функции в Alma-0 включают:
- Использование логических выражений в качестве операторов и наоборот
- Дуал для
FOR
утверждения, вводящего недетерминизм в виде точек выбора и обратного отслеживания. FORALL
Утверждение , что вводит контролируемую форма итерации по возвратам- Унификация, которая, хотя и ограничивается использованием равенства в качестве присваивания, дает новый механизм передачи параметров .
Императивный и логический режимы программирования
Разработчики Alma-0 утверждают, что присваивание, которого обычно избегают в чисто декларативном и логическом программировании, на самом деле необходимо в ряде естественных ситуаций, в том числе для целей подсчета и записи. Они также утверждают, что средства выражения такого «естественного» использования присваивания в рамках парадигмы логического программирования неестественны.
Рекомендации
- Джейкоб Брунекриф (1998). «Аннотированная алгебраическая спецификация синтаксиса и семантики языка программирования Алма-0» .
- Кшиштоф Р. Апт, Якоб Брунекриф, Винсент Партингтон, Андреа Шерф (1998). «Alma-0: императивный язык, поддерживающий декларативное программирование» .
- Кшиштоф Р. Апт, Андреа Шаерф (1998). «Программирование в Alma-0, или согласованное императивное и декларативное программирование» .
- Кшиштоф Р. Апт, Андреа Шаерф (1998). «Интеграция ограничений в императивный язык программирования» .
- Кшиштоф Р. Апт, Андреа Шаерф (1999). «Проект Alma, или Как логика первого порядка может помочь нам в императивном программировании» .