Jump to content

LISP: Difference between revisions

From EDM2
No edit summary
Ak120 (talk | contribs)
 
(134 intermediate revisions by 2 users not shown)
Line 1: Line 1:
List processing language, one of the earliest programming language to feature a garbage collector. 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 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.


;Common Lisp (CL)
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.
A dialect of LISP that adds functional programming, object-oriented and procedural features. It originally was instigated by the USA's department of defence in the early 1980's as LISP variants used by contractors were starting to become so diverse that porting of code between projects was becoming difficult. The object-oriented features introduced with Common Lisp is usually referred to by its initials or '''CLOS''', for Common Lisp Object System.


;Scheme
See also: [[Standard LISP]]
A version of LISP introduced in the 1970's that cuts down the language considerably but at the same time adds some functional features.


==A list of OS/2 implementations of LISP==
==OS/2 Implementations==
* [[CLISP]] - Open Source - Discontinued
''Open Source''
* [[Eco Common Lisp]] - Open Source - Sort of current
* [[CLISP]]
* [[GNU Common Lisp]] - Open Source - Discontinued
* [[Lily]] - Embeddable LISP
* [[Kyoto Common Lisp]] - Open Source - Discontinued
* [[newLISP]]
* [[MIT/GNU Scheme]] - Open Source - Discontinued
* [[RefLisp]]
* [[newLISP]] - Open Source - Current
* [[SCM]]
* [[xLISP]] - Open Source
* [[Valutron]]
* [[xLISP]]


====Libraries====
===Libraries===
* [[Snappy]] - Compression lib. - Open Source - Current.
''Open Source''
* [[Closer to MOP]] - CLOS/MOP compatibility layer
* [[Closette]] - Meta-object protocol
* [[CL-XML]] - [[XML]] parser
* [[ContextL]] - Context programming extensions for [[CLOS]]
* [[Portable Common Loops]] - Object oriented abstractions
* [[Screamer]] - Nondeterministic programming
* [[Snappy]] - Compression library


====Foreign libraries with LISP or Scheme bindings====
==Programmer's utilities==
* [[LibcURL]] - Internet URL (WWW, FTP, etc) access (LISP + Scheme) - Open Source - Current.
* [[DTRACE]] - Debug tool
* [[Snappy]] - Compression lib. - Open Source - Current.
* [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files


====LISP related programmer's utilities====
;Source code snippets, archives and collections
* [[Exuberant ctags]] - Creates index files out of Scheme and LISP source files - Open source - Current.
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
* [https://github.com/lispgames/lispgames.github.io/wiki LISP games Wiki] - Collection of mainly small LISP games


====OS/2 text & programmers editors with LISP support====
==DOS Implementations==
* [[Boxer]] - LISP syntax highlighting support built in - Commercial - Discontinued.
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
* [[jEdit]] - Java based - LISP and Scheme syntax highlighting built in - Current.
Commercial:
* [[Lugaru Epsilon]] - LISP syntax highlighting and autoindent available as a separate download. - Commercial.
*BYSO LISP
*Expert LISP
*Intellect-UL LISP
*[[IQLISP]]
*Le-Lisp
*[[Microsoft LISP]]
*[[muLISP]]
*[[Norell LISP/88]]
*[https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/others/franzlsp/pclisp/pclisp30.zip PC-LISP 3.0]
*TLC LISP
*Waltz LISP
*[[UO-LISP]]
Open Source:
*[[ECoLisp]]
*[[RefLisp]]
*[[SCM]]
*[[XLISP]]
</div>


====LISP source code snippets, archives and collections====
====Libraries====
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
Commercial:
* [https://sourceforge.net/projects/clocc/files/ CLOCC - Common Lisp Open Code Collection] - Small open source applications
*Dblisp - dBase II/II database access for GCL
Open source:
*[[Closette]] - Meta-object protocol
*[[Portable Common Loops]] - Object oriented abstractions
*[[Screamer]] - Nondeterministic programming
*[[SLIB Portable Scheme Library]] - Portable version of Scheme in a library form


==A list of DOS implementations of LISP==
====Closely related languages====
* [[ECoLisp]] - Open Source - Sort of current
*Fjölnir - Open source
* [[Golden Common Lisp]] - Commercial - Current
* [https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/others/franzlsp/pclisp/pclisp30.zip PC-LISP 3.0] - Shareware
* [http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/reflisp/0.html RefLisp] - Open source - Discontinued
* [[XLISP]] - Open source - Discontinued


====Closely related languages====
;Editor support
* [[Fjölnir]] - Open source - Discontinued
* [[Boxer]] - LISP syntax highlighting support built in


====DOS text & programmers editors with LISP support====
==Win-OS/2 implementations==
* [[Boxer]] - LISP syntax highlighting support built in - Commercial - Discontinued.
*Apteryx Lisp 1.04 - shareware
*Goldworks - Commercial
*Le-Lisp (ILOG)
*[[RefLisp]] - Open source
*[[SCM]] - Open source


==A list of LISP implementations that run under WinOS/2==
====Libraries====
* Apteryx Lisp 1.04 - shareware
* [[Portable Common Loops]] - Object oriented abstractions - Open source
* [[Golden Common Lisp]] - Commercial - Current
* [[Goldworks]] - Commercial - Current


==A list of LISP 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 63: Line 91:
* [[Clojure]] - Functional language that uses LISP syntax.
* [[Clojure]] - Functional language that uses LISP syntax.


==A list of LISP implementations in JavaScript==
==JavaScript Implementations==
*
* [http://www.biwascheme.org/ Biwa Scheme] - Conforms to Revised(6) - Open source
 
;Related languages
;Related languages
* [[ClojureScript]] - Functional language that uses LISP syntax.
* [[ClojureScript]] - Functional language that uses LISP syntax.
Line 70: Line 99:
==Publications==
==Publications==
===Books===
===Books===
;English
* John R. Anderson; Albert Corbett; Brian J. Reiser: ''Essential Lisp'' - Addison-Wesley 1986, ISBN 0-201-11148-9
* Patrick Henry Winston and Berthold K.P. Horn: Lisp (Third edition) - 1989 - Addison-Wesley - 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 version of the book is available for [http://www.atarimania.com/documents/LISP.pdf download here] in [[PDF]] format.
: 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] - Free download in [[HTML]] and [[Postscript]] format - 1990 - Digital Press - 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]
;German
* Ernst D. Schmitter: Praktische Einführung in LISP. - 1987 - Hofacker - ISBN 3-88963-229-7
* Peter P. Bothner und Wolf-Michael Kähler: Programmieren in LISP: Eine elementare und anwendungsorientierte Einführung - 1993 - Vieweg+Teubner Verlag - ISBN 3528053232


===Articles and papers===
* Richard P. Gabriel: ''[https://archive.org/details/PerformanceAndEvaluationOfLispSystems Performance And Evaluation Of Lisp Systems]'' - 1985
 
===Articles, talks, presentations and papers===
* [http://home.pipeline.com/~hbaker1/ Henry Baker's Archive of Research Papers] - Primarily Lisp related but a few unrelated papers in-between.
* [http://home.pipeline.com/~hbaker1/ Henry Baker's Archive of Research Papers] - Primarily Lisp related but a few unrelated papers in-between.
* Simon White: ''[http://www.catalysoft.com/articles/goodAboutLisp.html What is good about Lisp?]'' - 2005
* Nick Levine: ''[http://medias.ircam.fr/x31d466 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: ''[http://medias.ircam.fr/x8fb915 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 [http://fare.tunes.org/files/asdf3/asdf3-els2014.pdf PDF].
: Slightly misleading title, the talk is more about the package manager [https://common-lisp.net/project/asdf/ ASDF] than scripting per se.
* Pascal Costanza: ''[http://www.p-cos.net/documents/special-full.pdf 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
* [https://archive.org/details/byte-magazine-1979-08 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: ''[http://medias.ircam.fr/xf0d300 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 [http://research.gold.ac.uk/9924/1/els-specializers.pdf PDF]
;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])
* 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.
* 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
* 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: ''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.


==Links==
==Links==
* [http://cl.cddddr.org/ Japanese Common LISP User Group]
;Tutorials
* [http://www.alu.org/alu/home Association of Lisp Users] - Sponsored by Allegro Lisp.
* [https://alarm.cdm.depaul.edu/lisptutor/ LispTutor Jr.]
 
* [//www.p-cos.net/lisp/guide.html Pascal Costanza's Highly Opinionated Guide to Lisp]
==Standards==
* [https://ccrma.stanford.edu/CCRMA/Courses/AlgoComp/cm/doc/contrib/lispstyle.html Lisp Style Tips for the Beginner]
* 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)


[[Category:Programming Languages]]
[[Category:Programming Languages]][[Category:LISP]]
[[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