LISP: Difference between revisions

The educational technology and digital learning wiki
Jump to navigation Jump to search
 
Line 37: Line 37:


=== 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)

Latest revision as of 13: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