ИСВИМ
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( декабрь 2011 г. ) |
Парадигма | Императивный , функциональный |
---|---|
Разработано | Питер Ландин |
Впервые появился | 1966 год |
Под влиянием | |
АЛГОЛ 60 , Лисп | |
Под влиянием | |
SASL , Миранда , ML , Haskell , Clean , Lucid |
ISWIM ( If You See What I Mean ) — абстрактный язык компьютерного программирования (или семейство языков), разработанный Питером Ландином и впервые описанный в его статье «Следующие 700 языков программирования», опубликованной в журнале Communications of ACM в 1966 году. [ 1 ]
Хотя он и не был реализован, он оказался очень влиятельным в разработке языков программирования, особенно языков функционального программирования , таких как SASL , Miranda , ML , Haskell и их преемников, а также программирования потоков данных языков , таких как Lucid .
Дизайн
[ редактировать ]ISWIM — это императивный язык программирования с функциональным ядром, состоящим из синтаксического шугаринга лямбда -исчисления , к которому добавляются изменяемые переменные и присваивание, а также мощный механизм управления: программной точки оператор . Основанный на лямбда-исчислении, ISWIM имеет функции высшего порядка и с лексической областью действия переменные .
Операционная семантика ISWIM определяется с использованием машины SECD Ландина и использует вызов по значению, то есть быструю оценку . [ 2 ] Целью ISWIM было больше походить на математическую запись, поэтому Ландин отказался от точек с запятой в АЛГОЛЕ между операторами и begin
... end
блоки и заменил их правилом «вне игры» и областью действия, основанной на отступах .
Отличительной особенностью ISWIM является использование where
статьи. Программа ISWIM представляет собой одно выражение, дополненное предложениямиwhere (вспомогательные определения, включая уравнения между переменными), условными выражениями и определениями функций. Наряду с CPL , ISWIM был одним из первых языков программирования, в котором использовались операторыwhere . [ 3 ]
Примечательной семантической особенностью была возможность определять новые типы данных как (возможно, рекурсивную) сумму произведений. Это было сделано с использованием несколько подробного описания в стиле естественного языка, но, если не считать обозначений, оно соответствует в точности алгебраическим типам данных , встречающимся в современных функциональных языках. [ 4 ] Переменные ISWIM не имели явных объявлений типов, и вполне вероятно (хотя и не указано явно в статье 1966 года), что Ландин намеревался сделать язык динамически типизированным, как LISP и в отличие от ALGOL ; но также возможно, что он намеревался разработать некую форму вывода типа .
Реализации и производные
[ редактировать ]Попыток прямой реализации ISWIM не предпринималось, кроме языка Арта Эвана PAL . [ 5 ] и Джона К. Рейнольдса языковые мысли , [ 6 ] уловил большую часть концепций Ландина, включая мощные операции по передаче контроля. Оба они были типизированы динамически . Робина Милнера можно ML считать эквивалентом I SWIM без оператора J и с выводом типа .
Другой путь от ISWIM — убрать императивные функции (присваивание и оператор J), оставив чисто функциональный язык. [ 7 ] Тогда становится возможным переключиться на отложенное вычисление . Этот путь привел к языкам программирования SASL , Kent Recursive Calculator (KRC), Hope , Miranda , Haskell и Clean .
Ссылки
[ редактировать ]- ^ Ландин, П.Дж. (март 1966 г.). «Следующие 700 языков программирования» (PDF) . Коммуникации АКМ . 9 (3). Ассоциация вычислительной техники : 157–165. дои : 10.1145/365230.365257 . S2CID 13409665 .
- ^ Плоткин, Гордон (1975). Вызов по имени, вызов по значению и лямбда-исчисление (PDF) (отчет).
- ^ Эта статья основана на материалах, взятых из ISWIM в Бесплатном онлайн-словаре вычислительной техники до 1 ноября 2008 г. и включенных в соответствии с условиями «повторного лицензирования» GFDL версии 1.3 или более поздней.
- ^ Тернер, Д.А. (2013), «Некоторые истории языков функционального программирования» , Конспекты лекций по информатике , Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 1–20, ISBN 978-3-642-40446-7 получено 28 января 2024 г. ,
В документе ISWIM также впервые упоминаются определения алгебраических типов, используемые для определения структур. Это делается на словах, но идея суммы продуктов явно присутствует.
- ^ Эванс, Искусство (1968). «PAL: язык, предназначенный для обучения лингвистике программирования». Материалы Национальной конференции ACM . Национальная конференция ACM. Ассоциация вычислительной техники .
- ^ Рейнольдс, Джон К. (сентябрь 1969 г.). GEDANKEN: простой бестиповый язык, который допускает функциональные структуры данных и сопрограммы (Report). Аргоннская национальная лаборатория.
- ^ Иванович, Мирьяна; Будимак, Зоран (апрель 1993 г.). «Определение ISWIM-подобного языка через схему» . Уведомления ACM SIGPLAN . 28 (4): 29–38. дои : 10.1145/152739.152743 . S2CID 14379260 .