information processing language - wikipedia, the free encyclopedia

Upload: beta2009

Post on 14-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 Information Processing Language - Wikipedia, The Free Encyclopedia

    1/4

    Information Processing Language

    (IPL)

    Paradigm(s) assembly

    Appeared in 1954

    Designed by Allen Newell, Cliff Shaw, Herbert A.

    Simon

    Developer Allen Newell, Cliff Shaw, Herbert A.

    Simon

    Stable

    release

    IPL-VI

    Influenced Lisp

    OS Cross-platform: JOHNNIAC, IBM

    650, IBM 704, IBM 7090

    nformation Processing Languagem Wikipedia, the free encyclopedia

    ormation Processing Language (IPL) is a programming

    guage developed by Allen Newell, Cliff Shaw, and Herbert A.

    mon at RAND Corporation and the Carnegie Institute of

    chnology around 1956. Newell had the role of language specifier-

    plication programmer, Shaw was the system programmer, and

    mon took the role of application programmer-user.

    e language includes features intended to support programs that

    uld perform general problem solving, including lists, associations,

    emas (frames)[This?], dynamic memory allocation, data types,

    ursion, associative retrieval, functions as arguments, generators

    eams), and cooperative multitasking. IPL pioneered the concept

    ist processing, albeit in an assembly-language style.

    Contents

    1 A taste of IPL

    2 History

    3 Legacy to computer programming

    4 Publications

    5 References

    taste of IPL

    IPL computer has:

    1. a set ofsymbols. 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.

    1. Cell names beginning with a letter are regional, and are absolute addresses.

    2. 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.

    3. Other symbols (e.g., pure numbers) areinternal.2. a set ofcells. Lists are built from several cells holding mutual references. Cells have several fields:

    1. 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.

    2. Q, a 3-valued field used for indirect reference when the cell is used as an instruction, and unused when the cell

    is data.

    3. SYMB, a symbol used as the value in the cell.

    3. a set ofprimitive processes, which would be termedprimitive functions in modern languages.

    e main data structure of IPL is the list, but lists are more intricate structures than in many languages. A list consists of a

    gly linked sequence of symbols, as might be expected -- plus some description lists, which are subsidiary singly linked

    s interpreted as alternating attribute names and values. IPL provides primitives to access and mutate attribute value by

    me. The description lists are given local names (of the form 9-1). So, a list called L1 holding the symbols S4 and S5, and

    cribed by associating value V1 to attribute A1 and V2 to A2, would be stored as follows. 0 indicates the end of a list;

    http://en.wikipedia.org/wiki/Cooperative_multitaskinghttp://en.wikipedia.org/wiki/Frame_languagehttp://en.wikipedia.org/wiki/Dynamic_memory_allocationhttp://en.wikipedia.org/wiki/Dynamic_memory_allocationhttp://en.wikipedia.org/wiki/Data_typehttp://en.wikipedia.org/wiki/Software_developerhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Carnegie_Institute_of_Technologyhttp://en.wikipedia.org/wiki/Carnegie_Institute_of_Technologyhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Assembly_languagehttp://en.wikipedia.org/wiki/Cooperative_multitaskinghttp://en.wikipedia.org/wiki/Subroutinehttp://en.wikipedia.org/wiki/Recursion_(computer_science)http://en.wikipedia.org/wiki/Data_typehttp://en.wikipedia.org/wiki/Dynamic_memory_allocationhttp://en.wikipedia.org/wiki/Frame_languagehttp://en.wikipedia.org/wiki/Carnegie_Institute_of_Technologyhttp://en.wikipedia.org/wiki/RAND_Corporationhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Cliff_Shawhttp://en.wikipedia.org/wiki/Allen_Newellhttp://en.wikipedia.org/wiki/Programming_languagehttp://en.wikipedia.org/wiki/IBM_7090http://en.wikipedia.org/wiki/IBM_704http://en.wikipedia.org/wiki/IBM_650http://en.wikipedia.org/wiki/JOHNNIAChttp://en.wikipedia.org/wiki/Cross-platformhttp://en.wikipedia.org/wiki/Operating_systemhttp://en.wikipedia.org/wiki/Lisp_(programming_language)http://en.wikipedia.org/wiki/Software_release_life_cyclehttp://en.wikipedia.org/wiki/Software_developerhttp://en.wikipedia.org/wiki/Herbert_A._Simonhttp://en.wikipedia.org/wiki/Cliff_Shawhttp://en.wikipedia.org/wiki/Allen_Newellhttp://en.wikipedia.org/wiki/Assembly_languagehttp://en.wikipedia.org/wiki/Programming_paradigm
  • 7/29/2019 Information Processing Language - Wikipedia, The Free Encyclopedia

    2/4

    cell names 100, 101, etc. are automatically generated internal symbols whose values are irrelevant. These cells can be

    ttered throughout memory; only L1, which uses a regional name that must be globally known, needs to reside in a

    cific place.

    L-V List Structure

    Example

    ame SYMB LINK

    9-1 100

    0 S4 101

    1 S5 0

    1 0 200

    0 A1 201

    1 V1 202

    2 A2 203

    3 V2 0

    L is an assembly language for manipulating lists. It has a few cells which are used as special-purpose registers. H1, for

    mple, is the program counter. The SYMB field of H1 is the name of the current instruction. However, H1 is interpreteda list; the LINK of H1 is, in modern terms, a pointer to the head of the call stack. For example, subroutine calls push the

    MB of H1 onto this stack.

    is the free-list. Procedures which need to allocate memory grab cells off of H2; procedures which are finished with

    mory 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

    . Many procedures return a boolean result indicating success or failure, which is put in H5. Ten cells, W0-W9, are

    erved for public working storage. Procedures are "morally bound" (to quote the CACM article) to save and restore the

    ues of these cells.

    ere are eight instructions, based on the values of P: subroutine call, push/pop S to H0; push/pop the symbol in S to the listached to S; copy value to S; conditional branch. In these instructions, S is the target. S is either the value of the SYMB

    d 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

    SYMB if Q=2. In all cases but conditional branch, the LINK field of the cell tells which instruction to execute next.

    L 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.

    istory

    e first application of IPL was to demonstrate that the theorems inPrincipia Mathematica which were laboriously

    ven by hand, by Bertrand Russell and Alfred North Whitehead, could in fact be proven by computation. According to

    mon's autobiographyModels of My Life, this first application was developed first by hand simulation, using his children as

    computing elements, while writing on and holding up note cards as the registers which contained the state variables of

    program.

    http://en.wikipedia.org/wiki/Automated_theorem_provinghttp://en.wikipedia.org/wiki/Alfred_North_Whiteheadhttp://en.wikipedia.org/wiki/Bertrand_Russellhttp://en.wikipedia.org/wiki/Principia_Mathematicahttp://en.wikipedia.org/wiki/Assembly_language
  • 7/29/2019 Information Processing Language - Wikipedia, The Free Encyclopedia

    3/4

    L was used to implement several early artificial intelligence programs, also by the same authors: the Logic Theorist

    56), the General Problem Solver (1957), and their computer chess program NSS (1958).

    veral versions of IPL were created: IPL-I (never implemented), IPL-II (1957 for JOHNNIAC), IPL-III (existed briefly),

    L-IV, IPL-V (1958, for IBM 650, IBM 704, IBM 7090, many others. Widely used), IPL-VI.

    wever the language was soon displaced by Lisp, which had far more powerful features, a simpler syntax, and the benefit

    automatic garbage collection.

    egacy to computer programmingL 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 in a principled way

    Computation with symbols except that the symbols are letter+number, not full words

    Virtual machine

    ny of these features were generalized, cleaned up, and incorporated into Lisp[1] and from there into a wide range of

    gramming languages over the next several decades.

    ublications

    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.

    Samuel, Arthur L.: Programming Computers to Play Games. In: Advances in Computers, Vol. 1, 1960, pp 165-192

    (esp.: 171-175).

    eferences

    1. ^ John McCarthy (1979)History of Lisp "LISP prehistory - Summer 1956 through Summer 1958." (http://www-

    formal.stanford.edu/jmc/history/lisp/node2.html)

    s article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and

    orporated under the "relicensing" terms of the GFDL, version 1.3 or later.

    Allen Newell (http://stills.nap.edu/readingroom/books/biomems/anewell.html), Herbert A. Simon, Biographical

    Memoirs, National Academy of Sciences - includes a short section on IPL.

    History of Programming Languages: IPL (http://hopl.murdoch.edu.au/showlanguage.prx?exp=13&language=IPL)

    Information Processing Language (http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?Information+Processing+Language),

    FOLDOC

    [1] (http://bitsavers.org/pdf/rand/ipl/) IPL documents from BitSavers.[2] (http://www-formal.stanford.edu/jmc/history/lisp/node2.html) influence of IPL on LISP.

    rieved from "http://en.wikipedia.org/w/index.php?title=Information_Processing_Language&oldid=558693587"

    tegories: Procedural programming languages History of artificial intelligence Programming languages created in 1954

    http://en.wikipedia.org/wiki/Help:Categoryhttp://en.wikipedia.org/w/index.php?title=Information_Processing_Language&oldid=558693587http://www-formal.stanford.edu/jmc/history/lisp/node2.htmlhttp://bitsavers.org/pdf/rand/ipl/http://en.wikipedia.org/wiki/Free_On-line_Dictionary_of_Computinghttp://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?Information+Processing+Languagehttp://hopl.murdoch.edu.au/showlanguage.prx?exp=13&language=IPLhttp://stills.nap.edu/readingroom/books/biomems/anewell.htmlhttp://en.wikipedia.org/wiki/GNU_Free_Documentation_Licensehttp://en.wikipedia.org/wiki/Free_On-line_Dictionary_of_Computinghttp://www-formal.stanford.edu/jmc/history/lisp/node2.htmlhttp://en.wikipedia.org/wiki/Garbage_collection_(computer_science)http://en.wikipedia.org/wiki/Lisp_programming_languagehttp://en.wikipedia.org/wiki/IBM_7090http://en.wikipedia.org/wiki/IBM_704http://en.wikipedia.org/wiki/IBM_650http://en.wikipedia.org/wiki/JOHNNIAChttp://en.wikipedia.org/w/index.php?title=NSS_(chess_program)&action=edit&redlink=1http://en.wikipedia.org/wiki/Computer_chesshttp://en.wikipedia.org/wiki/General_Problem_Solverhttp://en.wikipedia.org/wiki/Logic_Theoristhttp://en.wikipedia.org/wiki/Artificial_intelligencehttp://en.wikipedia.org/wiki/Category:Programming_languages_created_in_1954http://en.wikipedia.org/wiki/Category:History_of_artificial_intelligencehttp://en.wikipedia.org/wiki/Category:Procedural_programming_languages
  • 7/29/2019 Information Processing Language - Wikipedia, The Free Encyclopedia

    4/4

    This page was last modified on 7 June 2013 at 01:37.

    Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using

    this site, you agree to the Terms of Use and Privacy Policy.

    Wikipedia is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.

    http://www.wikimediafoundation.org/http://wikimediafoundation.org/wiki/Privacy_policyhttp://wikimediafoundation.org/wiki/Terms_of_Usehttp://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License