The Next 700 Programming Languages
   HOME

TheInfoList



OR:

ISWIM (
acronym An acronym is a word or name formed from the initial components of a longer name or phrase. Acronyms are usually formed from the initial letters of words, as in ''NATO'' (''North Atlantic Treaty Organization''), but sometimes use syllables, as ...
for If you See What I Mean) is an abstract computer
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
(or a family of languages) devised by
Peter Landin Peter John Landin (5 June 1930 – 3 June 2009) was a British computer scientist. He was one of the first to realise that the lambda calculus could be used to model a programming language, an insight that is essential to the development of both ...
and first described in his article "The Next 700 Programming Languages", published in the
Communications of the ACM ''Communications of the ACM'' is the monthly journal of the Association for Computing Machinery (ACM). It was established in 1958, with Saul Rosen as its first managing editor. It is sent to all ACM members. Articles are intended for readers with ...
in 1966. Although not implemented, it has proved very influential in the development of programming languages, especially
functional programming In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declar ...
languages such as SASL, Miranda, ML, Haskell and their successors, and
dataflow programming In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share ...
languages like
Lucid LUCID (Langton Ultimate Cosmic ray Intensity Detector) is a cosmic ray detector built by Surrey Satellite Technology Ltd and designed at Simon Langton Grammar School for Boys, in Canterbury, England. Its main purpose is to monitor cosmic rays usi ...
.


Design

ISWIM is an
imperative programming In computer science, imperative programming is a programming paradigm of software that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program c ...
language with a functional core, consisting of a syntactic sugaring of
lambda calculus Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation ...
to which are added mutable variables and assignment and a powerful control mechanism: the ''program point'' operator. Being based on lambda calculus, ISWIM has
higher-order function In mathematics and computer science, a higher-order function (HOF) is a function that does at least one of the following: * takes one or more functions as arguments (i.e. a procedural parameter, which is a parameter of a procedure that is itself ...
s and
lexically scoped In computer programming, the scope of a name binding (an association of a name to an entity, such as a variable) is the part of a program where the name binding is valid; that is, where the name can be used to refer to the entity. In other parts o ...
variables. The operational semantics of ISWIM are defined using Landin's
SECD machine The SECD machine is a highly influential (''see: '') virtual machine and abstract machine intended as a target for functional programming language compilers. The letters stand for Stack, Environment, Control, Dump—the internal registers of the mac ...
and use call-by-value, that is eager evaluation. A goal of ISWIM was to look more like mathematical notation, so Landin abandoned ALGOL's semicolons between statements and begin ... end blocks and replaced them with the off-side rule and scoping based on indentation. A notationally distinctive feature of ISWIM is its use of ''where'' clauses. An ISWIM program is a single expression qualified by ''where'' clauses (auxiliary definitions including equations among variables), conditional expressions and function definitions. Along with CPL, ISWIM 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. ISWIM 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 possible that he intended to develop some form of
type inference Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics ...
.


Implementations and derivatives

No direct implementation of ISWIM was attempted but Art Evan's language '' PAL'', and
John C. Reynolds John Charles Reynolds (June 1, 1935 – April 28, 2013) was an American computer scientist. Education and affiliations John Reynolds studied at Purdue University and then earned a Doctor of Philosophy (Ph.D.) in theoretical physics from Harvard U ...
' language ''Gedanken'', captured most of Landin's concepts, including powerful transfer-of-control operations. Both of these were typed dynamically. Robin Milner's ML may be considered equivalent to ISWIM without the
J operator In computer science, Peter Landin's J operator is a programming construct that Function composition, post-composes a Lambda (programming), lambda expression with the continuation to the current lambda-context. The resulting “function” is first ...
and with
type inference Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics ...
. Another line of descent from ISWIM 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, Kent Recursive Calculator (KRC),
Hope Hope is an optimistic state of mind that is based on an expectation of positive outcomes with respect to events and circumstances in one's life or the world at large. As a verb, its definitions include: "expect with confidence" and "to cherish ...
, Miranda, Haskell, and Clean.


References

{{Reflist Programming languages created in 1966 Academic programming languages Experimental programming languages Functional languages History of computing in the United Kingdom