Альма-0
Парадигма | мультипарадигма : ограничение , императив , логика. |
---|---|
Семья | Вирт Модуль |
Разработано | Кшиштоф Апт , Марк Безем, Джейкоб Брунекриф, Винсент Партингтон, Андреа Шерф |
Разработчик | Центр математики и информатики |
Впервые появился | 1997 год |
Дисциплина набора текста | статический |
Объем | Лексический (статический) |
Веб-сайт | www |
Основные реализации | |
Альма-0 | |
Под влиянием | |
Модуль-2 |
Alma-0 — мультипарадигменный программирования язык . Этот язык представляет собой расширенную версию императивного языка Модулы-2 с функциями логического программирования и удобной возможностью возврата . [1] Он небольшой, строго типизирован и сочетает в себе программирование в ограничениях , ограниченное количество функций, вдохновленных логическим программированием , и поддерживает императивные парадигмы . Язык поддерживает декларативное программирование . Разработчики утверждают, что созданные с его помощью ориентированные на поиск решения существенно проще, чем их аналоги, написанные в чисто императивном или логическом стиле программирования. [2] Alma-0 предоставляет естественные высокоуровневые конструкции для построения деревьев поиска. [3]
Обзор
[ редактировать ]Поскольку разработчики Alma-0 хотели создать четкое и существенно более простое предложение, чем предыдущие попытки интегрировать конструкции декларативного программирования (такие как автоматический возврат) в императивное программирование, при разработке Alma-0 руководствовались четырьмя принципами:
- Расширение, основанное на логике, должно быть совместимо с лежащим в его основе императивным языком программирования.
- Расширение на основе логики должно быть совместимо с будущими расширениями, которые будут поддерживать программирование с ограничениями.
- Конструкции, которые будут реализовывать расширение, должны поддерживать и поощрять декларативное программирование.
- Расширение должно быть небольшим: предложено и реализовано девять новых функций.
Alma-0 можно рассматривать не только как конкретное предложение языка программирования, но и как пример общего метода расширения любого императивного языка программирования функциями, поддерживающими декларативное программирование.
Осуществимость подхода Alma-0 была продемонстрирована посредством полной реализации языка (включая описание его семантики) для подмножества Modula-2 . [4]
Функции
[ редактировать ]Реализованные в Alma-0 функции включают в себя:
- Использование логических выражений в качестве операторов и наоборот
- Двойник для
FOR
утверждение, которое вводит недетерминизм в форме точек выбора и возврата - А
FORALL
оператор, который вводит контролируемую форму итерации при возврате - Унификация , которая, хотя и ограничивается использованием равенства в качестве присваивания, дает новый механизм передачи параметров .
Императивный и логический режимы программирования
[ редактировать ]Разработчики Alma-0 утверждают, что присваивание, которого обычно избегают в чистом декларативном и логическом программировании, на самом деле необходимо в ряде естественных ситуаций, в том числе для целей подсчета и записи. Они также утверждают, что средства выражения такого «естественного» использования присваивания в парадигме логического программирования неестественны.
Ссылки
[ редактировать ]- ^ Лю, Джед; Майерс, Эндрю К. (2003). «JMatch: Итерируемое сопоставление абстрактных шаблонов для Java». Практические аспекты декларативных языков . Конспекты лекций по информатике. Том. 2562/2003. стр. 110–127. дои : 10.1007/3-540-36388-2_9 . ISBN 978-3-540-00389-2 .
- ^ Партингтон, Винсент (июль 1997 г.). Реализация императивного языка программирования с возвратом (PDF) (Отчет). Исследовательская группа по программированию Амстердамского университета. Архивировано (PDF) из оригинала 29 ноября 2023 года . Проверено 15 февраля 2021 г. Также в Postscript. Архивировано 31 мая 2024 года в Wayback Machine .
- ^ Ван Хентенрик, Паскаль; Перрон, Лоран; Пьюже, Жан-Франсуа (октябрь 2000 г.). «Поиск и стратегии в OPL». Транзакции ACM в вычислительной логике . 1 (2): 285–320. CiteSeerX 10.1.1.17.836 . дои : 10.1145/359496.359529 . S2CID 15926704 .
- ^ Даль, Вероника (12 февраля 2003 г.). Практические аспекты декларативных языков: 5-й международный симпозиум, PADL 2003, Новый Орлеан, Луизиана, США, 13-14 января 2003 г., Труды . Springer Science & Business Media. ISBN 978-3-540-00389-2 . Архивировано из оригинала 31 мая 2024 года . Проверено 25 февраля 2023 г.
- Джейкоб Брунекриф (1998). «Аннотированная алгебраическая спецификация синтаксиса и семантики языка программирования Альма-0» .
- Кшиштоф Р. Апт , Джейкоб Брунекриф, Винсент Партингтон, Андреа Шерф (1998). «Алма-0: императивный язык, поддерживающий декларативное программирование» .
- Кшиштоф Р. Апт , Андреа Шерф (1998). «Программирование в Альма-0, или примирение императивного и декларативного программирования» .
- Кшиштоф Р. Апт , Андреа Шерф (1998). «Интеграция ограничений в императивный язык программирования» .
- Кшиштоф Р. Апт , Андреа Шерф (1999). «Проект Альма, или Как логика первого порядка может помочь нам в императивном программировании» .