21
Spletno ogrodje malo drugače: continuations Simon Belak [email protected]

Continuations -- spletno ogrodje malo drugače

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Continuations -- spletno ogrodje malo drugače

Spletno ogrodje malo drugače: continuations

Simon Belak

[email protected]

Page 2: Continuations -- spletno ogrodje malo drugače

Potek predavanja

• Motivacija

• Malo teorije

• Prenašanje stanja v spletnih aplikacijah

• Continuations na pomoč

• Zaključek

Page 3: Continuations -- spletno ogrodje malo drugače

Motivacija

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

Page 4: Continuations -- spletno ogrodje malo drugače

Malo teorije

Page 5: Continuations -- spletno ogrodje malo drugače

Funkcijsko programiranje

• Funkcije so prvorazredni objekti

• Transformiranje funkcij

• Idealno brez stranskih učinkov

Page 6: Continuations -- spletno ogrodje malo drugače

Lexial closure

• Funkcija s kontekstom kot objekt

Page 7: Continuations -- spletno ogrodje malo drugače

Continuation

• Točka v izvajanju programa

• Različne oblike:– Stack frame (Python)– Prvorazredni objekt (Scheme)– Funkcionalnost operacijskeg sistema (Unix)– ...

• Splošnejša implementacija: lexial closure

Page 8: Continuations -- spletno ogrodje malo drugače

Continuation-passing style

• Eksplicitno prenašanje kontrole

• Težave z globino izvajalnega sklada– Tail call optimisation

Page 9: Continuations -- spletno ogrodje malo drugače

Vprašanja?

Page 10: Continuations -- spletno ogrodje malo drugače

Prenašanje stanja v spletnih aplikacijah

Page 11: Continuations -- spletno ogrodje malo drugače

Najpogostejši prijemi

• Seje

• Skrita polja

• Zahtevki (URL, GET, POST)

• Piškoti

Page 12: Continuations -- spletno ogrodje malo drugače

Težave

• Nelinearnost – Vejenje navigacije (zavihki, več oken)– Skoki naprej/nazaj

• Življenski cikel seje

• Pomankljive abstrakcije

Page 13: Continuations -- spletno ogrodje malo drugače

Continuations na pomoč

Page 14: Continuations -- spletno ogrodje malo drugače

Temeljna ideja

• Stanje zavijemo v closure

• Vsak zahtevek je prehod kontrole

Page 15: Continuations -- spletno ogrodje malo drugače

Nadgradnje

• Vmesne rezultate izračunamo šele, ko jih potrebujemo (lazy evaluation)

• Asinhronost

Page 16: Continuations -- spletno ogrodje malo drugače

Primeri ogrodji

• Seaside

www.seaside.st

• UCW

common-lisp.net/project/ucw/

• PLT Scheme Web Server

www.plt-scheme.org

Page 17: Continuations -- spletno ogrodje malo drugače

Zaključek

Page 18: Continuations -- spletno ogrodje malo drugače

Prednosti

+ Koda odraža problem

+ Nelinearnost

+ Dodatna stopnja abstrakcije+ Postopen razvoj+ Prenosljivost (tudi onkraj spleta)

+ Za razvoj lahko uporabimo klasična orodja

+ HTTP prepustimo ogrodju

Page 19: Continuations -- spletno ogrodje malo drugače

Slabosti

- HTTP prepustimo ogrodju

- Kompleksonst

- Hranjenje (kdaj, kje)

- Sporščanje sredstev

- Razumljivost

- Slaba podpora v večini popularnih jezikov

Page 20: Continuations -- spletno ogrodje malo drugače

Vprašanja?

Page 21: Continuations -- spletno ogrodje malo drugače

Viri

• common-lisp.net/project/ucw/docs/html/rest/rest.html• www.stackless.com/spcpaper.htm• www.interact-sw.co.uk/iangblog/2006/05/21/webcontinuations• www.double.co.nz/pdf/continuations.pdf• www.paulgraham.com/lib/paulgraham/bbnexcerpts.txt