Lisp (programming language): Difference between revisions

Content deleted Content added
Undid revision 1225084814 by Merededdo (talk) - the notation was borrowed from mathematician Alonzo Church
Tags: Undo Mobile edit Mobile web edit Advanced mobile edit
m Improve reference
Line 79:
Originally specified in the late 1950s, it is the second-oldest [[high-level programming language]] still in common use, after [[Fortran]].<ref name="uOUnJ">{{cite web|url=http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html|archive-url=https://web.archive.org/web/20010727170154/http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html|archive-date=2001-07-27|quote=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.|title=SICP: Foreword}}</ref><ref name="AfFRW">{{cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node6.html#SECTION00060000000000000000|title=Conclusions|access-date=2014-06-04|archive-url=https://web.archive.org/web/20140403021353/http://www-formal.stanford.edu/jmc/history/lisp/node6.html#SECTION00060000000000000000|archive-date=2014-04-03}}</ref> Lisp has changed since its early days, and many [[Programming language dialect|dialects]] have existed over its history. Today, the best-known general-purpose Lisp dialects are [[Common Lisp]], [[Scheme (programming language)|Scheme]], [[Racket (programming language)|Racket]], and [[Clojure]].<ref>{{Cite book |last=Steele |first=Guy L. |title=Common Lisp: the language |date=1990 |publisher=Digital Press |isbn=1-55558-041-6 |edition=2nd |___location=Bedford, MA |oclc=20631879}}</ref><ref>{{Cite web |last1=Felleisen |first1=Matthias |last2=Findler |first2=Robert |last3=Flatt |first3=Matthew |last4=Krishnamurthi |first4=Shriram |last5=Barzilay |first5=Eli |last6=McCarthy |first6=Jay |last7=Tobin-Hochstadt |first7=Sam |date=2015 |title="The Racket Manifesto" |url=https://www2.ccs.neu.edu/racket/pubs/manifesto.pdf}}</ref><ref>{{Cite web |title=Clojure - Differences with other Lisps |url=https://clojure.org/reference/lisps |access-date=2022-10-27 |website=clojure.org}}</ref>
 
Lisp was originally created as a practical [[mathematical notation]] for [[computer program]]s, influenced by (though not originally derived from)<ref name="Steele, Guy Lewis, Jr.; Sussman, Gerald Jay">{{cite web |url=https://dspace.mit.edu/handle/1721.1/6094/ |title=The Art of the Interpreter, or the Modularity Complex (Parts Zero, One, and Two), Part Zero, P. 4 |date=May 1978 |publisher=MIT Libraries |hdl=1721.1/6094 |access-date=2020-08-01|last1=Steele |first1=Guy Lewis |last2=Sussman |first2=Gerald Jay}}</ref> the notation of [[Alonzo Church]]'s [[lambda calculus]]. It quickly became a favored programming language for [[artificial intelligence]] (AI) research.<ref name="APRO">{{cite web |url=https://apro-software.com/top-programming-languages-in-ai/ |title=The Top Programming Languages in Artificial Intelligence |work=Artificial Intelligence |date=24 June 2020 |publisher=APRO |access-date=2021-02-15 |url-status=live |archive-url=https://web.archive.org/web/20201030142849/https://apro-software.com/top-programming-languages-in-ai/ |archive-date=2020-10-30}}</ref>{{Failed verification|date=April 2024|reason=This source only very briefly mentions LISP, and does not say anything about how "quickly" it became used in AI (the source was written in 2020 but LISP was created around 1960, so I am not sure that this article's claim makes sense anyway).}} As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree (data structure)|tree data structures]], [[garbage collection (computer science)|automatic storage management]], [[dynamic typing]], [[Conditional (computer programming)|conditionals]], [[higher-order function]]s, [[recursion (computer science)|recursion]], the [[Self-hosting (compilers)|self-hosting compiler]],<ref name="Graham">{{cite web |title=Revenge of the Nerds |author=Paul Graham |url=http://www.paulgraham.com/icad.html |access-date=2013-03-14}}</ref> and the [[read–eval–print loop]].<ref name="hC1qm">{{Cite book|url=http://www.informit.com/articles/article.aspx?p=1671639&seqNum=3|title=Influential Programming Languages, Part 4: Lisp|last=Chisnall|first=David|date=2011-01-12}}</ref>Citation
| last = Hofstadter
| first = Douglas R.
| title = Gödel, Escher, Bach: An Eternal Golden Braid (Twentieth Anniversary Edition)
| publisher = Basic Books
| year = 1999
| orig-year= 1979
| isbn = 0-465-02656-7
| url = https://books.google.com/books?id=izy9Tg6rmb8C
| page = 292
| quote = One of the most important and fascinating of all computer languages is LISP (standing for "List Processing"), which was invented by John McCarthy around the time Algol was invented. Subsequently, LISP has enjoyed great popularity with workers in Artificial Intelligence.
}}</ref> As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree (data structure)|tree data structures]], [[garbage collection (computer science)|automatic storage management]], [[dynamic typing]], [[Conditional (computer programming)|conditionals]], [[higher-order function]]s, [[recursion (computer science)|recursion]], the [[Self-hosting (compilers)|self-hosting compiler]],<ref name="Graham">{{cite web |title=Revenge of the Nerds |author=Paul Graham |url=http://www.paulgraham.com/icad.html |access-date=2013-03-14}}</ref> and the [[read–eval–print loop]].<ref name="hC1qm">{{Cite book|url=http://www.informit.com/articles/article.aspx?p=1671639&seqNum=3|title=Influential Programming Languages, Part 4: Lisp|last=Chisnall|first=David|date=2011-01-12}}</ref>
 
The name ''LISP'' derives from "LISt Processor".<ref name="ArtOfLisp">{{cite book|last1=Jones|first1=Robin|last2=Maynard|first2=Clive|last3=Stewart|first3=Ian|title=The Art of Lisp Programming|date=December 6, 2012|publisher=Springer Science & Business Media|isbn=9781447117193|page=2}}</ref> [[Linked list]]s are one of Lisp's major [[data structure]]s, and Lisp [[source code]] is made of lists. Thus, Lisp programs can manipulate source code as a data structure, giving rise to the [[macro (computer science)|macro]] systems that allow programmers to create new syntax or new [[___domain-specific language]]s embedded in Lisp.