LISP: Difference between revisions

The educational technology and digital learning wiki
Jump to navigation Jump to search
 
(12 intermediate revisions by the same user not shown)
Line 7: Line 7:
{{quotation|Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older. Like Fortran, Lisp has changed a great deal since its early days, and a number of dialects have existed over its history. Today, the most widely known general-purpose Lisp dialects are Common Lisp and Scheme. ([http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 Wikipedia], retrieved 17:56, 10 April 2008 (UTC))}}
{{quotation|Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older. Like Fortran, Lisp has changed a great deal since its early days, and a number of dialects have existed over its history. Today, the most widely known general-purpose Lisp dialects are Common Lisp and Scheme. ([http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 Wikipedia], retrieved 17:56, 10 April 2008 (UTC))}}


{{quotation|Common Lisp is well suited to large programming projects and explorative programming. The language has a dynamic semantics which distinguishes it from languages such as C and Ada. It features automatic memory management, an interactive incremental development environment, a module system, a large number of powerful data structures, a large standard library of useful functions, a sophisticated object system supporting multiple inheritance and generic functions, an exception system, user-defined types and a macro system which allows programmers to extend the language.[ http://www.cons.org/cmucl/ CMUCL], retrieved 17:56, 10 April 2008 (UTC)).}}
{{quotation|Common Lisp is well suited to large programming projects and explorative programming. The language has a dynamic semantics which distinguishes it from languages such as C and Ada. It features automatic memory management, an interactive incremental development environment, a module system, a large number of powerful data structures, a large standard library of useful functions, a sophisticated object system supporting multiple inheritance and generic functions, an exception system, user-defined types and a macro system which allows programmers to extend the language. [http://www.cons.org/cmucl/ CMUCL], retrieved 17:56, 10 April 2008 (UTC)).}}


On a personal note: LISP is the only programming language, the [[User:Daniel K. Schneider|main contributor]] to this Wiki ever liked. Same is true for a special purpose PC I worked with in the late eighties, a [http://en.wikipedia.org/wiki/Symbolics Symbolics 3620]. It was the future in many ways. I started this page because I do teach some more recent stuff like JavaScript or PHP basics to non-programmers and sometimes (like today) I just wonder why those languages are so ugly and so unreliable compared to what we had 20 years ago and after some googling I found out that LISP and even AI is well alive and maybe even coming back a bit. Maybe I should trash PHP teaching at TECFA and go for Scheme instead :)
On a personal note: LISP is the only programming language, the [[User:Daniel K. Schneider|main contributor]] to this Wiki ever liked. Same is true for a special purpose PC I worked with in the late eighties, a [http://en.wikipedia.org/wiki/Symbolics Symbolics 3620]. It was the future in many ways. I started this page because I do teach some more recent stuff like JavaScript or PHP basics to non-programmers and sometimes (like today) I just wonder why those languages are so ugly and so unreliable compared to what we had 20 years ago and after some googling I found out that LISP and even AI is well alive and maybe even coming back a bit. Maybe I should trash PHP teaching at TECFA and go for Scheme instead :)
Line 23: Line 23:
* Lisp-based web servers can be used to implement adaptive hypertext systems.
* Lisp-based web servers can be used to implement adaptive hypertext systems.


== Tutorials ==
== Tutorials and documentation ==


=== Short introductions ===
=== Short introductions and overviews ===


* [http://www.paulgraham.com/diff.html What made LISP different], by Paul Graham, 2002.
* [http://www.paulgraham.com/diff.html What made LISP different], by Paul Graham, 2002.
* [http://www-128.ibm.com/developerworks/java/library/j-cb02067.html Crossing borders: The beauty of Lisp] by Bruce Tate, IBM DeveloperWorks, Feb 2007.
* [http://www-128.ibm.com/developerworks/java/library/j-cb02067.html Crossing borders: The beauty of Lisp] by Bruce Tate, IBM DeveloperWorks, Feb 2007.
* [http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 Lisp (programming language)] (Wikipedia)


=== Beginner's tutorials ===
=== Beginner's tutorials ===


* [http://www.builderau.com.au/program/soa/A-Quickstart-to-Common-Lisp A Quickstart to Common Lisp] by Nick Gibson.
* [http://www.builderau.com.au/program/soa/A-Quickstart-to-Common-Lisp A Quickstart to Common Lisp] by Nick Gibson.
* [http://www.adampetersen.se/articles/lispweb.htm Lisp for the Web] by Adam Petersen, April 2008


=== Books ===
=== Books ===
* [https://lispcookbook.github.io/cl-cookbook/ The Common Lisp Cookbook], a {{quotation|book containing recipes and other information about the preparation and cooking of food. Now with extra Lisp}}. Free and online.


* Peter Seibel (2005). [http://gigamonkeys.com/book/ Practical Common Lisp], Apress. (free online version of the ISBN 1590592395 book)
* Peter Seibel (2005). [http://gigamonkeys.com/book/ Practical Common Lisp], Apress. (free online version of the ISBN 1590592395 book)
Line 43: Line 47:


* [http://bc.tech.coop/blog/051219.html  Using a Lisp Web Server Behind Apache]
* [http://bc.tech.coop/blog/051219.html  Using a Lisp Web Server Behind Apache]
* [http://www.cliki.net/A%20Short%20web%20application%20tutorial A Short web application tutorial]


== Software ==
== Software ==
Line 48: Line 54:
=== Common LISP implementations ===
=== Common LISP implementations ===


* [http://www.cons.org/cmucl/ CMUCL]. a free implementation of the Common Lisp programming language which runs on most major Unix platforms.
There exist a number of good Common Lisp implementations, including a few free ones (updated 17/2020).
 
'''Free implementations'''
 
* [http://www.sbcl.org/ Steel Bank Common Lisp] {{quotation|is a high performance Common Lisp compiler. It is open source / free software, with a permissive license. In addition to the compiler and runtime system for ANSI Common Lisp, it provides an interactive environment including a debugger, a statistical profiler, a code coverage tool, and many other extensions.}}. A branch from CMUCL, it runs on a number of POSIX platforms, and experimentally on Windows.
 
* [https://clisp.sourceforge.io/ CLISP]. {{quotation|CLISP includes an interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface, i18n, POSIX and Perl regular expressions, a socket interface, fast bignums, arbitrary precision floats, and more.}}. Runs under Linux, MacOS X and Windows (via cywin)
 
* [http://www.cons.org/cmucl/ CMUCL]. A free implementation of the Common Lisp programming language which runs on most major Unix platforms.


* [http://www.gnu.org/software/gcl/ GCL] The GNU implementation of Common Lisp.
* [http://www.gnu.org/software/gcl/ GCL] The GNU implementation of Common Lisp.


* [http://trac.clozure.com/openmcl Clozure CL] is an open source Common Lisp implementation that runs on PowerPC hardware under Mac OS X and LinuxPPC, and on x86-64 hardware under Linux, Mac OS X, and FreeBSD.
* [https://ccl.clozure.com/ Clozure CL] {{quotation|(often called CCL for short) is a free Common Lisp implementation with a long history. Some distinguishing features of the implementation include fast compilation speed, native threads, a precise, generational, compacting garbage collector, and a convenient foreign-function interface.}}
 
'''Commercial'''


* [http://www.cliki.net/SBCL Steel Bank Common Lisp] (SBCL) open source / free software Common Lisp implementation. this is a fork of CMUCL.
* [https://franz.com/products/allegro-common-lisp/ Allegro Common Lisp] (Franz Inc.)
* [http://www.lispworks.com/ LispWorks]. A free (heap and time limited) version is available for personal use.


=== Webservers in LISP or Scheme ===
=== Webservers in LISP or Scheme ===


* [http://www.cl-http.org:8001/cl-http/ CL-HTTP] developped at MIT under the lead of J. Mallery.
* [http://www.ai.mit.edu/projects/iiip/doc/cl-http/cl-http.html CL-HTTP] was developped at MIT under the lead of J. Mallery. The system seems to be no longer maintained.
 
* [http://www.cliki.net/araneida araneida]. Araneida is a fairly small free extensible Web server for SBCL and many other Common Lisp implementations .
 
* [https://edicl.github.io/hunchentoot/ Hunchentoot] The Common Lisp web server formerly known as TBNL


* [http://www.cliki.net/araneida araneida]. Araneida is a fairly small free extensible Web server for SBCL and many other Common Lisp implementations
* [https://github.com/mbattyani/mod_lisp Mod_lisp] to run a lisp with Apache.


* [http://weitz.de/hunchentoot/ HUNCHENTOOT] The Common Lisp web server formerly known as TBNL
* [http://allegroserve.sourceforge.net/ AllegroServe]. a Web HTTP/Application Server. Free (LLGPL), made by John Foderaro (Franz Inc.)


* [http://www.fractalconcept.com/asp/l3e/sdataQGnvOIUXZNjDDM==/sdataQuvY9x3g$ecX Mod_lisp] to run a lisp with Apache.
=== Repositories ===


* AllegroServe
* [http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/0.html CMU Artificial Intelligence Repository]


=== Various ===
* See also [[http://www.cliki.net/ CLIKI]


(to sort out when it grows)
=== Various links  ===


* [http://wilbur-rdf.sourceforge.net/ Wilbur Semantic Web Toolkit for CLOS]. Wilbur is Nokia Research Center's toolkit for programming Semantic Web applications that use RDF (as well as XML and/or DAML+OIL), written in Common Lisp.
See [http://www.cliki.net/ CLIKI]. It {{quotation |contains resources for learning about and using the programming language Common Lisp, and information about DFSG-compliant free software implemented in Common Lisp.}}
** [http://www.cliki.net/wilbur-ex wilbur-ext] is a small package of extensions


* [http://pws.prserv.net/James.Anderson/XML/ CL-XML] An XML library for CL. The modules perform parsing and serialization between XML, XML Query, and XML Path expressions and DOM-compatible CLOS instances.
For example:
* [http://www.cliki.net/web web]
* [http://www.cliki.net/AI AI]


== Links ==
== Links ==


* [http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 Lisp (programming language)] (Wikipedia)
* [http://www.cliki.net/ Cliki] The common lisp wiki. Probably the best overal resource currently. Sorted by resources type or application domain.
 
* [https://lisp-lang.org/ Lisp-lang.org]. A tutorial.


* [http://lisperati.com/ Lisperati] Funny ''and'' serious.
* [http://lisperati.com/ Lisperati] Funny ''and'' serious.


* [http://www.cliki.net/ Cliki] The common lisp wiki.


=== Collections of links ===
=== Collections of links ===


* [http://www.paulgraham.com/lisplinks.html LISP Links] (Paul Graham).
* [http://www.paulgraham.com/lisplinks.html LISP Links] (Paul Graham).
=== Opinions ===
* [http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html Dynamic Languages Strike Back] by Steve Yegge, May 2008.


[[Category: Programming]]
[[Category: Programming]]
[[Category: Artificial intelligence]]

Latest revision as of 14:43, 17 September 2020

Draft

Definition

LISP is a multi-paradigm family of programming languages. It was and is popular in artificial intelligence research, but also for teaching programming fundamentals in elite schools.

“Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older. Like Fortran, Lisp has changed a great deal since its early days, and a number of dialects have existed over its history. Today, the most widely known general-purpose Lisp dialects are Common Lisp and Scheme. (Wikipedia, retrieved 17:56, 10 April 2008 (UTC))”

“Common Lisp is well suited to large programming projects and explorative programming. The language has a dynamic semantics which distinguishes it from languages such as C and Ada. It features automatic memory management, an interactive incremental development environment, a module system, a large number of powerful data structures, a large standard library of useful functions, a sophisticated object system supporting multiple inheritance and generic functions, an exception system, user-defined types and a macro system which allows programmers to extend the language. CMUCL, retrieved 17:56, 10 April 2008 (UTC)).”

On a personal note: LISP is the only programming language, the main contributor to this Wiki ever liked. Same is true for a special purpose PC I worked with in the late eighties, a Symbolics 3620. It was the future in many ways. I started this page because I do teach some more recent stuff like JavaScript or PHP basics to non-programmers and sometimes (like today) I just wonder why those languages are so ugly and so unreliable compared to what we had 20 years ago and after some googling I found out that LISP and even AI is well alive and maybe even coming back a bit. Maybe I should trash PHP teaching at TECFA and go for Scheme instead :)

Today, there are still several popular flavors of LISP, e.g.

  • CommonLISP (the dominant LISP before the 90' "AI winter"
  • Scheme
  • EmacsLISP (to program the Emacs editor)

Furthermore, there exist libraries for various programming languages and that implement subsets of LISP or Scheme or implement at least some features.

In education

  • A large part (or even the majority) of Intelligent tutoring systems have been programmed in LISP or on top of expert system engines programmed in LISP.
  • Lisp-based web servers can be used to implement adaptive hypertext systems.

Tutorials and documentation

Short introductions and overviews

Beginner's tutorials

Books

  • The Common Lisp Cookbook, a “book containing recipes and other information about the preparation and cooking of food. Now with extra Lisp”. Free and online.
  • Paul Graham On LISP is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. (Free online version of Prentice Hall, 1993, 432 pages, paperback. ISBN 0130305529).

LISP and web

Software

Common LISP implementations

There exist a number of good Common Lisp implementations, including a few free ones (updated 17/2020).

Free implementations

  • Steel Bank Common Lisp “is a high performance Common Lisp compiler. It is open source / free software, with a permissive license. In addition to the compiler and runtime system for ANSI Common Lisp, it provides an interactive environment including a debugger, a statistical profiler, a code coverage tool, and many other extensions.”. A branch from CMUCL, it runs on a number of POSIX platforms, and experimentally on Windows.
  • CLISP. “CLISP includes an interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface, i18n, POSIX and Perl regular expressions, a socket interface, fast bignums, arbitrary precision floats, and more.”. Runs under Linux, MacOS X and Windows (via cywin)
  • CMUCL. A free implementation of the Common Lisp programming language which runs on most major Unix platforms.
  • GCL The GNU implementation of Common Lisp.
  • Clozure CL “(often called CCL for short) is a free Common Lisp implementation with a long history. Some distinguishing features of the implementation include fast compilation speed, native threads, a precise, generational, compacting garbage collector, and a convenient foreign-function interface.”

Commercial

Webservers in LISP or Scheme

  • CL-HTTP was developped at MIT under the lead of J. Mallery. The system seems to be no longer maintained.
  • araneida. Araneida is a fairly small free extensible Web server for SBCL and many other Common Lisp implementations .
  • Hunchentoot The Common Lisp web server formerly known as TBNL
  • AllegroServe. a Web HTTP/Application Server. Free (LLGPL), made by John Foderaro (Franz Inc.)

Repositories

Various links

See CLIKI. It “contains resources for learning about and using the programming language Common Lisp, and information about DFSG-compliant free software implemented in Common Lisp.”

For example:

Links

  • Cliki The common lisp wiki. Probably the best overal resource currently. Sorted by resources type or application domain.


Collections of links

Opinions