Content-Type: text/html
It is notable for having a large amount of [reflexive power]?, Lisp programs are in the form of Lisp data (lists). It is therefore very easy to write Lisp programs that read, write, and manipulate Lisp programs. In many Lisp languages this is made use of in the macro? system.
The language was invented by [John McCarthy]? in 1958? whilst he was at MIT; he published a paper in CACM? in 1960? titled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I" (part II was never published). The initial implementation was on an [IBM 704]? and two instructions of that machine became the primitive Lisp operations for decomposing lists: CAR (Contents of Address Register) and CDR (Contents of Data Register) are the operations for returning the head and tail of a list respectively.
In McCarthy?'s paper he introduces two syntaxes: S-expressions? (symbolic expressions, sometimes called "sexp"s) and M-expressions? (meta expressions, for expressing functions of S-expressions). M-expressions never found favour and pretty much all Lisps today use S-expressions for both programs and data. It is the S-expression syntax that is responsible for Lisp commonly being criticised as being "full of parentheses".
[Lisp machine]?s, [Symbolics Lisp Machine]?, AI research.
During the 1980s and 1990s there was a great effort made to unify the many varied Lisp dialects that had sprung up. The new language was to be called Common Lisp. In 1994? ANSI published "ANSI X3.226-1994 Information Technology Programming Language Common Lisp" effectively standardising the language. Unfortunately the world market for Lisp was much smaller than in its hey day.
Factorial seems to be the first program that lots of Lisp hackers learn:
(defun factorial (a) (if (<= a 1) 1 (* a (factorial (- a 1))) ) )
The language is still in use in 2001 and is therefore the amongst the oldest programming language still currently in use (as of writing in 2001). Algol, Fortran and COBOL are of a similar vintage.
Emacs (the editor) uses a lisp dialect, [emacs lisp]?, for its configuration and programming.
The language Scheme was based on Lisp.
AutoLisp is a lisp used in the CAD? industry.