continuations -- spletno ogrodje malo drugače
DESCRIPTION
TRANSCRIPT
![Page 2: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/2.jpg)
Potek predavanja
• Motivacija
• Malo teorije
• Prenašanje stanja v spletnih aplikacijah
• Continuations na pomoč
• Zaključek
![Page 3: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/4.jpg)
Malo teorije
![Page 5: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/5.jpg)
Funkcijsko programiranje
• Funkcije so prvorazredni objekti
• Transformiranje funkcij
• Idealno brez stranskih učinkov
![Page 6: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/6.jpg)
Lexial closure
• Funkcija s kontekstom kot objekt
![Page 7: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/8.jpg)
Continuation-passing style
• Eksplicitno prenašanje kontrole
• Težave z globino izvajalnega sklada– Tail call optimisation
![Page 9: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/9.jpg)
Vprašanja?
![Page 10: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/10.jpg)
Prenašanje stanja v spletnih aplikacijah
![Page 11: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/11.jpg)
Najpogostejši prijemi
• Seje
• Skrita polja
• Zahtevki (URL, GET, POST)
• Piškoti
![Page 12: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/12.jpg)
Težave
• Nelinearnost – Vejenje navigacije (zavihki, več oken)– Skoki naprej/nazaj
• Življenski cikel seje
• Pomankljive abstrakcije
![Page 13: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/13.jpg)
Continuations na pomoč
![Page 14: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/14.jpg)
Temeljna ideja
• Stanje zavijemo v closure
• Vsak zahtevek je prehod kontrole
![Page 15: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/15.jpg)
Nadgradnje
• Vmesne rezultate izračunamo šele, ko jih potrebujemo (lazy evaluation)
• Asinhronost
![Page 16: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/16.jpg)
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](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/17.jpg)
Zaključek
![Page 18: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/18.jpg)
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](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/19.jpg)
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](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/20.jpg)
Vprašanja?
![Page 21: Continuations -- spletno ogrodje malo drugače](https://reader038.vdocuments.pub/reader038/viewer/2022110303/54c209874a795989198b45a5/html5/thumbnails/21.jpg)
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