25
Meditacija o Lispu, programih in življenju [email protected]

Meditacija o Lispu programih in življenju

Embed Size (px)

DESCRIPTION

Ko ljudje z navdušenjem razlagajo o zmožnostih zadnjega "čudežnega" programskega jezika, se LISPerji le pokroviteljsko nasmihamo. Spokojni smo v vednosti, da je vse kar je žlahtnega, LISP imel že pred dvajsetimi leti, ostalo pa tako ni vredno našega ostrega uma in delikatnih prstov. Zaprisežen lisper Simon Belak bo na Pipinem odprtem terminu v torek, 13.10., ob 19h pokazal, zakaj je takšna skrajna aroganca skorajda upravičena in nas popeljal v zakulisje programabilnih programskih jezikov lisp. Predavanje se bo osredotočilo na program kot razmerje med podatki, kodo in izvajalnim okoljem. Vse to, popestreno z izdatno mero samovšečnosti in občasnimi opazkami o praktični uporabi.

Citation preview

Page 1: Meditacija o Lispu programih in življenju

Meditacija o Lispu, programih in življenju

[email protected]

Page 2: Meditacija o Lispu programih in življenju

Lisp?

Page 3: Meditacija o Lispu programih in življenju

Srečno naključje

Lisp kot univerzalna funkcija

Page 4: Meditacija o Lispu programih in življenju

7 aksiomov

(quote x)(atom x)(eq x y)(car x)(cdr x)(cons x y)(cond (p1 e1) (p2 e2) ... (pn en))

Page 5: Meditacija o Lispu programih in življenju

Funkcije

Denotacija(lambda (p1 p2 ... pn) e)

Klic((lambda (p1 p2 ... pn) e) a1 a2 ... an)

Rekurzija Y-kombinator (lambda račun)

Page 6: Meditacija o Lispu programih in življenju

Metakrožni interpretator

Page 7: Meditacija o Lispu programih in življenju

Homoikoničnost

Koda = podatkiDrevo abstraktne sintakse

Page 8: Meditacija o Lispu programih in življenju

Makri

Page 9: Meditacija o Lispu programih in življenju

Program

ki piše program,ki piše program,ki piše program,ki piše program,

ki piše program,ki piše program,

ki piše program,

...

Programi vse do dna

Page 10: Meditacija o Lispu programih in življenju

Vstopanje v prevajalno okolje

ParserKontekstualna preoblikovanja Mini jeziki

Vsakdo si razvije svoj Lisp

Page 11: Meditacija o Lispu programih in življenju

Parser

Nova sintaksa#P”/home/simon/foo.bar” => #S(pathname :directory “/home/simon” :name “foo” :type "bar")

Page 12: Meditacija o Lispu programih in življenju

Kontekstualna preoblikovanja

Preoblikovanja kode glede na raboSuperprevajalnikiSuperoptimizatorji

(mapcar #’square (mapcar #’+ xs ys)=>(mapcar (lambda (x y) (square (+ x y))) xs ys)

Page 13: Meditacija o Lispu programih in življenju

Mini jeziki

Kontrolne strukutureRed vrednotenjaGeneriranje kodeSintaksa

Page 14: Meditacija o Lispu programih in življenju

Meje mojega jezika pomenijo meje mojega sveta.

– Wittgenstein

Page 15: Meditacija o Lispu programih in življenju

Svoboda misli

Funkcijsko programiranjeObjektno programiranjeLogično programiranjeImperativno programiranjeDeklerativno programiranjeAspektno programiranje

Page 16: Meditacija o Lispu programih in življenju

Ko pisanje prevajalnikov postane nekaj vsakdanjega

Page 17: Meditacija o Lispu programih in življenju

O življenju

Page 18: Meditacija o Lispu programih in življenju

Vsak program je utelešen

MejaMera

Page 19: Meditacija o Lispu programih in življenju

Meja

Jaz in drugiPlaniranje v nedeterminističnem okoljuIzmenjavanje določljivega in nedoločljivega

Zmagam lahko le, če prej ne zgubim

Page 20: Meditacija o Lispu programih in življenju

Program pred ogledalom

Samo-reprezentacijaMetakrožen interpretator

Dostop do prevajalnega okoljaDostop do izvajalnega okolja

RefleksijaIntrospekcija

Page 21: Meditacija o Lispu programih in življenju

Mera

Človek je merilo vsega . – Protagora

Ozemljitev pomenaPomen je uporabaReferenčna točka

Page 22: Meditacija o Lispu programih in življenju

Samozavedanje?

Page 23: Meditacija o Lispu programih in življenju
Page 24: Meditacija o Lispu programih in življenju

Genealogija Lispa

Common LispSchemeClojureEmacs Lisp

Page 25: Meditacija o Lispu programih in življenju

Razvojna okolja

EmacsLispWorksAllegro CLEclipse + Cusp