Lisp and its friends are languages that mix features of functional and imperative programming styles along with lots of parentheses. These days, there are three major Lisp dialects in common use:
What is Lisp? John McCarthy, initial inventor of Lisp, wrote the following back in 1980, LISP - Notes on its Past and Future - 1980
As a programming language, LISP is characterized by the following ideas:
Computing with symbolic expressions rather than numbers.
Representation of symbolic expressions and other information by list structure in computer memory.
Representation of information on paper, from keyboards and in other external media mostly by multi-level lists and sometimes by S-expressions. It has been important that any kind of data can be represented by a single general type.
A small set of selector and constructor operations expressed as functions, i.e. car, cdr and cons.
Composition of functions as a tool for forming more complex functions.
The use of conditional expressions for getting branching into function definitions.
The recursive use of conditional expressions as a sufficient tool for building computable functions.
The use of lambda-expressions for naming functions.
The storage of information on the property lists of atoms.
The representation of LISP programs as LISP data that can be manipulated by object programs. This has prevented the separation between system programmers and application programmers. Everyone can "improve" his LISP, and many of these "improvements" have developed into improvements to the language.
The conditional expression interpretation of Boolean connectives.
The LISP function eval
that serves both as
a formal definition of the language and as an
interpreter.
Garbage collection as the means of erasure.
Minimal requirements for declarations so that LISP statements can be executed in an on-line environment without preliminaries.
LISP statements as a command language in an on-line environment.
Ignorant people commonly assert that " Lisp is interpreted, and hence a slow language"; if we go back to the original Lisp 1.5 documentation , we discover that Lisp was intended for use with compilers even from the very beginning.