Jump to content

LISP: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
List processing language, one of the earliest programming language to feature a garbage collector, it was first described in 1959 with working implementations arriving in the 1960's. Popular in early AI research but is also used as a scripting language in packages such as [[Emacs]], later variants have gained functional programming features and most modern variants have also gotten some object-oriented features, but referring to any LISP variant as an object-oriented or a functional programming language is taking religious fervour a step too far.
'''LISP''' (''LISt Processor'') is a list processing language, one of the earliest programming language to feature a garbage collector.


The main problem LISP originally had in gaining any mainstream acceptance as a programming language was simply performance related, while LISP was perfectly acceptable for writing small programs in, large programs could only be done cost effectively after the advent of virtual memory, but that only happened in the late 60's on mainframes, in the 80's for minicomputers and workstations and in the 90's for microcomputers and by that time the LISP world had become so fragmented that it had difficulty maintaining any traction. This also lead a number of companies to release computer systems in the 1970's and 80's that were specifically designed to run LISP.
==History==
It was first described in 1959 with working implementations arriving in the 1960s. Popular in early AI research but is also used as a scripting language in packages such as [[Emacs]], later variants have gained functional programming features and most modern variants have also got some object-oriented features, but referring to any LISP variant as an object-oriented or a functional programming language is taking religious fervour a step too far.


==Standard LISP==
The main problem LISP originally had in gaining any mainstream acceptance as a programming language was simply performance related, while LISP was perfectly acceptable for writing small programs in, large programs could only be done cost effectively after the advent of virtual memory, but that only happened in the late 60s on mainframes, in the 80s for minicomputers and workstations and in the 90s for microcomputers and by that time the LISP world had become so fragmented that it had difficulty maintaining any traction. This also lead a number of companies to release computer systems in the 1970s and 80s that were specifically designed to run LISP.
As LISP implementations were already starting to diverge enough to make porting between systems difficult by the mid 60's, so a new informal standard was proposed in 1969 that mostly mimicked a minimalistic but fast LISP implementation done as Stanford University in the USA, this never became a popular standard on minicomputers or micros but a number of mainframe implementations followed it to take advantage of mathematical packages that had been developed on the Stanford [[IBM]] system. An implementation in [[BCPL]] called ''Cambridge Lisp'' became fairly common on some home computer systems in Europe in the latter half of the 80's as it was cheap, a variant of Cambridge Lisp re-written in [[C]] is available as an open source package. '''Portable Standard Lisp''' was a follow on to Standard Lisp that also failed to set the world on fire.
 
See also: [[Standard LISP]]


==OS/2 Implementations==
==OS/2 Implementations==
* [[CLISP]] - Open Source - Discontinued
''Open Source''
* [[Lily]] - Embeddable LISP - Open Source - Discontinued
* [[CLISP]]
* [[newLISP]] - Open Source - Current
* [[Lily]] - Embeddable LISP
* [[RefLisp]] - Open source - Discontinued
* [[newLISP]]
* [[SCM]] - Open source - Current
* [[RefLisp]]
* [[Valutron]] - Open source - Current
* [[SCM]]
* [[xLISP]] - Open Source
* [[Valutron]]
* [[xLISP]]


===Libraries===
===Libraries===
* [[Closer to MOP]] - CLOS/MOP compatibility layer - Open Source - Current
''Open Source''
* [[Closette]] - Meta-object protocol - Open source - Discontinued
* [[Closer to MOP]] - CLOS/MOP compatibility layer
* [[CL-XML]] - [[XML]] parser - Open source - Discontinued
* [[Closette]] - Meta-object protocol
* [[ContextL]] - Context programming extensions for [[CLOS]] - Open Source - Current
* [[CL-XML]] - [[XML]] parser
* [[Portable Common Loops]] - Object oriented abstractions - Open source - Discontinued
* [[ContextL]] - Context programming extensions for [[CLOS]]
* [[Screamer]] - Nondeterministic programming - Open source - Some current development
* [[Portable Common Loops]] - Object oriented abstractions
* [[Snappy]] - Compression library - Open Source - Current
* [[Screamer]] - Nondeterministic programming
 
* [[Snappy]] - Compression library
===Foreign libraries with LISP or Scheme bindings===
* [[Cairo]] - 2D graphics library (CL + Scheme) - Open source - Current
* [[LibcURL]] - Internet URL (WWW, FTP) access (LISP + Scheme) - Open Source - Current
* [[Snappy]] - Compression lib. - Open Source - Current
 
===LISP related programmer's utilities===
* [[DTRACE]] - Debug tool - Open source - Discontinued
* [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files - Open source - Current


;Editor support
==Programmer's utilities==
* [[Boxer]] - LISP syntax highlighting support built in - Commercial - Discontinued
* [[DTRACE]] - Debug tool
* [[jEdit]] - Java based - LISP and Scheme syntax highlighting built in
* [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files
* [[Lugaru Epsilon]] - LISP syntax highlighting and auto-indent available as a separate download. - Commercial


;Source code snippets, archives and collections
;Source code snippets, archives and collections
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
* [[Artificial flavors]] - Open source - Discontinued.
* [[Artificial flavors]]
* [[SDRAW]] - A utility that draws ConsCell structures - Open source - Discontinued
* [[SDRAW]] - A utility that draws ConsCell structures
* [https://sourceforge.net/projects/clocc/files/ CLOCC - Common Lisp Open Code Collection] - Small open source applications.
* [https://github.com/lispgames/lispgames.github.io/wiki LISP games Wiki] - Collection of mainly small LISP games
* [https://github.com/lispgames/lispgames.github.io/wiki LISP games Wiki] - Collection of mainly small LISP games
* [http://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/ M-Expressions] - Allows Common Lisp to use syntax like the original 1959 LISP


==DOS Implementations==
==DOS Implementations==
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
*BYSO LISP - Commercial - Discontinued
Commercial:
*[[ECoLisp]] - Open Source - Sort of current
*BYSO LISP
*Expert LISP - Commercial - Discontinued
*Expert LISP
*[[Golden Common-LISP]] - Commercial - Current
*Intellect-UL LISP
*Intellect-UL LISP
*[[IQLISP]] - Commercial - Discontinued
*[[IQLISP]]
*[[Kyoto Common Lisp]] - Open Source - Discontinued
*Le-Lisp
*Le-Lisp - Commercial - Discontinued
*[[Microsoft LISP]]
*[[Microsoft LISP]] - Commercial - Discontinued
*[[muLISP]]
*[[muLISP]] - Commercial - Discontinued
*[[Norell LISP/88]]
*[[Norell LISP/88]] - Commercial - Discontinued
*[https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/others/franzlsp/pclisp/pclisp30.zip PC-LISP 3.0]
*[https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/others/franzlsp/pclisp/pclisp30.zip PC-LISP 3.0] - Shareware
*TLC LISP
*[[RefLisp]] - Open source - Discontinued
*Waltz LISP
*[[SCM]] - Open source - Current
*[[UO-LISP]]
*[http://www.webweasel.com/lisp/lisp.htm Star Sapphire Common LISP] - Shareware - Still available but no longer developed
Open Source:
*TLC LISP - Commercial - Discontinued
*[[ECoLisp]]
*Waltz LISP - Commercial - Discontinued
*[[RefLisp]]
*[[UO-LISP]] - Commercial - Discontinued
*[[SCM]]
*[[XLISP]] - Open source - Discontinued
*[[XLISP]]
</div>
</div>


====Libraries====
====Libraries====
*[[Closette]] - Meta-object protocol - Open source - Discontinued
Commercial:
*Dblisp - dBase II/II database access for GCL - Commercial - Discontinued
*Dblisp - dBase II/II database access for GCL
*[[Portable Common Loops]] - Object oriented abstractions - Open source - Discontinued
Open source:
*[[Screamer]] - Nondeterministic programming - Open source - Some current development
*[[Closette]] - Meta-object protocol
*[[SLIB Portable Scheme Library]] - Portable version of Scheme in a library form - Open Source - Current
*[[Portable Common Loops]] - Object oriented abstractions
*[[Screamer]] - Nondeterministic programming
*[[SLIB Portable Scheme Library]] - Portable version of Scheme in a library form


====Closely related languages====
====Closely related languages====
*Fjölnir - Open source - Discontinued
*Fjölnir - Open source


====DOS text & programmers editors with LISP support====
;Editor support
* [[Boxer]] - LISP syntax highlighting support built in - Commercial - Discontinued
* [[Boxer]] - LISP syntax highlighting support built in


==Win-OS/2 implementations==
==Win-OS/2 implementations==
*Apteryx Lisp 1.04 - shareware
*Apteryx Lisp 1.04 - shareware
*[[Golden Common-LISP]] - Commercial - Current
*Goldworks - Commercial
*Goldworks - Commercial - Current
*IBM Common Lisp - As front-end only - Commercial - Discontinued
*Le-Lisp (ILOG)
*Le-Lisp (ILOG)
*[[RefLisp]] - Open source - Discontinued
*[[RefLisp]] - Open source
*[[SCM]] - Open source - Discontinued
*[[SCM]] - Open source


====Libraries====
====Libraries====
* [[Portable Common Loops]] - Object oriented abstractions - Open source - Discontinued
* [[Portable Common Loops]] - Object oriented abstractions - Open source


==Implementations that run under Java==
==Java Implementations==
* [https://common-lisp.net/project/armedbear/ Armed Bear Common Lisp] - Open Source - Current
* [[CLforJava]] - Open Source - Discontinued
* GNU [http://www.gnu.org/software/kawa/ Kawa Scheme]
* GNU [http://www.gnu.org/software/kawa/ Kawa Scheme]


Line 102: Line 91:
* [[Clojure]] - Functional language that uses LISP syntax.
* [[Clojure]] - Functional language that uses LISP syntax.


==Implementations in JavaScript==
==JavaScript Implementations==
* [http://www.biwascheme.org/ Biwa Scheme] - Conforms to Revised(6) - Open source - Current
* [http://www.biwascheme.org/ Biwa Scheme] - Conforms to Revised(6) - Open source


;Related languages
;Related languages
Line 111: Line 100:
===Books===
===Books===
* John R. Anderson; Albert Corbett; Brian J. Reiser: ''Essential Lisp'' - Addison-Wesley 1986, ISBN 0-201-11148-9
* John R. Anderson; Albert Corbett; Brian J. Reiser: ''Essential Lisp'' - Addison-Wesley 1986, ISBN 0-201-11148-9
* Timothy D. Koschmann: ''The Common LISP Companion'' - Wiley 1990, ISBN 0-471-50308-8
* Patrick Henry Winston; Berthold K.P. Horn: ''Lisp'' (Third edition) - Addison-Wesley 1989, ISBN 0-201-08319-1
* Patrick Henry Winston; Berthold K.P. Horn: ''Lisp'' (Third edition) - Addison-Wesley 1989, ISBN 0-201-08319-1
: An older edition of the book is available: [http://www.atarimania.com/documents/LISP.pdf PDF]
: An older edition of the book is available: [//www.atarimania.com/documents/LISP.pdf PDF]
* Guy L. Steele Jr.: [https://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html Common Lisp the Language, 2nd Edition] - Digital Press 1990, ISBN 1-55558-041-6
* Harold Abelson, Gerald Jay Sussman and Julie Sussman: ''Structure and Interpretation of Computer Programs''; Second edition - MIT Press 1996 - [//web.mit.edu/alexmv/6.037/sicp.pdf PDF]
* Peter Seibel: [http://www.gigamonkeys.com/book/ Practical Common Lisp] - Apress 2005, ISBN 978-1-59059-239-7
 
* Harold Abelson, Gerald Jay Sussman and Julie Sussman: [https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-1.html Structure and Interpretation of Computer Programs; Second edition] - 1996 - MIT Press - [http://web.mit.edu/alexmv/6.037/sicp.pdf PDF]
* David B. Lamkins: [https://www.psg.com/~dlamkins/sl/cover.html Successful Lisp: How to Understand and Use Common Lisp] - 2004 - Bookfix.com - ISBN 978-3937526003
* David S. Touretzky: [https://www.cs.cmu.edu/~dst/LispBook/book.pdf COMMON LISP: A Gentle Introduction to Symbolic Computation] - 1990 - The Benjamin/Cummings Publishing Company - The 1990 edition is a free download in a PDF format - the revised 2013 edition by Dover has ISBN 978-0486498201
* Paul Graham: ''[https://ia700807.us.archive.org/16/items/ost-computer-science-onlisp/onlisp.pdf On LISP]''  - 2006 - Public domain LISP tutorial - Not for beginners.
* Richard P. Gabriel: ''[https://archive.org/details/PerformanceAndEvaluationOfLispSystems Performance And Evaluation Of Lisp Systems]'' - 1985
* Richard P. Gabriel: ''[https://archive.org/details/PerformanceAndEvaluationOfLispSystems Performance And Evaluation Of Lisp Systems]'' - 1985
;CLOS, MOP and PCL
* Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow: ''The Art of the Metaobject Protocol'' - MIT Press 1991, ISBN 026261074
* Robert R. Kessler, Amy R. Petajan: ''LISP, Objects, and Symbolic Programming'' - Scott Foresman 1988, ISBN 0-673-39773-4


===Articles, talks, presentations and papers===
===Articles, talks, presentations and papers===
Line 139: Line 120:
;Parallel processing
;Parallel processing
* Pascal Costanza: ''[http://medias.ircam.fr/xe5f73b Parallel Programming with Lisp for Performance]'' - Recording of a talk held at the 7th European Lisp Symposium on May 5, 2014, Ircam, Paris, France - presentation ([http://www.european-lisp-symposium.org/editions/2014/costanza.pdf PDF])
* Pascal Costanza: ''[http://medias.ircam.fr/xe5f73b Parallel Programming with Lisp for Performance]'' - Recording of a talk held at the 7th European Lisp Symposium on May 5, 2014, Ircam, Paris, France - presentation ([http://www.european-lisp-symposium.org/editions/2014/costanza.pdf PDF])
* Ron Goldman and Richard P. Gabriel: ''[https://www.dreamsongs.com/Files/hicss.pdf Qlisp: Parallel Processing in Lisp]'' - Originally published in IEEE Software, Volume:6 , Issue: 4, Page 51 ~ 59. ISSN 0740-7459
* Ron Goldman and Richard P. Gabriel: ''[https://www.dreamsongs.com/Files/hicss.pdf Qlisp: Parallel Processing in Lisp]'' - Originally published in IEEE Software, Volume:6, Issue: 4, Page 51 ~ 59. ISSN 0740-7459
* Kinson Ho: ''[http://nma.berkeley.edu/ark:/28722/bk0005n4s2k High-Level Abstractions for Symbolic Parallel Programming (Parallel Lisp Hacking Made Easy)]'' - Originally published in June 1994 as Report No. UCB//CSD-94-816 by the Computer Science Division (EECS) of the University of California.
* Kinson Ho: ''[http://nma.berkeley.edu/ark:/28722/bk0005n4s2k High-Level Abstractions for Symbolic Parallel Programming (Parallel Lisp Hacking Made Easy)]'' - Originally published in June 1994 as Report No. UCB//CSD-94-816 by the Computer Science Division (EECS) of the University of California.
* Joseph Simon Weening: ''[http://www.dtic.mil/dtic/tr/fulltext/u2/a219623.pdf Parallel Execution of Lisp Programs]'' - Thesis originally published in June 1989 by the Department of Computer Science at Stanford University, California.
* Joseph Simon Weening: ''[http://www.dtic.mil/dtic/tr/fulltext/u2/a219623.pdf Parallel Execution of Lisp Programs]'' - Thesis originally published in June 1989 by the Department of Computer Science at Stanford University, California.
* James C. Brodman, Basilio B. Fraguela, María J. Garzarán and David Padua: ''[http://polaris.cs.uiuc.edu/~garzaran/doc/hotpar09.pdf New Abstractions for Data Parallel Programming]'' - Originally published in Proceedings of the First Usenix Workshop on Hot Topics in Parallelism, Usenix Association, 2009
* James C. Brodman, Basilio B. Fraguela, María J. Garzarán and David Padua: ''[http://polaris.cs.uiuc.edu/~garzaran/doc/hotpar09.pdf New Abstractions for Data Parallel Programming]'' - Originally published in Proceedings of the First Usenix Workshop on Hot Topics in Parallelism, Usenix Association, 2009
* Tasuku Hiraishi, Masaru Ueno, Tatsuya Abe, Motoharu Hibino, Takeshi Iwashita and Hiroshi Nakashima: ''[http://super.para.media.kyoto-u.ac.jp/~tasuku/pdfs/ilc2012.pdf Xcrypt on Lisp: A Scripting System for Job Level Parallel Programming in Lisp]'' - 2012
* Tasuku Hiraishi, Masaru Ueno, Tatsuya Abe, Motoharu Hibino, Takeshi Iwashita and Hiroshi Nakashima: ''[http://super.para.media.kyoto-u.ac.jp/~tasuku/pdfs/ilc2012.pdf Xcrypt on Lisp: A Scripting System for Job Level Parallel Programming in Lisp]'' - 2012
* M. D. Feng, W. F. Wong and C. K. Juen: ''[http://www.masters.dgtu.donetsk.ua/2007/fvti/savkov/library/banda.pdf Compiling Parallel LISP for a shared memory multiprocessor]'' - 2007 masters thesis
* M. D. Feng, W. F. Wong and C. K. Juen: ''Compiling Parallel LISP for a shared memory multiprocessor'' - 2007 masters thesis
* Pascal Costanza, Charlotte Herzeel and Theo D’Hondt: ''[http://www.p-cos.net/documents/cstm.pdf Context-oriented Software Transactional Memory in Common Lisp]'' - Originally published in the Proceedings of the Dynamic Languages Symposium 2009, co-located with OOPSLA 2009, Orlando, Florida, USA, October 26, 2009, ACM Digital Library.
* Pascal Costanza, Charlotte Herzeel and Theo D’Hondt: ''[http://www.p-cos.net/documents/cstm.pdf Context-oriented Software Transactional Memory in Common Lisp]'' - Originally published in the Proceedings of the Dynamic Languages Symposium 2009, co-located with OOPSLA 2009, Orlando, Florida, USA, October 26, 2009, ACM Digital Library.
;Introductory articles and mini-tutorials
* John R. Anderson & Brian J. Reiser: [http://www.psychology.nottingham.ac.uk/staff/com/c8clat/resources/TheLISPTutor.pdf The LISP Tutor] - 1985
* Heinrich Taube: [http://people.ace.ed.ac.uk/staff/medward2/class/moz/cm/doc/contrib/lispstyle.html Lisp Style Tips for the Beginner]


==Links==
==Links==
* [http://cl.cddddr.org/ Japanese Common LISP User Group]
* [http://www.alu.org/alu/home Association of Lisp Users] - Sponsored by Allegro Lisp.
* [http://www.lispworks.com/documentation/HyperSpec/Front/ The Common Lisp HyperSpec]
* [https://github.com/TaylanUB/scheme-srfis List of R7RS implementations] - None of OS/2 so for but a starting point for anyone that wants to start a port.
;Tutorials
;Tutorials
* [http://www.mars.cs.unp.ac.za/lisp/ LISP Tutor] - Note the interactive map at the top of the page has incorrect links, use the ones at the bottom of the page.
* [https://alarm.cdm.depaul.edu/lisptutor/ LispTutor Jr.]
* [http://reed.cs.depaul.edu/peterh/Tools/lisptutor.html LispTutor Jr.]
* [//www.p-cos.net/lisp/guide.html Pascal Costanza's Highly Opinionated Guide to Lisp]
* [http://www.phyast.pitt.edu/~micheles/scheme The Adventures of a Pythonista in Schemeland]
* [https://ccrma.stanford.edu/CCRMA/Courses/AlgoComp/cm/doc/contrib/lispstyle.html Lisp Style Tips for the Beginner]
* Christian Stigen Larsen: ''[https://csl.name/post/scheme-tutorial/ A short R7RS Scheme tutorial]''
* [http://www.p-cos.net/lisp/guide.html Pascal Costanza's Highly Opinionated Guide to Lisp]
 
==Standards==
;Standard Lisp
* Jed Marti, A. C. Hearn, M. L. Griss and C. Griss: ''[http://www.ceng.metu.edu.tr/~ucoluk/research/lisp/sl.pdf The Standard Lisp Report]'' - ACM SIGPLAN Notices 14, No 10 (1979), pages 48~68. - This is what became Portable (Utah) Standard Lisp.
;Common Lisp
* Guy L. Steele Jr. et al.: Common Lisp the Language - 1984 - Digital Press - ISBN 093237641X
: This is a publication of the ''Common Lisp Reference Manual'' written for the DoD with some additional text and clarifications, a newer version is avaiable for [https://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html download here] and due to the number of errors in the original publication the Kyoto report below is considered the de facto standard.
* [http://www.softwarepreservation.org/projects/LISP/kcl/doc/kcl-report.pdf Kyoto Common Lisp Report] - 1985
:Since the original Common Lisp proposal by the Department of Defence had a large number of errors in it, this document is commonly used as a definition of the original Common Lisp since it clears up most of the errors.
* ANSI Common Lisp - ANSI INCITS 226-1994 (X3.226-1994)
;Scheme
* Gerald Jay Sussman and Guy Lewis Steele Jr.: ''Scheme: an interpreter for extended lambda calculus. Technical Report'' -  MIT Artificial Intelligence Memo 349 December 1975.
* Guy Lewis Steele Jr. and Gerald Jay Sussman: ''The revised report on Scheme, a dialect of Lisp. Technical Report'' - MIT Artificial Intelligence Memo 452 January 1978.
* William Clinger and Jonathan Rees (Editors): [http://people.csail.mit.edu/jaffer/r3rs_toc.html Revised(3) Report on the Algorithmic Language Scheme] - ACM SIGPLAN Notices 21(12), pages 37-79, December 1986.
* [http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=159138&url=%2Fiel1%2F2279%2F4109%2F00159138 1178-1990  -  IEEE Standard for the Scheme Programming Language] - 1991
:The only formal standard for Scheme, largely ignored.
* William Clinger and Jonathan Rees (Editors): [http://people.csail.mit.edu/jaffer/r4rs_toc.html Revised(4) Report on the Algorithmic Language Scheme] - ACM Lisp Pointers IV (July-September 1991).
* Richard Kelsey, William Clinger and Jonathan Rees (Editors): [http://people.csail.mit.edu/jaffer/r5rs_toc.html Revised(5) Report on the Algorithmic Language Scheme] - Higher-Order and Symbolic Computation Volume 11, Issue 1, August 1998
* Michael Sperber, R. Kent Dybvig, Matthew Flatt, Anton van Straaten(Editors): [http://www.r6rs.org/final/r6rs.pdf Revised(6) Report on the Algorithmic Language Scheme] - 2007
:Note, this standard is quite incompatible with Revised(5) in places and therefore not widely used.
* [http://trac.sacrideo.us/wg/wiki/R7RSHomePage Revised(6) Report on the Algorithmic Language Scheme] - R7RS-small 2013 - R7RS-large unfinished.
; Common LISP Object System
* The original ''Common Lisp Object System Specification'' was written by Daniel G. Bobrow, Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon; and was published in draft form on June 15, 1988. It is available in two parts, namely ''[https://www.dreamsongs.com/Files/concepts.pdf 1. Programmer Interface Concepts]'' and ''[https://www.dreamsongs.com/Files/Functions.pdf 2. Functions in the Programmer Interface]''.


[[Category:Programming Languages]][[Category:LISP]]
[[Category:Programming Languages]][[Category:LISP]]

Latest revision as of 09:34, 29 May 2025

LISP (LISt Processor) is a list processing language, one of the earliest programming language to feature a garbage collector.

History

It was first described in 1959 with working implementations arriving in the 1960s. Popular in early AI research but is also used as a scripting language in packages such as Emacs, later variants have gained functional programming features and most modern variants have also got some object-oriented features, but referring to any LISP variant as an object-oriented or a functional programming language is taking religious fervour a step too far.

The main problem LISP originally had in gaining any mainstream acceptance as a programming language was simply performance related, while LISP was perfectly acceptable for writing small programs in, large programs could only be done cost effectively after the advent of virtual memory, but that only happened in the late 60s on mainframes, in the 80s for minicomputers and workstations and in the 90s for microcomputers and by that time the LISP world had become so fragmented that it had difficulty maintaining any traction. This also lead a number of companies to release computer systems in the 1970s and 80s that were specifically designed to run LISP.

See also: Standard LISP

OS/2 Implementations

Open Source

Libraries

Open Source

Programmer's utilities

Source code snippets, archives and collections

Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.

DOS Implementations

Commercial:

Open Source:

Libraries

Commercial:

  • Dblisp - dBase II/II database access for GCL

Open source:

Closely related languages

  • Fjölnir - Open source
Editor support
  • Boxer - LISP syntax highlighting support built in

Win-OS/2 implementations

  • Apteryx Lisp 1.04 - shareware
  • Goldworks - Commercial
  • Le-Lisp (ILOG)
  • RefLisp - Open source
  • SCM - Open source

Libraries

Java Implementations

Related languages
  • Clojure - Functional language that uses LISP syntax.

JavaScript Implementations

Related languages

Publications

Books

  • John R. Anderson; Albert Corbett; Brian J. Reiser: Essential Lisp - Addison-Wesley 1986, ISBN 0-201-11148-9
  • Patrick Henry Winston; Berthold K.P. Horn: Lisp (Third edition) - Addison-Wesley 1989, ISBN 0-201-08319-1
An older edition of the book is available: PDF
  • Harold Abelson, Gerald Jay Sussman and Julie Sussman: Structure and Interpretation of Computer Programs; Second edition - MIT Press 1996 - PDF

Articles, talks, presentations and papers

Slightly misleading title, the talk is more about the package manager ASDF than scripting per se.
  • Pascal Costanza: How to Make Lisp More Special - Originally published in the Proceedings of the International Lisp Conference 2005, Stanford, California, USA, June 19-22, 2005.
  • Richard Barber & George Imlah: Delivering the Goods with Lisp. Communications of the ACM 34(9); pages 61-63 - 1991
CLOS, MOP and PCL
  • BYTE Magazine August 1979 - The LISP issue - Totally outdated by now, but a very interesting read, note that the DJVU version is only 1/20th the size of the PDF version before you download.
Meta-objects
Parallel processing

Links

Tutorials