Эта статья включает в себя список общих ссылок , но он остается в основном непроверенным, поскольку в нем отсутствуют соответствующие встроенные ссылки . ( Декабрь 2011 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Парадигма | Императивный , функциональный |
---|---|
Разработано | Питер Ландин |
Впервые появился | 1966 |
Под влиянием | |
АЛГОЛ 60 , Лисп | |
Под влиянием | |
SASL , Miranda , ML , Haskell , Clean , Lucid |
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 .
Ссылки [ править ]
- Перейти ↑ Landin, PJ (март 1966 г.). «Следующие 700 языков программирования» (PDF) . Коммуникации ACM . Ассоциация вычислительной техники . 9 (3): 157–165. DOI : 10.1145 / 365230.365257 . S2CID 13409665 .
- ^ Плоткин, Гордон (1975). Call-by-Name, Call-by Value и лямбда-исчисление (PDF) (Отчет).
- ^ Эванс, Искусство (1968). «PAL: язык, разработанный для обучения лингвистике программирования». Материалы Национальной конференции ACM . Национальная конференция ACM. Ассоциация вычислительной техники .
- Перейти ↑ Reynolds, John C. (сентябрь 1969). GEDANKEN: простой язык без типов, который разрешает функциональные структуры данных и совместные подпрограммы (Report). Аргоннская национальная лаборатория.
- ^ Иванович, Мирьяна; Будимак, Зоран (апрель 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 или новее.