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