Lisp (programming language)

Lisp
ParadigmMulti-paradigm: functional, procedural, reflective, meta
Designed byJohn McCarthy
DeveloperSteve Russell, Timothy P. Hart, Mike Levin
First appeared1960 (1960)
Typing disciplineDynamic, strong
Dialects
Influenced by
Information Processing Language (IPL)
Influenced

Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation.[3] Originally specified in 1960, it is the third-oldest high-level programming language still in common use, after Fortran and COBOL.[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 Common Lisp, Scheme, Racket, and Clojure.[6][7][8]

Lisp was originally created as a practical mathematical notation for computer programs, influenced by (though not originally derived from)[9] the notation of Alonzo Church's lambda calculus. It quickly became a favored programming language for artificial intelligence (AI) research.[10] 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,[11] and the read–eval–print loop.[12]

The name LISP derives from "LISt Processor".[13] 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).

  1. ^ "Introduction". The Julia Manual. Read the Docs. Archived from the original on 2016-04-08. Retrieved 2016-12-10.
  2. ^ "Wolfram Language Q&A". Wolfram Research. Retrieved 2016-12-10.
  3. ^ Edwin D. Reilly (2003). Milestones in computer science and information technology. Greenwood Publishing Group. pp. 156–157. ISBN 978-1-57356-521-9.
  4. ^ "SICP: Foreword". Archived from the original on 2001-07-27. Lisp is a survivor, having been in use for about a quarter of a century. Among the active programming languages only Fortran has had a longer life.
  5. ^ "Conclusions". Archived from the original on 2014-04-03. Retrieved 2014-06-04.
  6. ^ Steele, Guy L. (1990). Common Lisp: the language (2nd ed.). Bedford, MA: Digital Press. ISBN 1-55558-041-6. OCLC 20631879.
  7. ^ Felleisen, Matthias; Findler, Robert; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (2015). ""The Racket Manifesto"" (PDF).
  8. ^ "Clojure - Differences with other Lisps". clojure.org. Retrieved 2022-10-27.
  9. ^ Steele, Guy Lewis; Sussman, Gerald Jay (May 1978). "The Art of the Interpreter, or the Modularity Complex (Parts Zero, One, and Two), Part Zero, P. 4". MIT Libraries. hdl:1721.1/6094. Retrieved 2020-08-01.
  10. ^ "The Top Programming Languages in Artificial Intelligence". Artificial Intelligence. APRO. 24 June 2020. Archived from the original on 2020-10-30. Retrieved 2021-02-15.
  11. ^ Paul Graham. "Revenge of the Nerds". Retrieved 2013-03-14.
  12. ^ Chisnall, David (2011-01-12). Influential Programming Languages, Part 4: Lisp.
  13. ^ Jones, Robin; Maynard, Clive; Stewart, Ian (December 6, 2012). The Art of Lisp Programming. Springer Science & Business Media. p. 2. ISBN 9781447117193.