Lisp: Forskelle mellem versioner

Content deleted Content added
Fjerner version 3446116 af Henrykwdk (diskussion). Begrundelse: rettelsen var ikke færdig.
Udbygning og omformulering + smårettelser
Linje 1:
'''Lisp''', eller '''LISP''' (forkortelse for LISt Processing) er et [[dynamisk typet]] [[funktionsorienteret]] [[programmeringssprog]] og er en forkortelse for LISt Processing.
 
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.
Det er et af de ældste programmeringssprog og opstod som en matematisk teori, som der så var nogen der implementerede. Det har væsentlig betydning indenfor [[kunstig intelligens]] og er velegnet til [[metaprogrammering]].
 
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.
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 ord's betydning ([[semantik]]) i almindeligt sprog ofte afhænger af i hvilken sætning ( kontekst ) det nævnes.
Både data og programmer repræsenteres i LISP i form af [[liste]]r. 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 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 ikke, dvs. man opererer ikke med variabler, og funktionskald har ingen bivirkninger; en funktion definerer en ren transformation af input, som er en parameterliste, til en outputvæ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., Ligesomligesom et ord'sords betydning ([[semantik]]) i et naturligt - dvs. almindeligt - sprog ofte afhænger af i hvilken sætning (eller, kontekstgenerelt, sammenhæng/kontekst) det nævnes.
 
[[Kategori:Programmeringssprog]]