WikiDer > Я ПЛАВАЮ

ISWIM
Я ПЛАВАЮ
ПарадигмаИмператив, функциональный
РазработаноПитер Ландин
Впервые появился1966; 54 года назад (1966)
Под влиянием
АЛГОЛ 60, Лисп
Под влиянием
SASL, Миранда, ML, Haskell, Чистый, Lucid

Я ПЛАВАЮ (акроним за Если вы понимаете, что я имею в виду) это абстрактный компьютер язык программирования (или семейство языков), разработанное Питер Ландин и впервые описан в его статье «Следующие 700 языков программирования», опубликованной в Коммуникации ACM в 1966 г.[1]

Хотя он и не реализован, он оказался очень влиятельным при разработке языков программирования, особенно функциональное программирование языки, такие как SASL, Миранда, ML, Haskell и их преемники, и программирование потока данных языки как Lucid.

Дизайн

ISWIM - это императивное программирование язык с функциональным ядром, состоящим из синтаксический шугаринг из лямбда-исчисление к которому добавлены изменяемые переменные и присваивание, а также мощный механизм управления: программный пункт оператор. Основываясь на лямбда-исчислении, ISWIM имеет функции высшего порядка и лексически ограниченный переменные.

Операционная семантика ISWIM определяется с помощью Ландина Машина SECD и используйте вызов по значению, то есть жадная оценка.[2] Целью ISWIM было больше походить на математические обозначения, поэтому Ландин отказался от АЛГОЛточка с запятой между операторами и начинать ... конец блоки и заменили их на вне игры и определение объема работ на основе отступ.

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

Примечательной семантической особенностью была возможность определять новые типы данных как (возможно, рекурсивную) сумму произведений. Это было сделано с использованием несколько подробного описания стиля естественного языка, но, за исключением обозначений, составляет точно алгебраические типы данных найдено в современных функциональных языках.[нужна цитата] Переменные ISWIM не имели явных деклараций типов, и кажется вероятным (хотя явно не указано в статье 1966 года), что Ландин намеревался динамически типизировать язык, как LISP и в отличие от него. АЛГОЛ; но также возможно, что он намеревался разработать какую-то форму вывод типа.

Реализации и производные

Попыток прямого внедрения ISWIM не предпринималось, кроме языка Арта Эвана. PAL,[3] и Джон С. Рейнольдс' язык Gedanken,[4] охватило большинство концепций Ландина, включая мощные операции по передаче управления. Оба они были набирается динамически. Милнера ML можно считать эквивалентным IПЛАВАТЬ без оператора J и с вывод типа.

Еще одно направление развития ISWIM - исключение императивных функций (присваивание и оператор J), оставляя чисто функциональный язык.[5] Затем становится возможным переключиться на ленивая оценка. Этот путь привел к языкам программирования SASL, Рекурсивный калькулятор Кента (KRC), Надеяться, Миранда, Haskell, и Чистый.

Рекомендации

  1. ^ Ландин, П. Дж. (Март 1966 г.). «Следующие 700 языков программирования» (PDF). Коммуникации ACM. Ассоциация вычислительной техники. 9 (3): 157–165.
  2. ^ Плоткин, Гордон (1975). Call-by-Name, Call-by Value и лямбда-исчисление (PDF) (Отчет).
  3. ^ Эванс, Искусство (1968). «PAL: язык, разработанный для обучения лингвистике программирования». Материалы Национальной конференции ACM. Национальная конференция ACM. Ассоциация вычислительной техники.
  4. ^ Рейнольдс, Джон С. (Сентябрь 1969 г.). GEDANKEN: простой язык без типов, который разрешает функциональные структуры данных и совместные подпрограммы (Report). Аргоннская национальная лаборатория.
  5. ^ Иванович, Мирьяна; Будимак, Зоран (апрель 1993 г.). «Определение ISWIM-подобного языка через схему». Уведомления ACM SIGPLAN. 28 (4).

Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.