Content deleted Content added
Omnipaedista (talk | contribs) correction |
m Removing Category:Management cybernetics per Wikipedia:Categories for discussion/Log/2025 July 10#Category:Management cybernetics |
||
(32 intermediate revisions by 21 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''.
# A set of ''cells''. Lists are
## 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.
Line 36 ⟶ 37:
# A set of ''primitive processes'', which would be termed ''primitive functions'' in modern languages.
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''
* ''Computation with symbols''
* ''Virtual machine''
Many of these features were generalized,
==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==
Line 114 ⟶ 229:
* [http://bitsavers.org/pdf/rand/ipl/ IPL documents from BitSavers]
* [http://www-formal.stanford.edu/jmc/history/lisp/node2.html Influence of IPL on LISP]
* [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]]
|