Lisp
Programska Paradigma: Multi paradigm: funkcijsko, proceduralno
Pojavio se: 1958
Tvorac: John McCarthy
Sistem tipovanja: dinamični, jaki
Glavne implementacije:
Dijalekti: Arc, AutoLISP, Clojure, Common Lisp, Emacs Lisp, EuLisp, Franz Lisp, Hy, Interlisp, ISLISP, LeLisp, LFE, Maclisp, MDL, Newlisp, NIL, Picolisp, Portable Standard Lisp, Racket, Scheme, SKILL, Spice Lisp, T, XLISP, Zetalisp
Utjecali: IPL
Utjecao na: Common Lisp, CLU, COWSEL, Dylan, Falcon, Forth, Haskell, Io, Ioke, JavaScript, Julia, Logo, Lua, Mathematica, MDL, ML, Nu, OPS5, Perl, POP-2/11, Python, R, Rebol, Ruby, Smalltalk, Tcl

Lisp je programski jezik koji je projektovao Džon Makarti krajem 1950-tih. Iako je Lisp opštenamjenski programski jezik, obično se kaže da je jezik vještačke inteligencije, odnosno oblasti u kojoj se najviše koristi. Programiranje u vještačkoj inteligenciji je usko vezano za simbolično procesovanje, gdje standardni programski jezici nerijetko imaju problema. Simbolično procesovanje se koncentriše na reprezentaciju koncepata iz stvarnosti i veze među objektima, umjesto na numeričko procesovanje.

U vrijeme kada je Lisp projektovan, takođe su razvijani drugi programski jezici za VI. Makarti, matematičar po profesiji, težio je da uspostavi čvrstu naučnu osnovu za Lisp. Ta osnova dolazi iz formalne logike. Američki logičar Alonso Čarč, razvio je jasne i nedvosmislene načine za opise ulaza i unutrašnja izračunavanja funkcija. Sistem bilježenja Lambda računa, ponudio je Makartiju odlično definisanu osnovu, na kojoj je bazirao programski jezik Lisp.

Čisti Lisp je primjer funkcionalnog programskog jezika. U funkcionalnom programiranju, funkcije se primjenjuju na argumente i vrijednosti. Vraćene vrijednosti se koriste kao argumenti za druge funkcije. Funkcionalno programiranje je suprotno standardnom i proceduralnom programiranju, gdje se koriste naredbe koje mijenjaju okruženje programa na neki način, kao što je pripisivanje vrijednosti promjenjljivim. U funkcionalnom programiranju, te promjene okruženja se minimizuju korišćenjem vrijednosti koje vraća pozvana funkcija kao direktan ulaz u drugu funkciju, bez upotrebe pripisivanja naredbi.

Kao što samo ime govori (engl. List Processing), primarna struktura podataka Lisp-a je spisak, iako podržava i druge vrste podataka, kao što su cijeli brojevi, brojevi sa pokretnim zarezom, znakovi i nizovi znakova, kao i vrste podataka koje definiše korisnik. Spisak je jednostavna, ali i veoma fleksibilna struktura podataka. U Lisp-u, spisak se sastoji od bilo kojeg broja elemenata podataka u zagradama ili u skupu zagrada. Na primjer, skup cijelih brojeva se predstavlja kao spisak: (1 2 3 4 5 6 7 8 9).

Izvori

uredi

Povezano

uredi

Eksterni linkovi

uredi