LISP, list processing, er et programmeringssprog med stor betydning for udviklingen af senere programmeringssprog, særligt de såkaldte funktionelle programmeringssprog.

LISP blev skabt i 1958 af en forskergruppe ved MIT i Boston under ledelse af matematikeren John McCarthy (1927-2011) til forskning i kunstig intelligens. Sprogets design er baseret på lambdakalkyle, som er en model for beregninger, der har udbredt anvendelse i teoretisk datalogi. Derfor anvendes varianter af LISP ofte i forbindelse med teoretisk datalogi.

Hvor de andre tidlige programmeringssprog hovedsageligt arbejder med tal, vektorer og matricer, arbejder LISP med symboler og lister, hvor lister kan indlejres i andre lister. Det giver en datatype, som kan bruges til at repræsentere symbolske udtryk. Derfor er LISP velegnet til fx symbolsk behandling af matematiske formler eller grammatisk analyse af naturligt sprog.

Et LISP-program har selv form af en liste, hvilket gør det nemt at skrive LISP-programmer, der virker på andre LISP-programmer, fx oversættere eller fortolkere.

Senere udvikling og dialekter af LISP

Af effektivitetsgrunde blev der fra midten af 1970'erne udviklet specielle LISP-maskiner, som blev banebrydende med hensyn til udformning af programudviklingssystemer og brugergrænseflader. Sidenhen har bedre implementeringsmetoder på almindelige computere gjort LISP-maskiner overflødige, men moderne udviklingssystemer og brugergrænseflader med vinduer og menuer tager udgangspunkt i de systemer, der blev udviklet på LISP-maskiner.

Common LISP er en standard fra 1980'erne, der søgte at forene de mange eksisterende varianter af LISP i et samlet sprog. Blandt andet understøtter Common LISP objektorienteret programmering. Scheme fra 1975 er en andet meget udbredt dialekt af LISP, der i stedet søgte at forenkle sproget og gøre forbindelsen til lambdakalkylen stærkere. Clojure (et ordspil på begrebet closure, der er en mekanisme til at implementere funktioner som værdier, der kan ligge i variabler) er en variant af LISP til Javas virtuelle maskine. J'et i navnet stammer fra forbindelsen til Java.

Indflydelse på senere programmeringssprog

LISP var banebrydende på mange måder. Dels var det det første sprog, hvor funktioner kunne erklæres lokalt i andre funktioner, kalde sig selv (en mekanisme, der kaldes rekursion), og bruges som værdier. De lokale erklæringer og muligheden for rekursion blev indført i sproget ALGOL i 1960, og muligheden for at bruge funktioner som værdier er central i de funktionelle programmeringssprog, fx ML og Haskell.

En anden egenskab ved LISP, der har haft stor indflydelse på moderne programmeringssprog er automatisk lagerhåndtering (også kaldet garbage collection), som betyder, at programmøren ikke selv skal holde styr på, hvornår data ikke længere bruges, og deres plads derfor genbruges til nyt data. Denne mekaniske er næsten universelt brugt i moderne funktionelle og objektorienterede programmeringssprog.

LISP var også det første programmeringssprog til at bruge et interaktivt kørselsmiljø, hvor en bruger kan skrive regneudtryk og få dem beregnet med det samme uden at skulle indlejre dem i programmer, der skal oversættes til maskinkode, inden de skal køres. Den slags read-eval-print-loop er senere brugt i sprog som fx BASIC og Python og i de fleste funktionelle programmeringssprog.

Læs mere i Den Store Danske

Kommentarer

Kommentarer til artiklen bliver synlige for alle. Undlad at skrive følsomme oplysninger, for eksempel sundhedsoplysninger. Fagansvarlig eller redaktør svarer, når de kan.

Du skal være logget ind for at kommentere.

eller registrer dig