WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
ISWIM
Класс языка строгая, функциональная
Появился в 1966
Автор Питер Лэндин
Система типов динамическая
Испытал влияние ALGOL 60, Лисп
Повлиял на SASL, ML, Miranda, Haskell, Clean, Lucid

ISWIM — абстрактный язык программирования (или семейство языков программирования) описанный Питером Лэндином (Peter J. Landin) в его статье «Следующие 700 языков программирования»The Next 700 Programming Languages»), которая была опубликована в «the Communications of the ACM» в 1966 году. ISWIM расшифровывается как «If you See What I Mean» («Если вы понимаете, о чём я.»).

ISWIM — императивный язык с функциональным ядром (λ-исчисление с синтаксическим сахаром, для использования изменяемого состояния, присваивания и мощного механизма управления — оператора Лэндина «J», позволяющего захватывать текущее продолжение (call/cc оператор из Scheme — всего лишь упрощённая версия оператора «J»)). Благодаря λ-исчислению, в ISWIM есть функции высшего порядка и переменные с лексической областью видимости.

Операционная семантика ISWIM определяется SECD (Stack, Environment, Code, Dump) машиной Лэндина и использует вызов по значению, то есть строгое вычисление. Код на ISWIM должен был выглядеть наиболее похожим на математическую нотацию, вследствие чего Лэндин убрал точку с запятой между утверждениями и блоки begin-end типичные для ALGOL и заменил их областью видимости зависимой от выравнивания.

Особенной чертой в нотации ISWIM является использование where предложений. Программа на ISWIM — это единственное выражение, ограниченное утверждениями where (вспомогательные определения, включающие в себя отношения между переменными), условными выражениями и определениями функций. ISWIM (вместе с CPL) — первый язык, использующий where.

Примечательной семантической чертой была возможность определять новые типы данных, как (потенциально рекурсивную) сумму произведений; для этого использовалось ёмкое описание, довольно сходное с естественными языками, по сути равное алгебраическим типам данных в современных функциональных языках. Переменные ISWIM не имели явных объявлений типа, это даёт основание считать (хоть и точно не указано в статье), что Лэндин планировал язык с динамической типизацией, как LISP, а не ALGOL; также возможно было развитие некоторой формы выведения типов.

Как уже упоминалось, ISWIM не имеет прямых реализаций, хотя PAL Арта Эвана (Art Evan) и Gedanken Джона Рейнолда (John Reynold) использовали большинство ключевых концептов Лэндина включая мощные операции передачи управления. Оба эти языка использовали динамическую типизацию. ML Милнера можно считать эквивалентным ISWIM без оператора «J», но с выведением типов.

Другая линия продолжателей ISWIM избавилась от императивных особенностей (присваивания и «J») приводя, таким образом, к развитию чисто функциональных языков, впоследствии с переключением на ленивые вычисления. Этим путём пошли SASL, Miranda и Haskell.

См. также

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии