Lisp (programmeertaal)

Lisp
Lisp
Paradigma Functioneel, Multiparadigma
Verschenen 1958
Ontworpen door John McCarthy
Ontwikkeld door Steve Russell, Timothy P. Hart en Mike Levin
Typesysteem dynamisch, sterk
Dialecten Arc, AutoLISP, Clojure, Common Lisp, Emacs Lisp, Hy, Interlisp, Maclisp, PicoLisp, Racket, Scheme, Zetalisp
Invloed op CLIPS, Dylan, Elixir, Forth, Haskell, JavaScript, Julia, Logo, Lua, ML, Nim, Perl, Python, R, Rebol, Ruby, Scala, Smalltalk
Besturingssysteem Multiplatform
Portaal  Portaalicoon   Informatica

Lisp (een afkorting voor LISt Processing) is een familie van programmeertalen met een lange geschiedenis binnen de Informatica. De eerste versie van Lisp werd van 1956 tot en met 1958 aan het MIT ontworpen door John McCarthy.[1] Lisp is na Fortran de oudste hogere programmeertaal die nog steeds in gebruik is.

Zoals veel programmeertalen is Lisp door de jaren heen sterk veranderd, en er zijn veel dialecten en andere talen van afgeleid, zoals Scheme, Common Lisp, Emacs Lisp en AutoLISP. Er zijn ook dialecten die draaien op al bestaande omgevingen, waardoor bestaande bibliotheken direct in de taal gebruikt kunnen worden. Hiervan is Clojure een voorbeeld, die door te draaien op de JVM met bestaande Java code samenwerkt zonder FFI.

Lisp is ontworpen als een manier om de lambdacalculus van Alonzo Church praktisch toe te passen. Lisp-programma's bestaan grotendeels uit bewerkingen op lijsten en zijn zelf ook bewerkbare lijsten. Deze eigenschap van zelfde representatie wordt homoiconiciteit genoemd, en staat toe dat code die met lijsten werken dus ook Lisp code zelf als invoer en uitvoer accepteren. Hierdoor is het mogelijk om nieuwe syntax tot in de taal in te bouwen door enkel te beschrijven hoe deze syntax zich vertaalt naar semantiek die al in de taal aanwezig is.

Het bekendste toepassingsgebied voor Lisp als programmeertaal voor zelfstandige programma's is de kunstmatige intelligentie (AI). Daarnaast heeft de taal populariteit gekregen als scripttaal voor bepaalde applicaties, bijvoorbeeld Emacs Lisp voor Emacs (een teksteditor) en AutoLISP voor AutoCAD (een CAD/CAM-programma).

Lisp is feitelijk een multi-paradigmaprogrammeertaal: naast zuiver functioneel programmeren ondersteunt het door zijn toewijzingsprimitieven ook imperatief programmeren, en er zijn verscheidene bibliotheken voor objectgeoriënteerd programmeren, zoals het Common Lisp Object System (CLOS), een standaard onderdeel van Common Lisp.

Lisp heeft ook een zichtbare rol gespeeld in het programmeeronderwijs, zeker bij MIT. In 1984 is de eerste editie van het boek Structure and Interpretation of Computer Programs gepubliceerd, waarna het is gebruikt om de fundamenten van programmeren te leren en er ook een tweede editie kwam.[2] De voorbeelden werden gegeven in Scheme, een dialect van Lisp. Veel later in 2022 kwam er ook een editie in JavaScript.[3]