Information Processing Language (IPL) was a programming language developed by Allen Newell, Cliff Shaw and Herbert Simon at RAND Corporation and the Carnegie Institute of Technology from about 1956. It included 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, and generators (streams). Newell had the role of language specifier/application programmer, Shaw was the system programmer and Simon took the role of application programmer/user.
IPL was used to implement two of the first artificial intelligence programs, by the same authors: the Logic Theory Machine (1956) and the General Problem Solver (1957), and also their chess program NSS (1958).
IPL pioneered the concept of list processing.
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.
To this day in the CRC method, object-oriented programmers still use note cards to encapsulate simple attributes of the roles played by the programmed objects.
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.