Калейдоскоп (язык программирования)
Язык программирования «Калейдоскоп» — это язык программирования с ограничениями, встраивающий ограничения в императивный объектно-ориентированный язык. Он добавляет ключевые слова всегда , один раз и утверждение .. во время ранее while..assert ( ) , чтобы делать утверждения о реляционных инвариантах. У объектов есть конструкторы ограничений, которые не являются методами, для реализации значений пользовательских типов данных.
Существует три версии «Калейдоскопа», которые демонстрируют эволюцию от декларативного стиля к все более императивному. Различия между ними заключаются в следующем. [1]
Калейдоскоп'90 | Калейдоскоп'91 | Калейдоскоп'93 | |
---|---|---|---|
Оценка ограничений | Ленивый | Жаждущий | Жаждущий |
Переменные | Держите трансляции | Держите трансляции | Императив |
Параллельные ограничения | Строгий | Строгий | Нестрогий |
Синтаксис | Smalltalk-подобный | Алголоподобный | Алголоподобный |
Модель ограничений | Уточнение | Уточнение | Возмущение |
Диспетчеризация методов | Одинокий | Несколько | Несколько |
Назначение | В качестве ограничения | В качестве ограничения | Разрушительный |
Пример
[ редактировать ]Сравните два сегмента кода, оба из которых позволяют пользователю перетаскивать мышью уровень ртути в простом графическом термометре.
Без ограничений:
while mouse.button = down do old <- mercury.top; mercury.top <- mouse.location.y; temperature <- mercury.height / scale; display_number( temperature ); if old < mercury.top then delta_grey( old, mercury.top ); elseif old > mercury.top then delta_white( mercury.top, old ); end if; end while;
С ограничениями:
always: temperature = mercury.height / scale; always: white rectangle( thermometer ); always: grey rectangle( mercury ); always: display number( temperature ); while mouse.button = down do mercury.top = mouse.location.y; end while;
Ссылки
[ редактировать ]- Лопес, Гас; Бьорн Фриман-Бенсон; Алан Борнинг (1994). «Калейдоскоп: язык программирования, императивный к ограничениям». Программирование ограничений . Спрингер-Верлаг. стр. 313–329.
- Марриотт, Ким; Питер Дж. Стаки (1998). Программирование с ограничениями: Введение . МТИ Пресс. ISBN 0-262-13341-5
- ^ Лопес, Гас; Фриман-Бенсон, Бьорн; Борнинг, Алан (1993). «Калейдоскоп: язык программирования, императивный к ограничениям» (PDF) . ограничения.cs.washington.edu . Проверено 30 декабря 2023 г.