Continuations -- spletno ogrodje malo drugače

Preview:

DESCRIPTION

 

Citation preview

Spletno ogrodje malo drugače: continuations

Simon Belak

simon@hruska.si

Potek predavanja

• Motivacija

• Malo teorije

• Prenašanje stanja v spletnih aplikacijah

• Continuations na pomoč

• Zaključek

Motivacija

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

• Prenašanje stanja

Malo teorije

Funkcijsko programiranje

• Funkcije so prvorazredni objekti

• Transformiranje funkcij

• Idealno brez stranskih učinkov

Lexial closure

• Funkcija s kontekstom kot objekt

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

Continuation-passing style

• Eksplicitno prenašanje kontrole

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

Vprašanja?

Prenašanje stanja v spletnih aplikacijah

Najpogostejši prijemi

• Seje

• Skrita polja

• Zahtevki (URL, GET, POST)

• Piškoti

Težave

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

• Življenski cikel seje

• Pomankljive abstrakcije

Continuations na pomoč

Temeljna ideja

• Stanje zavijemo v closure

• Vsak zahtevek je prehod kontrole

Nadgradnje

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

• Asinhronost

Primeri ogrodji

• Seaside

www.seaside.st

• UCW

common-lisp.net/project/ucw/

• PLT Scheme Web Server

www.plt-scheme.org

Zaključek

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

Slabosti

- HTTP prepustimo ogrodju

- Kompleksonst

- Hranjenje (kdaj, kje)

- Sporščanje sredstev

- Razumljivost

- Slaba podpora v večini popularnih jezikov

Vprašanja?

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

Recommended