ISWIM is an abstract computer programming language (or a family of programming languages) devised by Peter J. Landin and first described in his article, The Next 700 Programming Languages, published in the Communications of the ACM in 1966. The acronym stands for "If you See What I Mean". Although not implemented, it has proved very influential in the development of programming languages, especially functional programming languages such as SASL, Miranda, ML, Haskell and their successors.

PropertyValue
dbpprop:abstract
  • ISWIM is an abstract computer programming language (or a family of programming languages) devised by Peter J. Landin and first described in his article, The Next 700 Programming Languages, published in the Communications of the ACM in 1966. The acronym stands for "If you See What I Mean". Although not implemented, it has proved very influential in the development of programming languages, especially functional programming languages such as SASL, Miranda, ML, Haskell and their successors. I is an imperative language with a functional core, consisting of a syntactic sugaring of lambda calculus to which are added (i) mutable variables and assignment and (ii) a powerful control mechanism. Being based on lambda calculus I has higher order functions and lexically scoped variables. The operational semantics of I are defined using Landin's SECD machine and use call-by-value, that is eager evaluation. A goal of I was to look more like mathematical notation, so Landin abandoned ALGOL's semicolons between statements and blocks and replaced them with the off-side rule and scoping based on indentation. A notationally distinctive feature of I is its use of where clauses. An I program is a single expression qualified by 'where' clauses (auxiliary definitions including equations among variables), conditional expressions and function definitions. With CPL, I was one of the first programming languages to use 'where' clauses. A notable semantic feature was the ability to define new data types, as a (possibly recursive) sum of products - this was done using a somewhat verbose natural language style description, but apart from notation amounts exactly to the algebraic data types found in modern functional languages. I variables did not have explicit type declarations and it seems likely (although not explicitly stated in the 1966 paper) that Landin intended the language to be dynamically typed, like LISP and unlike ALGOL; but it is also just possible that he had in mind to develop some form of type inference. No direct implemention of I was attempted but Art Evan's PAL and John C. Reynolds' G captured most of Landin's concepts including powerful transfer-of-control operations. Both of these were dynamically typed. Milner's ML may be considered equivalent to I without the J operator and with type inference. Another line of descent from I is to strip out the imperative features (assignment and the J operator) leaving a purely functional language. It then becomes possible to switch to lazy evaluation. This path led to programming languages SASL, KRC (Kent Recursive Calculator), Hope, Miranda, Haskell, and Clean.
  • 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 Languages in den Communications veröffentlicht und übte unterschwellig einen großen Einfluss auf spätere Entwicklungen aus, ja er übertraf nach Reynolds gar den von Algol 60. Der Titel spielt auf die damals gezählten 700 Anwendungsfelder an, für die bereits 1700 Programmiersprachen existierten. Alle diese Sprachen unterschieden sich in vielen Details – auch in den Teilen, die nicht mit ihrem Anwendungsgebiet zu tun hatten. Nun hatte man durch Algol 60 gerade die Nützlichkeit einer klaren Struktur kennengelernt und verwandte es deshalb gerne auch für Anwendungen, für die es nicht entworfen worden war. Landin (1965) hatte den applikativen Kern in Algol 60 beschrieben. Nun ging er umgekehrt von diesem Kern, also einem ungetypten λ-Kalkül aus. Das Ziel ist es, diesen Kern so weit wie möglich anwendbar zu machen. Eine Konsequenz ist die Freigabe der Auswertungsreihenfolge, die bei der imperativen Programmierung bekanntlich mehr als logisch nötig festgelegt wird. Nicht angesprochen in Landins Vortrag wurde die Frage, wie ISWIM hätte erweitert werden können; er spricht allerdings von 700 Programmiersprachen und nicht von einer Programmiersprache mit 700 Erweiterungsmodulen. Tatsächlich scheint diese Frage auch erst später intensiver untersucht worden zu sein. Ebenfalls vorausgesetzt und nicht näher diskutiert wurden die imperativen Ergänzungen. Die Darstellung der Quelltext-Blockstruktur mittels Einrückung (Offside-Rule, Abseitsregel) in ISWIM wurde von einigen später entwickelten Programmiersprachen übernommen. Beispielsweise implementieren Haskell, Occam und Python die Abseitsregel.
  • 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. El nombre del lenguaje es el acrónimo de la frase en inglés "If you See What I Mean". Si bien nunca fue implementado, su influencia fue decisiva en el desarrollo de la programación funcional y se pueden contar los lenguajes SASL, Miranda y ML como sus sucesores más directos.
  • ISWIM は、Peter J. Landin が考案し、1966年の Communications of the ACM 誌で発表した The Next 700 Programming Languages で初めて明らかにした抽象プログラミング言語(あるいはプログラミング言語ファミリ)である。名称は "If you See What I Mean" の頭字語に由来する。 実装されたことはないが、その後のプログラミング言語の開発に多大な影響を与えた。特に、SASL、Miranda、ML、Haskellといった関数型言語に影響を与えている。 ISWIM は、ラムダ計算の関数型コアを命令型言語の糖衣構文で包んだものである。変更可能な変数と代入と強力な制御機構として Landin の J 演算子を追加してある(J演算子は継続を可能としたもので、Scheme の call/cc は J 演算子を簡略化したものである)。ラムダ計算に基づいているので、ISWIM は高階関数とスコープ変数を備えている。 ISWIM の操作的意味論は Landin のSECDマシンを使って定義されており、先行評価(eager evaluation)による値渡しを使っている。ISWIM の目標は、より数学的記法に近づけることであったため、Landin は ALGOL の文の区切りであったセミコロンや begin と end によるブロックを排除し、オフサイドルールによって字下げでブロックを示すようにした。 ISWIM で特徴的な記法として、節(clause)の利用がある。ISWIM プログラムは、'where' 節を使った1つの式(変数間の等式を含む補助的定義)、条件付きの式、関数定義からなる。ISWIM は、CPLと共に最初に 'where' 節を使ったプログラミング言語の1つであった。 意味論的特徴としては、既存のデータ型を組み合わせて(場合によっては再帰的に)新たなデータ型を定義可能であったことが挙げられる。これはやや冗長な自然言語的なスタイルであったが、最近の関数型言語にある代数的データ型と同じものである。ISWIM では、変数の型は明示的に宣言されず、Landin は(1966年の論文では明記していないが)動的型付けのようなものを想定していたと思われる(ALGOLよりもむしろLISPに近い)。もちろん、彼が何らかの型推論を開発することを思い描いていたとも考えられる。 ISWIM をそのまま実装する試みはなされなかったが、Art Evan の PAL や John Reynold の G は Landin の J 演算子を含む概念に影響されている。これらはどちらも動的型付けであった。Milner の ML は ISWIM から J 演算子を省いて、型推論を追加したものと評される。 ISWIM から影響を受けた別の系統として、命令型の機能(代入や J 演算子)を省いた純粋関数型言語がある。この系統は遅延評価への切り替えが可能となっている。例えば、SASL、Miranda、Haskell がその系統にあたる。
  • 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», позволяющего захватывать текущее продолжение). Благодаря λ-исчислению, в ISWIM есть функции высшего порядка и переменные с лексической областью видимости. Операционная семантика ISWIM определяется SECD (Stack, Environment, Code, Dump) машиной Лэндина и использует вызов по значению, то есть строгое вычисление. Код на ISWIM должен был выглядеть наиболее похожим на математическую нотацию, вследствие чего Лэндин убрал точку с запятой между утверждениями и блоки begin-end типичные для ALGOL и заменил их областью видимости зависимой от выравнивания. Особенной чертой в нотации ISWIM является использование where предложений. Программа на ISWIM — это единственное выражение, ограниченное утверждениями where (вспомогательные определения, включающие в себя отношения между переменными), условными выражениями и определениями функций. ISWIM — первый язык, использующий where. Примечательной семантической чертой была возможность определять новые типы данных, как (потенциально рекурсивную) сумму произведений; для этого использовалось ёмкое описание довольно сходное с естественными языками, по сути равное алгебраическим типам данных в современных функциональных языках. Переменные ISWIM не имели явных объявлений типа, это даёт основание считать (хоть и точно не указано в статье), что Лэндин планировал язык с динамической типизацией, как LISP, а не ALGOL; также возможно было развитие некоторой формы выведения типов. Как уже упоминалось, ISWIM не имеет прямых реализаций, хотя PAL Арта Эвана (Art Evan) и Gedanken Джона Рейнолда (John Reynold) использовали большинство ключевых концептов Лэндина включая мощные операции передачи управления. Оба эти языка использовали динамическую типизацию. ML Милнера (Milner) можно считать эквивалентным ISWIM без оператора «J», но с выведением типов. Другая линия продолжателей ISWIM избавилась от императивных особенностей (присваивания и «J») приводя, таким образом, к развитию чисто функциональных языков, впоследствии с переключением на ленивые вычисления. Этим путём пошли SASL, Miranda и Haskell.
  • ISWIM 是 Peter J. Landin 设计并描述于他在1966年于ACM通讯中出版的文章《The Next 700 Programming Languages》中的抽象计算机编程语言(或编程语言家族)。名称是如下首字母缩写“If you See What I Mean”。 尽管没有实现,它被证明为在编程语言特别是函数式编程语言开发中非常有影响力的语言,比如 SASL,Miranda,ML,Haskell 和它们的后继者。 ISWIM 是带有由加了糖衣的 lambda 演算组成的函数式核心的指令式语言,它增加了(i)可变变量和赋值,(ii)强力控制机制 — Landin 的 J 算子,它能够捕获当前的续体(Scheme 的 call/cc 算子是简化版本的 Landin 的 J 算子)。因为基于 lambda 演算,ISWIM 有高阶函数和词法辖域变量。 ISWIM 的操作语义是使用 Landin 的 SECD抽象机定义的,并且使用了传值调用因而是及早求值的。ISWIM 的目标之一就是看起来更像数学表示,所以 Landin 放弃了 ALGOL 的语句间分号和 begin ... end 块结构并把它们替代为越位规则和基于缩进的辖域。 ISWIM 的一个概念上的特色是使用了 where 子句。ISWIM 程序是由 where 子句(包括变量间等式的辅助定义),条件表达式和函数定义量化的一个单一表达式。与 CPL 一起,ISWIM 是最早使用 where 子句的语言之一。 显著的语义特征是有能力定义新数据类型为(可能递归的)乘积之和 - 这是使用了稍微冗余的自然语言风格描述来完成的,但是除了表示法之外完全等同于现代函数式语言中代数数据类型。ISWIM 变量没有明确的类型声明,Landin 好象(尽管在 1966 论文中没有明确的说)希望这个语言是动态类型的,像 LISP 而不像 ALGOL;但是也有可能他想要开发某种形式的类型推论。 没有尝试过 ISWIM 的直接实现,但 Art Evan 的 PAL 和 John Reynold 的 Gedanken 捕获了 Landin 的多数概念,包括强力控制转移操作。这两者都是动态类型的。Milner 的 ML 可以被认为等价于没有 J 算子和有类型推论的 ISWIM。 从 ISWIM 衍生出的另一个行列是去掉指令式特征(赋值和 J 算子)而留下纯函数式语言。接着就有可能切换到惰性求值。这条路导致了 SASL,Miranda 和 Haskell。
dbpprop:designer
dbpprop:hasPhotoCollection
dbpprop:influenced
dbpprop:name
  • ISWIM
dbpprop:paradigm
dbpprop:reference
dbpprop:wikiPageUsesTemplate
dbpprop:wordnet_type
dbpprop:year
  • 1966 (xsd:integer)
rdf:type
rdfs:comment
  • ISWIM is an abstract computer programming language (or a family of programming languages) devised by Peter J. Landin and first described in his article, The Next 700 Programming Languages, published in the Communications of the ACM in 1966. The acronym stands for "If you See What I Mean". Although not implemented, it has proved very influential in the development of programming languages, especially functional programming languages such as SASL, Miranda, ML, Haskell and their successors.
  • 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 Languages in den Communications veröffentlicht und übte unterschwellig einen großen Einfluss auf spätere Entwicklungen aus, ja er übertraf nach Reynolds gar den von Algol 60.
  • 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. El nombre del lenguaje es el acrónimo de la frase en inglés "If you See What I Mean".
  • ISWIM は、Peter J.
  • ISWIM — абстрактный язык программирования (или семейство языков программирования) описанный Питером Лэндином (Peter J. Landin) в его статье «Следующие 700 языков программирования» («The Next 700 Programming Languages»), которая была опубликована в «the Communications of the ACM» в 1966 году.
  • ISWIM 是 Peter J.
rdfs:label
  • ISWIM
  • ISWIM
  • ISWIM
  • ISWIM
  • ISWIM
  • ISWIM
owl:sameAs
skos:subject
foaf:page
is dbpprop:influencedBy of
is dbpprop:redirect of
is owl:sameAs of