Калейдоскоп (язык программирования) - Kaleidoscope (programming language)

В Язык программирования калейдоскоп это программирование в ограничениях встраивание языков ограничения в императив объектно-ориентированный язык. Добавляет ключевые слова всегда, один раз, и утверждать..в течение (ранее в то время как..утверждать) делать утверждения о реляционных инвариантах. Объекты имеют конструкторы ограничений, которые не являются методами, для обеспечения значения определяемых пользователем типов данных.

Есть три версии Kaleidoscope, которые демонстрируют эволюцию от декларативного стиля к все более императивному стилю. Различия между ними заключаются в следующем.[1]

Калейдоскоп'90Калейдоскоп'91Калейдоскоп'93
Оценка ограниченийЛенивыйНетерпеливыйНетерпеливый
ПеременныеУдерживать потокиУдерживать потокиИмператив
Параллельные ограниченияСтрогийСтрогийНестрогий
СинтаксисSmalltalk-подобныйАлголоподобныйАлголоподобный
Модель ограниченийУточнениеУточнениеВозмущение
Метод диспетчеризациине замужемМножественныйМножественный
ПрисвоениеКак ограничениеКак ограничениеРазрушительный

пример

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

Без ограничений:

в то время как mouse.button = down делать старый <- mercury.top; mercury.top <- mouse.location.y; температура <- рт. ст. высота / масштаб; если старый  mercury.top затем delta_white (mercury.top, old); display_number (температура); конец если; конец пока;

С ограничениями:

всегда: температура = ртуть. высота / масштаб; всегда: белый прямоугольник (термометр); всегда: серый прямоугольник (ртуть); всегда: отображать номер (температура); в то время как mouse.button = вниз делать mercury.top = mouse.location.y ; конец пока;

использованная литература

  • Лопес, Гас; Бьорн Фриман-Бенсон; Алан Борнинг (1994). "Калейдоскоп: язык императивного программирования с ограничениями". Программирование ограничений. Springer-Verlag. С. 313–329.
  • Marriott, Ким; Питер Дж. Стаки (1998). Программирование с ограничениями: введение. MIT Press. ISBN  0-262-13341-5