Lisp: Forskelle mellem versioner

Content deleted Content added
Udbygning og omformulering + smårettelser
m Tilføjet links
Linje 1:
'''Lisp''', eller '''LISP''' (forkortelse for LISt Processing) er et [[dynamisk typet]], [[funktionsorienteret]] [[programmeringssprog]].
 
Sproget er baseret på en matematisk teori - [[Alonzo Church]]'s [[lambda calculus]] fra 1936. Det blev opfundet af [[John McCarthy]] i 1958. Beskrivelsen blev publiceret i 1960 og sproget blev for første gang implementeret af [Steve Russell] i 1961. Dermed er LISP et af de ældste højniveau-[[programmeringssprog]]; blandt de nulevende og stadigvæk mest udbredte er det kun [[Fortran]] der er ældre.
 
LISP har væsentlig betydning inden for [[kunstig intelligens]] og er velegnet til [[metaprogrammering]], sidstnævnte ikke mindst i kraft af et Lisps kendemærker: programmer og data har grundlæggende samme repræsentation; derved er det naturligt at lade programmer generere og transformere andre programmer.
 
Både data og programmer repræsenteres i LISP i form af [[liste]]rlister. En [liste] består af en samling elementer, som hver især enten kan være et [[atom]] - en simpel værdi eller et symbol - eller en liste. En liste er altså en [rekursiv] størrelse. Derfor defineres funktioner[[funktion]]er tit også rekursivt: man splitter en liste op i et hoved, som er det første element, og en hale, som udgøres af resten af listen. Halen består så af et hoved og en hale, osv.; i et grænsetilfalde er halen tom. Operationerne til at plukke hovedet hhvs. halen af en liste er blandt de grundlæggende operationer i LISP.
 
LISPs lister kan bruges til at repræsentere andre abstrakte datastrukturer. Fx kan et [[træ]] repræsenteres af en liste af lister.
 
I den oprindelige LISP eksisterer lagerbegrebet[arbejdslager]begrebet ikke, dvs. man opererer ikke med [variabler], og [[funktionskald]] har ingen [[bivirkninger]]; en funktion definerer en ren [transformation] af [[input]], som er en parameterliste[[parameter]]liste, til en outputværdi[[output]]værdi, som også er en liste.
 
Moderne [[LISP-dialekter]] tillader et vist mål af bivirkninger. Nogle af dialekterne indfører også andre [[programmeringsparadigme]]r end det funktionsorienterede - fx det [[objektorienterede]].
 
Når en LISP-funktion kaldes vil den ofte få en [[parameter]] med der indeholder oplysninger om den [[kontekst]] hvori kaldet fandt sted; dvs. virkningen af udførelsen af funktionskaldet kan afhænge meget af kaldets kontekst, ligesom et ords betydning ([[semantik]]) i et naturligt - dvs. almindeligt - sprog ofte afhænger af i hvilken sætning (eller, generelt, sammenhæng/kontekst) det nævnes.
 
[[Kategori:Programmeringssprog]]