ISWIM

ISWIM
ISWIM
Класс языка:

строгая, функциональная

Появился в:

1966

Типизация данных:

динамическая

Повлиял на:

SASL, ML

ISWIM — абстрактный язык программирования (или семейство языков программирования) описанный Питером Лэндином (Peter J. Landin) в его статье «Следующие 700 языков программирования»The Next 700 Programming Languages»), которая была опубликована в «the Communications of the ACM» в 1966 году. ISWIM расшифровывается как «If you See What I Mean» («если ты видишь, что я имею в виду»).

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

ISWIM — императивный язык с функциональным ядром (λ-исчисление с синтаксическим сахаром, для использования изменяемого состояния, присваивания и мощного механизма управления — оператора Лэндина «J», позволяющего захватывать текущее продолжение (call/cc оператор из Scheme — всего лишь упрощенная версия оператора «J»)). Благодаря λ-исчислению, в ISWIM есть функции высшего порядка и переменные с лексической областью видимости.

Операционная семантика ISWIM определяется SECD (Stack, Environment, Code, Dump) машиной Лэндина и использует вызов по значению, то есть строгое вычисление. Код на ISWIM должен был выглядеть наиболее похожим на математическую нотацию, вследствие чего Лэндин убрал точку с запятой между утверждениями и блоки begin-end типичные для ALGOL и заменил их областью видимости зависимой от выравнивания.

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

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

Как уже упоминалось, ISWIM не имеет прямых реализаций, хотя PAL Арта Эвана (Art Evan) и Gedanken Джона Рейнолда (John Reynold) использовали большинство ключевых концептов Лэндина включая мощные операции передачи управления. Оба эти языка использовали динамическую типизацию. ML Милнера (Milner) можно считать эквивалентным ISWIM без оператора «J», но с выведением типов.

Другая линия продолжателей ISWIM избавилась от императивных особенностей (присваивания и «J») приводя, таким образом, к развитию чисто функциональных языков, впоследствии с переключением на ленивые вычисления. Этим путём пошли SASL, Miranda и Haskell.

См. также


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "ISWIM" в других словарях:

  • ISWIM — ist eine von Peter J. Landin konzipierte Programmiersprache und eine Abkürzung von »If you See What I Mean«. Landin stellte seine Ideen auf einer Konferenz im August 1965 vor. Dieser Vortrag wurde unter dem Titel The Next 700 Programming… …   Deutsch Wikipedia

  • ISWIM — es una notación algorítmica en el estilo de un lenguaje de programación diseñada por Peter J. Landin y descrita por primera vez en su artículo, Los próximos 700 lenguajes de programación, publicado en la revista Communications of the ACM, en 1966 …   Wikipedia Español

  • ISWIM — es una notación algorítmica en el estilo de un lenguaje de programación diseñada por Peter J. Landin y descrita por primera vez en su artículo, Los próximos 700 lenguajes de programación, publicado en la revista Communications of the ACM, en 1966 …   Enciclopedia Universal

  • ISWIM — Infobox programming language name = ISWIM paradigm = imperative, functional year = 1966 designer = Peter J. Landin developer = latest release version = latest release date = latest test version = latest test date = typing = implementations =… …   Wikipedia

  • ISWIM — ● ►en np. m. ● 1. ►LANG If you See What I Mean. Langage de programmation. ● 2. ►IRC If you See What I Mean. Si tu vois ce que je veux dire …   Dictionnaire d'informatique francophone

  • ALGOL 60 — Die Programmiersprache Algol 60 wurde von 1958–1963 unter der Führung der Association for Computing Machinery (ACM) und der Gesellschaft für Angewandte Mathematik und Mechanik (GAMM), später dann der International Federation for Information… …   Deutsch Wikipedia

  • Generation language — Quelltext eines Programms in der objektorientierten Programmiersprache Ruby. Eine Programmiersprache ist eine Notation für Computerprogramme; sie dient sowohl dazu, diese während und nach ihrer Entwicklung (Programmierung) darzustellen als auch… …   Deutsch Wikipedia

  • ML (programming language) — ML Paradigm(s) multi paradigm: imperative, functional Appeared in 1973 Designed by Robin Milner others at the University of Edinburgh Typing discipline static, strong, inferred …   Wikipedia

  • SASL (programming language) — Infobox programming language name = SASL paradigm = functional year = 1972 designer = David Turner developer = latest release version = latest release date = latest test version = latest test date = typing = implementations = dialects =… …   Wikipedia

  • Algol 60 — Die Programmiersprache Algol 60 wurde 1958–1963 unter der Führung der Association for Computing Machinery (ACM) und der Gesellschaft für Angewandte Mathematik und Mechanik (GAMM), später dann der International Federation for Information… …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»