Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

ISWIM ( аббревиатура от « If you See What I Mean» ) - это абстрактный язык компьютерного программирования (или семейство языков), разработанный Питером Ландином и впервые описанный в его статье «Следующие 700 языков программирования», опубликованной в Коммуникациях ACM в 1966. [1]

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

Дизайн [ править ]

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

Операционная семантика ISWIM определяется с помощью машины Landin SECD и использует вызов по значению, то есть динамическую оценку . [2] Цель ISWIM состояла в том, чтобы больше походить на математическую нотацию, поэтому Ландин отказался от точек с запятой в ALGOL между операторами и begin... endблоками и заменил их правилом off-side и областью видимости на основе отступов .

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

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

Реализации и производные [ править ]

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

Еще одно направление развития ISWIM - исключение императивных функций (присваивание и оператор J), оставляя чисто функциональный язык. [5] Тогда становится возможным переключиться на ленивую оценку . Этот путь привел к языкам программирования SASL , Kent Recursive Calculator (KRC), Hope , Miranda , Haskell и Clean .

Ссылки [ править ]

  1. Перейти ↑ Landin, PJ (март 1966 г.). «Следующие 700 языков программирования» (PDF) . Коммуникации ACM . Ассоциация вычислительной техники . 9 (3): 157–165. DOI : 10.1145 / 365230.365257 . S2CID  13409665 .
  2. ^ Плоткин, Гордон (1975). Call-by-Name, Call-by Value и лямбда-исчисление (PDF) (Отчет).
  3. ^ Эванс, Искусство (1968). «PAL: язык, разработанный для обучения лингвистике программирования». Материалы Национальной конференции ACM . Национальная конференция ACM. Ассоциация вычислительной техники .
  4. Перейти ↑ Reynolds, John C. (сентябрь 1969). GEDANKEN: простой язык без типов, который разрешает функциональные структуры данных и совместные подпрограммы (Report). Аргоннская национальная лаборатория.
  5. ^ Иванович, Мирьяна; Будимак, Зоран (апрель 1993 г.). «Определение ISWIM-подобного языка через схему». Уведомления ACM SIGPLAN . 28 (4): 29–38. DOI : 10.1145 / 152739.152743 . S2CID 14379260 . 

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.