Spletno o grodje malo drugače: continuations Simon Belak [email_address]
Potek predavanja <ul><li>Motivacija </li></ul><ul><li>Malo teorije </li></ul><ul><li>Prenašanje stanja v spletnih aplikaci...
Motivacija <ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul...
Malo teorije
Funkcijsko programiranje <ul><li>Funkcije so prvorazredni objekti </li></ul><ul><li>Transformiranje funkcij </li></ul><ul>...
Lexial closure <ul><li>Funkcija s  kontekstom  kot objekt </li></ul>
Continuation <ul><li>Točka v izvajanju programa </li></ul><ul><li>Različne oblike: </li></ul><ul><ul><li>Stack frame (Pyth...
Continuation-passing style <ul><li>Eksplicitno prenašanje kontrole </li></ul><ul><li>Težave z globino izvajalnega sklada <...
Vprašanja?
Prenašanje stanja v spletnih aplikacijah
Najpogostejši prijemi <ul><li>Seje </li></ul><ul><li>Skrita polja </li></ul><ul><li>Zahtevki (URL, GET, POST) </li></ul><u...
Težave <ul><li>Nelinearnost  </li></ul><ul><ul><li>Vejenje navigacije (zavihki, več oken) </li></ul></ul><ul><ul><li>Skoki...
Continuations na pomoč
Temeljna ideja <ul><li>Stanje zavijemo v closure </li></ul><ul><li>Vsak zahtevek je prehod kontrole </li></ul>
Nadgradnje <ul><li>Vmesne rezultate izračunamo šele, ko jih potrebujemo (lazy evaluation) </li></ul><ul><li>Asinhronost </...
Primeri ogrodji <ul><li>Seaside </li></ul><ul><li>www.seaside.st  </li></ul><ul><li>UCW </li></ul><ul><li>common- lisp .ne...
Zaključek
Prednosti <ul><li>Koda odraža problem </li></ul><ul><li>Nelinearnost </li></ul><ul><li>Dodatna stopnja abstrakcije </li></...
Slabosti <ul><li>HTTP prepustimo ogrodju </li></ul><ul><li>Kompleksonst </li></ul><ul><li>Hranjenje  (kdaj, kje) </li></ul...
Vprašanja?
Viri <ul><li>common-lisp.net/project/ucw/docs/html/rest/rest.html </li></ul><ul><li>www.stackless.com/spcpaper.htm </li></...
Upcoming SlideShare
Loading in...5
×

Continuations -- spletno ogrodje malo drugače

431
-1

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
431
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Continuations -- spletno ogrodje malo drugače

  1. 1. Spletno o grodje malo drugače: continuations Simon Belak [email_address]
  2. 2. Potek predavanja <ul><li>Motivacija </li></ul><ul><li>Malo teorije </li></ul><ul><li>Prenašanje stanja v spletnih aplikacijah </li></ul><ul><li>Continuations na pomoč </li></ul><ul><li>Zaključek </li></ul>
  3. 3. Motivacija <ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul><ul><li>Prenašanje stanja </li></ul>
  4. 4. Malo teorije
  5. 5. Funkcijsko programiranje <ul><li>Funkcije so prvorazredni objekti </li></ul><ul><li>Transformiranje funkcij </li></ul><ul><li>Idealno brez stranskih učinkov </li></ul>
  6. 6. Lexial closure <ul><li>Funkcija s kontekstom kot objekt </li></ul>
  7. 7. Continuation <ul><li>Točka v izvajanju programa </li></ul><ul><li>Različne oblike: </li></ul><ul><ul><li>Stack frame (Python) </li></ul></ul><ul><ul><li>Prvorazredni objekt (Scheme) </li></ul></ul><ul><ul><li>Funkcionalnost operacijskeg sistema (Unix) </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>Splošnejša implementacija: lexial closure </li></ul>
  8. 8. Continuation-passing style <ul><li>Eksplicitno prenašanje kontrole </li></ul><ul><li>Težave z globino izvajalnega sklada </li></ul><ul><ul><li>Tail call optimisation </li></ul></ul>
  9. 9. Vprašanja?
  10. 10. Prenašanje stanja v spletnih aplikacijah
  11. 11. Najpogostejši prijemi <ul><li>Seje </li></ul><ul><li>Skrita polja </li></ul><ul><li>Zahtevki (URL, GET, POST) </li></ul><ul><li>Piškoti </li></ul>
  12. 12. Težave <ul><li>Nelinearnost </li></ul><ul><ul><li>Vejenje navigacije (zavihki, več oken) </li></ul></ul><ul><ul><li>Skoki naprej/nazaj </li></ul></ul><ul><li>Življenski cikel seje </li></ul><ul><li>Pomankljive abstrakcije </li></ul>
  13. 13. Continuations na pomoč
  14. 14. Temeljna ideja <ul><li>Stanje zavijemo v closure </li></ul><ul><li>Vsak zahtevek je prehod kontrole </li></ul>
  15. 15. Nadgradnje <ul><li>Vmesne rezultate izračunamo šele, ko jih potrebujemo (lazy evaluation) </li></ul><ul><li>Asinhronost </li></ul>
  16. 16. Primeri ogrodji <ul><li>Seaside </li></ul><ul><li>www.seaside.st </li></ul><ul><li>UCW </li></ul><ul><li>common- lisp .net/project/ ucw / </li></ul><ul><li>PLT Scheme Web Server </li></ul><ul><li>www. plt-scheme.org </li></ul>
  17. 17. Zaključek
  18. 18. Prednosti <ul><li>Koda odraža problem </li></ul><ul><li>Nelinearnost </li></ul><ul><li>Dodatna stopnja abstrakcije </li></ul><ul><ul><li>Postopen razvoj </li></ul></ul><ul><ul><li>Prenosljivost (tudi onkraj spleta) </li></ul></ul><ul><li>Za razvoj lahko uporabimo klasična orodja </li></ul><ul><li>HTTP prepustimo ogrodju </li></ul>
  19. 19. Slabosti <ul><li>HTTP prepustimo ogrodju </li></ul><ul><li>Kompleksonst </li></ul><ul><li>Hranjenje (kdaj, kje) </li></ul><ul><li>Sporščanje sredstev </li></ul><ul><li>Razumljivost </li></ul><ul><li>Slaba podpora v večini popularnih jezikov </li></ul>
  20. 20. Vprašanja?
  21. 21. Viri <ul><li>common-lisp.net/project/ucw/docs/html/rest/rest.html </li></ul><ul><li>www.stackless.com/spcpaper.htm </li></ul><ul><li>www.interact-sw.co.uk/iangblog/2006/05/21/webcontinuations </li></ul><ul><li>www.double.co.nz/pdf/continuations.pdf </li></ul><ul><li>www.paulgraham.com/lib/paulgraham/bbnexcerpts.txt </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×