Information Processing Language

Information Processing Language

Information Processing Language (IPL) is a programming language developed by Allen Newell, Cliff Shaw, and Herbert Simon at RAND Corporation and the Carnegie Institute of Technology from about 1956. Newell had the role of language specifier-application programmer, Shaw was the system programmer and Simon took the role of application programmer-user.

The language includes features intended to support programs that could perform general problem solving, including lists, associations, schemas (frames), dynamic memory allocation, data types, recursion, associative retrieval, functions as arguments, generators (streams), and cooperative multitasking. IPL pioneered the concept of list processing, albeit in an assembly-language style.

A Taste of IPL

An IPL computer has:

# a set of "symbols". All symbols are addresses, and name cells. Unlike symbols in later languages, symbols consist of a character followed by a number, and are written H1, A29, 9-7, 9-100.
## Cell names beginning with a letter are "regional", and are absolute addresses.
## Cell names beginning with "9-" are "local", and are meaningful within the context of a single list. One list's 9-1 is independent of another list's 9-1.
## Other symbols (e.g., pure numbers) are "internal".
# a set of "cells". Lists are built from several cells holding mutual references. Cells have several fields:
## P, a 3-bit field used for an operation code when the cell is used as an instruction, and unused when the cell is data.
## Q, a 3-valued field used for indirect reference when the cell is used as an instruction, and unused when the cell is data.
## SYMB, a symbol used as the value in the cell.

# a set of "primitive processes", which would be termed "primitive functions" in modern languages.

The main data structure of IPL is the list, but lists are more intricate structures than in many languages. A list consists of a singly-linked sequence of symbols, as might be expected -- plus some "description lists", which are subsidiary singly-linked lists interpreted as alternating attribute names and values. IPL provides primitives to access and mutate attribute value by name. The description lists are given local names (of the form 9-1). So, a list called L1 holding the symbols S4 and S5, and described by associating value V1 to attribute A1 and V2 to A2, would be stored as follows. 0 indicates the end of a list; the cell names 100, 101, etc. are automatically generated internal symbols whose values are irrelevant. These cells can be scattered throughout memory; only L1, which uses a regional name that must be globally known, needs to reside in a specific place.

IPL is an assembly language for manipulating lists. It has a few cells which are used as special-purpose registers. H1, for example, is the program counter. The SYMB field of H1 is the name of the current instruction. However, H1 is interpreted as a list; the LINK of H1 is, in modern terms, a pointer to the head of the call stack. For example, subroutine calls push the SYMB of H1 onto this stack.

H2 is the free-list. Procedures which need to allocate memory grab cells off of H2; procedures which are finished with memory put it on H2. On entry to a function, the list of parameters is given in H0; on exit, the results should be returned in H0. Many procedures return a boolean result indicating success or failure, which is put in H5. Ten cells, W0-W9, are reserved for public working storage. Procedures are "morally bound" (to quote the CACM article) to save and restore the values of these cells.

There are eight instructions, based on the values of P: subroutine call, push/pop S to H0; push/pop the symbol in S to the list attached to S; copy value to S; conditional branch. In these instructions, S is the target. S is either the value of the SYMB field if Q=0, the symbol in the cell named by SYMB if Q=1, or the symbol in the cell named by the symbol in the cell named by SYMB if Q=2. In all cases but conditional branch, the LINK field of the cell tells which instruction to execute next.

IPL has a library of some 150 basic operations. These include such operations as:

* Test symbols for equality
* Find, set, or erase an attribute of a list
* locate the next symbol in a list; insert a symbol in a list; erase or copy an entire list.
* Arithmetic operations (on symbol names).
* Manipulation of symbols; e.g., test if a symbol denotes an integer, or make a symbol local.
* I/O operations
* "generators", which correspond to iterators and filters in functional programming. For example, a generator may accept a list of numbers and produce the list of their squares. Generators could accept suitably-designed functions -- strictly, the addresses of code of suitably-designed functions -- as arguments.


The first application of IPL was to demonstrate that the theorems in "Principia Mathematica" which were laboriously proven by hand, by Bertrand Russell and Alfred North Whitehead, could in fact be proven by computation. According to Simon's autobiography "Models of My Life", this first application was developed first by hand simulation, using his children as the computing elements, while writing on and holding up note cards as the registers which contained the state variables of the program.

IPL was used to implement several early artificial intelligence programs, also by the same authors: the Logic Theory Machine (1956), the General Problem Solver (1957), and their computer chess program NSS (1958).

Several versions of IPL were created: IPL-I (never implemented), IPL-II (1957 for JOHNNIAC), IPL-III (existed briefly), IPL-IV, IPL-V (1958, for IBM 650, IBM 704, IBM 7090, many others. Widely used), IPL-VI.

However the language was soon displaced by Lisp, which had far more powerful features, a simpler syntax, and the benefit of automatic garbage collection.

Legacy to computer programming

IPL arguably introduced several programming language features:
* List manipulation (but only lists of atoms, not general lists)
* Property lists (but only when attached to other lists)
* Higher-order functions (except that assembly programming has always been able to compute with addresses of functions to call; IPL was an early attempt to generalize this property of assembly language and do it in a principled way.)
* Computation with symbols (except that the symbols are letter+number, not full words)
* Virtual Machine

Many of these features were generalized, cleaned up, and incorporated into Lisp [ [] ] and from there into a wide spectrum of programming languages over the next several decades.


*Newell, A. and F.C. Shaw. "Programming the Logic Theory Machine." Feb. 1957. Proceedings of the Western Joint Computer Conference, pp. 230-240.
*Newell, Allen, and Fred M. Tonge. 1960. "An Introduction to Information Processing Language V." CACM 3(4): 205-211.
*Newell, Allen. 1964. Information processing language-v manual; Second Edition. Rand Corporation [Allen Newell] , Englewood Cliffs, NJ: Prentice-Hall.


* [ Allen Newell] , Herbert A. Simon, Biographical Memoirs, National Academy of Sciences - includes a short section on IPL.
* [ History of Programming Languages: IPL]
* [ Information Processing Language] , FOLDOC
* [] IPL documents from BitSavers.
* [] influence of IPL on LISP.

ee also

* Metamath, a project using computer-verified proofs.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Information processing — is the change (processing) of information in any manner detectable by an observer. As such, it is a process which describes everything which happens (changes) in the universe, from the falling of a rock (a change in position) to the printing of a …   Wikipedia

  • information processing — Acquisition, recording, organization, retrieval, display, and dissemination of information. Today the term usually refers to computer based operations. Information processing consists of locating and capturing information, using software to… …   Universalium

  • Information Processing and Information Systems — ▪ 1995       Sweeping change marked the U.S. computer industry in 1994 as longtime players exited the stage and rival systems struggled to dominate the next generation of personal computer (PC) operating systems and microprocessors. The industry… …   Universalium

  • information processing — noun the sciences concerned with gathering, manipulating, storing, retrieving, and classifying recorded information • Syn: ↑information science, ↑informatics, ↑IP • Members of this Topic: ↑queue • Hypernyms: ↑science, ↑ …   Useful english dictionary

  • International Federation for Information Processing — The International Federation for Information Processing, usually known as IFIP, is an umbrella organization for national societies working in the field of information technology. It is a non governmental, non profit organization with offices in… …   Wikipedia

  • Language module — refers to a hypothesized structure in the human brain (anatomical module) or cognitive system (functional module) that some psycholinguists (e.g., Steven Pinker) claim contains innate capacities for language. According to Jerry Fodor the sine qua …   Wikipedia

  • Information Awareness Office — seal The Information Awareness Office (IAO) was established by the Defense Advanced Research Projects Agency (DARPA) in January 2002 to bring together several DARPA projects focused on applying surveillance and information technology to track and …   Wikipedia

  • Processing (programming language) — Processing Paradigm(s) object oriented Appeared in 2001; 9 years ago (2001) …   Wikipedia

  • Information — as a concept has a diversity of meanings, from everyday usage to technical settings. Generally speaking, the concept of information is closely related to notions of constraint, communication, control, data, form, instruction, knowledge, meaning,… …   Wikipedia

  • Processing — Apparu en 2001 Auteurs Ben Fry et Casey Reas …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”