Difference between revisions of "LISP"
m (→Standards) |
m (→LISP related programmer's utilities) |
||
Line 31: | Line 31: | ||
* [[Snappy]] - Compression lib. - Open Source | * [[Snappy]] - Compression lib. - Open Source | ||
− | === | + | ===Programmer's utilities=== |
− | * [[DTRACE]] - Debug tool | + | * [[DTRACE]] - Debug tool |
− | * [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files | + | * [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files |
;Editor support | ;Editor support | ||
Line 41: | Line 41: | ||
;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]] | + | * [[Artificial flavors]] |
− | * [[SDRAW]] - A utility that draws ConsCell structures | + | * [[SDRAW]] - A utility that draws ConsCell structures |
* [https://sourceforge.net/projects/clocc/files/ CLOCC - Common Lisp Open Code Collection] - Small open source applications. | * [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 |
Revision as of 23:00, 20 May 2019
LISP (LISt Processor) is a list processing language, one of the earliest programming language to feature a garbage collector.
Contents
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 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.
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
- CLISP - Open Source
- Lily - Embeddable LISP - Open Source
- newLISP - Open Source
- RefLisp - Open source
- SCM - Open source
- Valutron - Open source
- xLISP - Open Source
Libraries
- Closer to MOP - CLOS/MOP compatibility layer - Open Source
- Closette - Meta-object protocol - Open source
- CL-XML - XML parser - Open source
- ContextL - Context programming extensions for CLOS - Open Source
- Portable Common Loops - Object oriented abstractions - Open source
- Screamer - Nondeterministic programming - Open source
- Snappy - Compression library - Open Source
Foreign libraries with LISP or Scheme bindings
- Cairo - 2D graphics library (CL + Scheme) - Open source
- LibcURL - Internet URL (WWW, FTP) access (LISP + Scheme) - Open Source
- Snappy - Compression lib. - Open Source
Programmer's utilities
- DTRACE - Debug tool
- Exuberant ctags - Creates index files out of Scheme and LISP source files
- Editor support
- Boxer - LISP syntax highlighting support built in - Commercial
- Lugaru Epsilon - LISP syntax highlighting and auto-indent available as a separate download.
- 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.
- Artificial flavors
- SDRAW - A utility that draws ConsCell structures
- CLOCC - Common Lisp Open Code Collection - Small open source applications.
- LISP games Wiki - Collection of mainly small LISP games
- M-Expressions - Allows Common Lisp to use syntax like the original 1959 LISP
DOS Implementations
- BYSO LISP - Commercial
- ECoLisp - Open Source
- Expert LISP - Commercial
- Intellect-UL LISP
- IQLISP - Commercial
- Le-Lisp - Commercial
- Microsoft LISP - Commercial
- muLISP - Commercial
- Norell LISP/88 - Commercial
- PC-LISP 3.0 - Shareware
- RefLisp - Open source
- SCM - Open source
- TLC LISP - Commercial
- Waltz LISP - Commercial
- UO-LISP - Commercial
- XLISP - Open source
Libraries
- Closette - Meta-object protocol - Open source
- Dblisp - dBase II/II database access for GCL - Commercial
- Portable Common Loops - Object oriented abstractions - Open source
- Screamer - Nondeterministic programming - Open source
- SLIB Portable Scheme Library - Portable version of Scheme in a library form - Open Source
- Fjölnir - Open source
- Editor support
- Boxer - LISP syntax highlighting support built in - Commercial
Win-OS/2 implementations
- Apteryx Lisp 1.04 - shareware
- Golden Common-LISP - Commercial
- Goldworks - Commercial
- IBM Common Lisp - As front-end only - Commercial
- Le-Lisp (ILOG)
- RefLisp - Open source
- SCM - Open source
Libraries
- Portable Common Loops - Object oriented abstractions - Open source
Java Implementations
- Armed Bear Common Lisp - Open Source
- CLforJava - Open Source
- GNU Kawa Scheme
- Related languages
- Clojure - Functional language that uses LISP syntax.
- Editor support
- jEdit - Java based - LISP and Scheme syntax highlighting built in
JavaScript Implementations
- Biwa Scheme - Conforms to Revised(6) - Open source
- Related languages
- ClojureScript - Functional language that uses LISP syntax.
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 - 1996 - MIT Press - PDF
- David B. Lamkins: Successful Lisp: How to Understand and Use Common Lisp - 2004 - Bookfix.com - ISBN 978-3937526003
- David S. Touretzky: 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: On LISP - 2006 - Public domain LISP tutorial - Not for beginners.
- Richard P. Gabriel: 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
- Henry Baker's Archive of Research Papers - Primarily Lisp related but a few unrelated papers in-between.
- Simon White: What is good about Lisp? - 2005
- Nick Levine: CLAUDE - The Common Lisp Library Audience Expansion Toolkit - Recording of a talk held at the 7th European Lisp Symposium on May 5, 2014, Ircam, Paris, France.
- François-René Rideau: ASDF3, or Why Lisp is Now an Acceptable Scripting Language - Recording of a talk held at the 7th European Lisp Symposium on May 5, 2014, Ircam, Paris, France. - Also available as a PDF.
- 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
- Chrsitophe Rhodes: Generalizers: New Metaobjects for Generalized Dispatch - Recording of a talk held at the 7th European Lisp Symposium on May 5, 2014, Ircam, Paris, France. - Also available as a PDF
- Parallel processing
- Pascal Costanza: 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 (PDF)
- Ron Goldman and Richard P. Gabriel: Qlisp: Parallel Processing in Lisp - Originally published in IEEE Software, Volume:6 , Issue: 4, Page 51 ~ 59. ISSN 0740-7459
- Kinson Ho: 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: 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: 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: Xcrypt on Lisp: A Scripting System for Job Level Parallel Programming in Lisp - 2012
- 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: 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: The LISP Tutor - 1985
- Heinrich Taube: Lisp Style Tips for the Beginner
Links
- Association of Lisp Users - Sponsored by Allegro Lisp.
- Tutorials
- LISP Tutor - Note the interactive map at the top of the page has incorrect links, use the ones at the bottom of the page.
- LispTutor Jr.
- Pascal Costanza's Highly Opinionated Guide to Lisp