User:Crlf0710/Lisp (programming language family)
From Wikipedia, the free encyclopedia
Lisp (historically LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.[3] Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today. Only Fortran is older, by one year.[4][5] Lisp has changed since its early days, and many dialects have existed over its history. Today, the best known general-purpose Lisp dialects are Clojure, Common Lisp, and Scheme. The most popular Scheme implementation is Racket, which has a tool chain that is well maintained and aimed at ease of use.
Paradigm | Multi-paradigm: functional, procedural, reflective, meta |
---|---|
Designed by | John McCarthy |
Developer | Steve Russell, Timothy P. Hart, and Mike Levin |
First appeared | 1958; 66 years ago (1958) |
Typing discipline | dynamic, strong |
Dialects | |
Influenced by | |
IPL | |
Influenced | |
Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, the self-hosting compiler,[6] and the read–eval–print loop.[7]
The name LISP derives from "LISt Processor".[8] Linked lists are one of Lisp's major data structures, and Lisp source code is made of lists. Thus, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or new domain-specific languages embedded in Lisp.
The interchangeability of code and data gives Lisp its instantly recognizable syntax. All program code is written as s-expressions, or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function f
that takes three arguments would be called as (f arg1 arg2 arg3)
.