LISP

views updated Jun 08 2018

LISP

LISP, an acronym for LISt Processing, is a programming language developed by John McCarthy in the late 1950s. Although LISP is a general-purpose language, it is often thought of as a language solely for artificial intelligence (AI) programming, for which it is often used. AI programming often deals with symbolic processing that the standard programming languages are ill-prepared to handle. Symbolic processing focuses on the representation of real-world concepts and on the relationships among the objects rather than numeric processing.

At the time that LISP was under development, other AI programming languages were being developed with rather informal approaches. McCarthy, a mathematician, wanted to establish a firm scientific foundation for LISP. That foundation came from formal logic. American logician Alonzo Church (19031995) had developed a clear and unambiguous means of describing the inputs and internal computations of functions. The lambda calculus notation provided McCarthy, a student of Church's, with a well-defined basis on which to establish this new programming language.

Pure LISP is an example of a functional programming language. In functional programming, functions are applied to arguments and the values that are returned are used as arguments to other functions. Functional programming contrasts with standard or procedural programming, which uses statements that change the program environment in some way, such as assigning a value to a variable. In functional programming, these changes to the environment are minimized by using the values returned by function calls as direct input to other functions without using assignment statements.

As its name implies, the primary data structure in LISP is the list, although it does support a wide variety of data types such as integers, floating point numbers, characters, and strings, as well as user-defined data types. The list is a simple yet flexible data structure. In LISP, a list consists of any number of data elements surrounded by a set of parentheses. For example, a set of integers could be represented by this list: (1 2 3 4 5). But lists can represent more complicated objects. A list representing a record of a person's name, height in inches, and weight in pounds would be expressed as (John 72 180).

Lists can contain any type of LISP object, even other lists. Several lists like the one noted earlier, each containing data for one person, could be grouped together in an outer list to represent the height and weight of the members of a sports team, for example. The use of lists in this fashion, along with LISP's list access and retrieval functions, can result in a simple database. Lists can also represent more complicated data structures such as trees and graphs through the use of a more complicated nesting of lists.

The reliance on the list data structure results in a relatively simple syntax . With a few exceptions, parentheses are the only punctuation needed. This means that all LISP function definitions are written as lists. Since all LISP programs are written as lists, and since LISP contains a myriad of functions that manipulate lists, LISP programs can serve as data to other LISP programs. This means that LISP programs can use other LISP programs as data to produce new programs.

Not only does the syntax of LISP make it easy to do things that are inherently difficult to do in other programming languages, the LISP programming environment is well suited to the exploratory type of programming that artificial intelligence projects demand. These programming problems are often ill-defined at the outset and are not usually developed in the standard algorithmic manner. They require an exploratory approach that involves successively refining a series of prototypes . The demand for fast prototyping requires an environment that makes it easy for the programmer to develop and revise programs.

Although LISP programs can be compiled in order to speed up program execution, LISP is most often used as an interpreted language. The interpretive environment can considerably shorten development time by allowing programs to be written, debugged, tested, and modified at any time, even while the program itself is running. This avoids the long re-compile time associated with large programs written in other languages and facilitates the development of AI programs.

LISP has long supported facilities that are only recently being incorporated into other programming languages such as a rich object system and function overloading, which is facilitated by run-time type checking. Runtime type checking frees the programmer from declaring a data type for each variable. The type of a variable is one of several pieces of information that LISP maintains about every object in the environment.

see also Artificial Intelligence; Procedural Languages.

Cynthia J. Martincic

Bibliography

Church, Alonzo. "The Calculi of Lambda Conversion." In Annals of Mathematical Studies, vol. 6. Princeton, NJ: Princeton University Press, 1941.

McCarthy, John. "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I." Communications of the ACM 3, no. 4 (1960): 185-195.

LISP

views updated May 29 2018

LISP Acronym for list processing. A programming language designed for the manipulation of nonnumeric data. The basic data structure is a list whose elements are either atomic symbols or lists. An unusual feature of LISP is that programs are also expressed as lists, i.e. the programs and the data they manipulate have an identical structure. Pure LISP is a functional language, having no assignment operator. The original LISP 1.5 developed into two distinct dialects, FranzLisp and MACLisp, but these have been combined to form Common LISP. LISP is the language used for much artificial intelligence research. See also EuLisp.

lisp

views updated May 21 2018

lisp / lisp/ • n. a speech defect in which s is pronounced like th in thick and z is pronounced like th in this.• v. [intr.] speak with a lisp.DERIVATIVES: lisp·er n. lisp·ing·ly adv.

Lisp

views updated Jun 11 2018

Lisp / lisp/ (also LISP) • n. a high-level computer programming language devised for list processing.

lisp

views updated May 21 2018

lisp speak with defective (sibilant) utterance. OE. *wilispian (only in āwlyspian), f. wlisp, wlips adj. lisping; cf. MLG. wlispen, wilspen (Du. lispen), OHG. lisp stammering, lispen lisp (G. lispeln); imit.

LISP

views updated May 11 2018

LISP (lɪsp) Computing list processing (a programming language)