Hopp til innhold

Lisp

Fra Wikipedia, den frie encyklopedi
Lisp
Tilblivelse1958
ParadigmeMulti-paradigme: Funksjonell programmering, prosedyrisk programmering, metaprogrammering, selvmodifiserende programmering
Designet avJohn McCarthy
Utviklet avJohn McCarthy, Steve Russell
Typetildeling dynamisk, sterk
Påvirket av
Information Processing Language

LISP (forkortelse for List Processing) er en familie av programmeringsspråk. Den første utgaven stammer fra John McCarthys arbeid ved Massachusetts Institute of Technology og ble utviklet i 1958. LISP har mye til felles med Lambdakalkyle. Historisk sett har LISP stort sett vært brukt innenfor forskning og det akademiske, og da spesielt til forskning på kunstig intelligens, som John McCarthy først og fremst hadde i tankene da han fant det opp.

Det er en rekke forskjellige LISP-dialekter, men «hovedgrenene» er Scheme og Common Lisp. Scheme er en veldig enkel og «ren» LISP-dialekt, der regelfølgende syntaks med kun det mest nødvendige av datatyper og funksjoner er tilgjengelig. Dette gjør det ideelt til opplæring i programmering og fundamentale programmeringskonsepter. Common Lisp er en mer kompleks LISP-dialekt, med et mye bredere utvalg av datatyper og funksjoner, og har også et objektorienteringssystem, samt et makrosystem som gjør det mulig å skrive kode som, ved hjelp av å bruke Lisp selv, kan generere annen kode.

Lisp har vist seg å være et meget effektivt språk også til andre ting enn det akademiske og forskningsrelaterte som det ofte blir forbundet med. Spesielt Common Lisp har hatt en stor økning i antall brukere de siste 10 årene, noe som tyder på at folk har begynt å få opp øynene for Lisp som et anvendelig programmeringsspråk til mer vanlige bruksområder.

Lisp er kjent for å ha en enkel og elegant syntaks, selv om det ofte kritiseres for lesbarheten av mange nøstede parenteser. Det aritmetiske uttrykket kan uttrykkes som bl.a:

(+ 1 (* 2 3) 4 -1)
eller
(- (+ 1 (* 2 3) 4) 1)

Hvert parentespar representerer en lenket liste hvor hodet er navnet på en funksjon ('+', '-' og '*' i eksempelet er alle funksjoner innebygd i LISP), de resterende elementene i listen tolkes som argumenter til funksjonen. Listene evalueres rekursivt, altså den "innerste" parentesen først, en fordel med en slik syntaks er at det eliminerer den type tvetydighet som vi finner i f.eks. andre representasjoner av aritmetiske uttrykk, hvor man må introdusere regler for presedens (multiplikasjon før addisjon, blant annet), med påtvunget bruk av nøstede parenteser er det aldri tvil om utføringsrekkefølgen. Øvrig syntaks avhenger for det meste av hvilken dialekt av språket man skriver i.

Eksterne lenker

[rediger | rediger kilde]