LISP is a programming language designed by John McCarthy at the end of the 1950s. Its name comes from “list processing,” because the language represents both data and programs as nested lists of symbols. McCarthy laid out its theory in his 1960 paper “Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I,” published in the Communications of the ACM.
The paper builds the language out of symbolic expressions, called S-expressions, and a small set of functions that operate on them. McCarthy showed how recursive functions over these expressions could serve as a complete model of computation, an approach quite different from the step-by-step style of contemporary languages such as FORTRAN.
In his later “History of LISP,” McCarthy describes how the language took shape between roughly 1956 and 1960 and how its implementation introduced ideas that were new at the time. Among them were the uniform treatment of code and data, heavy use of recursion, and automatic memory management through garbage collection.
Because programs and data share the same list structure, LISP programs can build and manipulate other LISP programs with ease. That property, together with garbage collection and recursion, influenced many languages that followed, and LISP remains in active use as one of the oldest high-level languages still around.