Content deleted Content added
→History: Added model Tags: Mobile edit Mobile web edit |
m Removing Category:Management cybernetics per Wikipedia:Categories for discussion/Log/2025 July 10#Category:Management cybernetics |
||
(35 intermediate revisions by 23 users not shown) | |||
Line 1:
{{Short description|Early programming language for lists}}
{{More citations needed|date=January 2022}}
{{Infobox programming language
| name = Information Processing Language (IPL)
Line 6 ⟶ 8:
| designer =[[Allen Newell]], [[Cliff Shaw]], [[Herbert A. Simon]]
| developer =Allen Newell, Cliff Shaw, Herbert A. Simon
| latest_release_version =IPL-
| latest release date = <!-- {{start date and age|1959?|MM|DD|df=yes}} -->
| typing =
Line 18 ⟶ 20:
| file_ext =
}}
'''Information Processing Language''' ('''IPL''') is a [[programming language]] created by [[Allen Newell]], [[Cliff Shaw]], and [[Herbert A. Simon]] at [[RAND Corporation]] and the [[Carnegie Institute of Technology]]
==
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
## Other symbols (e.g., pure numbers) are ''internal''.
#
## 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.
#
The 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
{|style="font-family:monospace; margin: 1em auto" class="wikitable"
|+ IPL-V List Structure Example
|-
!Name !! SYMB !! LINK
Line 60:
|203 || V2 || 0
|}
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
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.
Line 68 ⟶ 67:
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
*
* 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
* "
==
IPL was first utilized to demonstrate that the theorems in ''[[Principia Mathematica]]'' which were
IPL was used to implement several early [[artificial intelligence]] programs, also by the same authors: the [[Logic Theorist]] (1956), the [[General Problem Solver]] (1957), and their [[computer chess]] program [[NSS (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]], [[Philco model 212]], many others. Widely used)
A co-processor “IPL-VC” for the CDC 3600 at Argonne National Libraries was developed which could run IPL-V commands.{{sfn|Hodges|1964}}{{sfn|Sammet|1969|p=393–394}} It was used to implement another checker-playing program.{{sfn|Cowell|Reed|1965}} This hardware implementation did not improve running times sufficiently to “compete favorably with a language more directly oriented to the structure of present-day machines”.{{sfn|Carson|Robinson|1966|p=5}}
IPL was soon displaced by [[Lisp (programming language)|Lisp]], which had much more powerful features, a simpler syntax, and the benefit of automatic [[garbage collection (computer science)|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''—while assembly programming had always allowed computing with the addresses of functions, IPL was an early attempt to generalize this property of assembly language in a principled way
* ''Computation with symbols''—though symbols have a restricted form in IPL (letter followed by number)
* ''Virtual machine''
Many of these features were generalized, rationalized, and incorporated into Lisp<ref>[http://www-formal.stanford.edu/jmc/history/lisp/node2.html John McCarthy (1979) ''History of Lisp'' "LISP prehistory - Summer 1956 through Summer 1958."]</ref> and from there into many other programming languages during the next several decades.
==References==
{{Reflist}}
==Sources==
* {{cite report
|author1-first=Daniel F.
|author1-last=Carson
|author2-first=George A.
|author2-last=Robinson
|date=May 1966
|title=Gyro II, A Macro-Defined System for List Processing
|id=ANL-7149
|publisher=Applied Mathematics Division, Argonne National Laboratories}}
* {{cite report
|author1-first=W. R.
|author1-last=Cowell
|author2-first=M. C.
|author2-last=Reed
|date=October 1965
|title=A Checker-Playing Program for the IPL-VC Computer
|id=ANL-7109
|publisher=Applied Mathematics Division, Argonne National Laboratories}}
* {{cite report
|author-first=Donald
|author-last=Hodges
|date=May 1964
|title=IPL-VC: A Computer System having the IPL-V Instruction Set
|id=ANL-6888
|publisher=Applied Mathematics Division, Argonne National Laboratories}}
* {{cite book
|author-last=Sammet
|author-first=Jean E.
|title=Programming languages: history and fundamentals
|publisher=Prentice Hall
|___location=Englewood Cliffs, N.J.
|year=1969
|pages=388{{en dash}}400}}
* {{cite conference
|author1-last=Shaw
|author1-first=J. C.
|author2-last=Newell
|author2-first=A.
|author3-last=Simon
|author3-first=H. A.
|author4-last=Ellis
|author4-first=T. O.
|title=A Command Structure for Complex Information Processing
|date=1958
|publisher=Association for Computing Machinery
|isbn=9781450378642
|doi=10.1145/1457769.1457803
|book-title=Proceedings of the May 6–8, 1958, Western Joint Computer Conference: Contrasts in Computers
|series=IRE-ACM-AIEE '58 (Western)
|pages=119{{endash}}128}}
==Further reading==
* {{cite conference
|author-last1=Newell
|author-first1=Allen
|author-last2=Shaw
|author-first2=J. C.
|title=Programming the Logic Theory Machine
|year=1957
|publisher=Association for Computing Machinery
|isbn=9781450378611
|book-title=Papers Presented at the February 26–28, 1957, Western Joint Computer Conference: Techniques for Reliability
|pages=230–240
|conference=IRE-AIEE-ACM '57 (Western)
|doi=10.1145/1455567.1455606|doi-access=free
}}
* {{cite journal
|author-last1=Newell
|author-first1=Allen
|author-last2=Tonge
|author-first2=Fred M.
|title=An Introduction to Information Processing Language V
|year=1960
|publisher=Association for Computing Machinery
|___location=New York, NY, USA
|volume=3
|number=4
|issn=0001-0782
|doi=10.1145/367177.367205
|journal=Communications of the ACM
|pages=205–211|s2cid=16609075
|doi-access=free
}}
* {{cite book
|author-last1=Newell
|author-first1=Allen
|author-last2=Tonge
|author-first2=Fred M.
|author-last3=Feigenbaum
|author-first3=Edward A.
|author-last4=Green Jr.
|author-first4=Bert F.
|author-last5=Mealy
|author-first5=George H.
|display-authors=2
|title=Information Processing Language-V Manual
|publisher=Prentice Hall
|___location=Englewood Cliffs, N.J.
|year=1964}}
* {{cite book
|author-last=Samuel
|author-first=Arthur L.
|title=Advances in Computers Volume 1
|chapter=Programming Computers to Play Games
|volume=1
|editor-last=Alt
|editor-first=Franz L.
|publisher=Elsevier
|pages=165–192
|year=1960
|issn=0065-2458
|doi=10.1016/S0065-2458(08)60608-7|isbn=9780120121014
}}
==External links==
* [https://web.archive.org/web/20050101091320/http://stills.nap.edu/readingroom/books/biomems/anewell.html Allen Newell
* [http://bitsavers.org/pdf/rand/ipl/
* [http://www-formal.stanford.edu/jmc/history/lisp/node2.html
* [https://github.com/jeffshrager/IPL-V A Common LISP interpreter for IPL-V, including a working transcription of the Logic Theory Machine (actively under development in 2025)]
{{Authority control}}
[[Category:Procedural programming languages]]
|