Lisp
Programming languages are not natural features of the computer landscape, though students are often expected to study them as if they were. They have histories; they are invented, struggle for popularity, and eventually decline. Very few languages have been in steady use since the early 1960s, and LISP is one of them. (FORTRAN is another.)
LISP stands for LISt Processing language. Despite its specialized-sounding name, LISP is a general-purpose programming language like C, FORTRAN, and scores of others. Programs can be written in LISP to do whatever other computer languages do. As a result of this broad overlap, there is often debate among programmers about which language is best for this or that programming job. LISP was, however, invented in the late 1950s as a tool for research in artificial intelligence (AI). Its still one of the most commonly used languages in AI research, and is usually characterized as an AI language.
The fundamental LISP concept, that of the "list," is much like our everyday concept of a list: a collection of symbols that may or may not be in a special order. A LISP list can include words, numbers, commands, mathematical operators, or even lists--any symbolic entity or computable action that can be pointed to by a symbol or a group of symbols. In LISP, lists are set off by parentheses, so a sample LISP list containing four items (the names of four programming languages) looks like this:
The single quote in front of this list indicates that this is a passive or literal list, and that it contains no operators--no special commands that the computer must obey. This list does contain an operator:
Notice the absence of a quote mark, which signals to LISP that it should look for an operator at the beginning of this list. The operator is "+," and LISP would process this list (or "evaluate" it, that is, run this one-line LISP program) to obtain 2 + 3 + 3 = 8. A list containing a list is as follows:
- (cat cow horse (beagle terrier mutt))
The power of the list concept begins to appear: the parentheses enclosing a LISP list are very similar to the brackets which, in logic and set theory, enclose the elements of a set. To process lists is akin to manipulating sets. Lists, however, are more general than sets because sets are passive, whereas lists can include commands. What's more, a LISP program may be self-manipulating; LISP is designed to view LISP programs themselves as lists which can be processed. LISP has therefore been characterized as a "programmable programming language." Most programming languages do not have this ability; a FORTRAN program, for instance, is a fixed series of instructions alterable only by the programmer before being run. LISP's ability to adapt while running is another feature which suits it for AI research.
LISP's inventor, John McCarthy, has stated that his "desire to develop an algebraic list processing language for artificial intelligence work" arose in the summer of 1956 while in attendance at an AI conference at Dartmouth College. He even had a specific computer in mind: the IBM 704. IBM was planning to donate an IBM 704 to the Massachusetts Institute of Technology which Dartmouth would be allowed to use--though delivery was not expected for another year. (Some idea of the extreme cost and rarity of individual computers at this period may be formed from these facts.) Much early design work on LISP was therefore done with pencil and paper. Over the years many different versions of LISP proliferated, so many that in the early 1980s the Defense Advanced Research Projects Agency (DARPA, birthplace of the Internet) sponsored a meeting to define a common LISP dialect. The result was Common LISP, which is widely used today. A number of free LISP compilers for PC may be downloaded from the Web by anyone who wishes to learn the language.
This is the complete article, containing 648 words
(approx. 2 pages at 300 words per page).