<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu</title>
    <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu</title>
      <description>&lt;p&gt;Ka&#380;dy, kto zajmowa&#322; si&#281; kiedykolwiek programowaniem stron internetowych wie, &#380;e protok&#243;&#322; &lt;span class="caps"&gt;HTTP&lt;/span&gt; jest bezstanowy. Innymi s&#322;owy, ka&#380;de prze&#322;adowanie strony  internetowej generuje kompletnie niezale&#380;ne wywo&#322;anie serwera i nie ma on mo&#380;liwo&#347;ci aby powi&#261;za&#263; wywo&#322;anie z konkretnym klientem. Aby temu zaradzi&#263;, wprowadzono prost&#261; sztuczk&#281;. Wprowadzono tzw. mechanizm cookies (dos&#322;. ciasteczek), malutkich plik&#243;w kt&#243;re serwer mo&#380;e wysy&#322;a&#263; do klienta (tam i z powrotem). Ten unikalny identyfikator (sesji)  mo&#380;na te&#380; trzyma&#263; w adresie &lt;span class="caps"&gt;URL&lt;/span&gt;, ale ta metoda jest zdecydowanie odradzana z powodu &#322;atwo&#347;ci nadu&#380;y&#263; (&#322;atwo wykra&#347;&#263; taki numer i podszy&#263; si&#281; pod autora) Od strony klienta jedynym wymaganiem jest aby nie blokowa&#322; sobie w przegl&#261;darce mechanizmu cookies.&lt;/p&gt;


	&lt;p&gt;Serwer znaj&#261;c identyfikator sesji, mo&#380;e zwi&#261;za&#263; z nim szereg danych, np. aktualn&#261; list&#281; zamawianych produkt&#243;w w&#322;o&#380;onych do koszyka w sklepie internetowym. Dane te zwykle trzyma si&#281; w bazie lub w pami&#281;ci operacyjnej. Oczywi&#347;cie czas &#380;ycia danych jest ustalany przez serwet i w normalnym wypadku s&#261; one cyklicznie kasowane. (Z tym &amp;#8220;normalnym&amp;#8221; wypadkiem to r&#243;&#380;nie bywa, bo wiele framework&#243;w tego nie zapewnia i trzeba samemu o to zadba&#263;)&lt;/p&gt;


	&lt;p&gt;Mechanizm sesji jest dosy&#263; wydajny, bo zapytania wysy&#322;ane do serwera mog&#261; by&#263; obs&#322;ugiwane &lt;strong&gt;asynchronicznie&lt;/strong&gt;, czyli bez &#380;adnych blokad w oczekiwaniu na uko&#324;czenie obs&#322;ugi zapytania. Przez lata &amp;#8220;stanowo&#347;&#263;&amp;#8221; protoko&#322;u &lt;span class="caps"&gt;HTTP&lt;/span&gt; zapewnia&#322;o si&#281; w&#322;a&#347;nie za pomoc&#261; sesji.&lt;/p&gt;


	&lt;p&gt;Ten mechanizm ma jednak swoje wady. Najwi&#281;ksz&#261; jest &lt;strong&gt;z&#322;o&#380;ono&#347;&#263;&lt;/strong&gt; jak&#261; wprowadza po stronie skrypt&#243;w na serwerze. (I to nie jest wcale taka trywialna sprawa jak to mo&#380;na by&#322;o zaobserwowa&#263; u developer&#243;w frameworka CherryPy kt&#243;rzy miesi&#261;cami nie potrafili napisa&#263; stabilnie dzia&#322;aj&#261;cego mechanizmu obs&#322;ugi sesji.)&lt;/p&gt;


	&lt;h3&gt;Kontynuacje&lt;/h3&gt;


	&lt;p&gt;Kompletnie innym podej&#347;ciem jest skorzystanie z tzw. mechanizmu kontynuacji.  Mechanizm ten podobny jest do gracza, kt&#243;ry w dowolnym momencie mo&#380;e zapisa&#263; i wczyta&#263; stan gry.  Kontynuacje zapewniaj&#261; taki mechanizm zapisu stanu programu aby w dowolnym momencie p&#243;&#378;niej go przywr&#243;ci&#263;. Niekt&#243;rzy por&#243;wnuj&#261; to do maszyny czasu, bo mo&#380;na w dowolnym momencie przywr&#243;ci&#263; wcze&#347;niejszy stan aplikacji.&lt;/p&gt;


	&lt;p&gt;Zalet z takiego podej&#347;cia jest wiele. We&#378;my np. spraw&#281; obs&#322;ugi &amp;#8220;nie&#347;miertelnego&amp;#8221; przycisku Back w przegl&#261;darce. Obs&#322;uga tego przycisku sprawia spore problemy. Programi&#347;ci najch&#281;tniej w og&#243;le by go zablokowali. W wypadku kontynuacji ten problem w og&#243;le nie istnieje. Klikn&#261;&#322; kto&#347; Back aby cofn&#261;&#263; si&#281; do poprzedniej strony? &#379;aden problem. Serwer przywr&#243;ci ca&#322;y wcze&#347;niejszy stan aplikacji bez &#380;adnego problemu. I to w spos&#243;b &lt;strong&gt;przezroczysty&lt;/strong&gt; dla programisty! Programowanie stron webowych staje si&#281; &lt;strong&gt;znacznie prostsze&lt;/strong&gt;, niczym tworzenie aplikacji desktopowej w&#322;&#261;cznie z debugowaniem krok po kroku. Wg r&#243;&#380;nych prognoz, tak b&#281;dziemy programowa&#263; serwisy internetowe za kilka lat!&lt;/p&gt;


	&lt;p&gt;Sama idea nie jest najwyra&#378;niej jeszcze powszechnie znana, skoro w rozmowie z developerami irlandzkiego Google, zaskoczy&#322;em ich informacj&#261; na ten temat. Kto wie, czy Google mocniej nie zainwestuje w Rubiego (aktualnie mocno korzysta z Pythona, kt&#243;ry jest podstaw&#261; wi&#281;kszo&#347;ci ich skrypt&#243;w).&lt;/p&gt;


	&lt;h3&gt;Smalltalk i Seaside&lt;/h3&gt;


	&lt;p&gt;Smalltalk jest bardzo starym j&#281;zykiem bo jego pocz&#261;tki si&#281;gaj&#261; lat 70-tych. Od zawsze by&#322; j&#281;zykiem w pe&#322;ni obiektowym i dynamicznym. To m.in. Smalltalk pierwszy wymy&#347;li&#322; wirtualn&#261; maszyn&#281; kt&#243;rej to ide&#281; p&#243;&#378;niej skopiowali tw&#243;rcy Javy. W Smalltalku napisano najlepszy (w chwili obecnej) na &#347;wiecie &lt;strong&gt;serwer kontynuacyjny &amp;#8211; &lt;a href="http://www.seaside.st/"&gt;Seaside&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;Czy to spowoduje renesans na Smalltalka? Osobi&#347;cie w to w&#261;tpi&#281;. G&#322;&#243;wn&#261; wad&#261; Smalltalka jest jego monolityczno&#347;&#263; i hermentyczno&#347;&#263;. Uruchamiaj&#261;c &#347;rodowisko Smalltalak uruchamia si&#281; ca&#322;y, zamkni&#281;ty &#347;wiat Smalltalka. Np. nie ma tam dost&#281;pu do plik&#243;w z zewn&#261;trz tak, jak w innych j&#281;zykach. To spowodowa&#322;o, &#380;e j&#281;zyk ten, mimo pewnych sukces&#243;w, nigdy nie zdoby&#322; sobie powszechnego uznania. I moim zdanie, nigdy ju&#380; nie zdob&#281;dzie, bo w mi&#281;dzyczasie wyros&#322;a mu m&#322;oda, obiecuj&#261;ca konkurencja.&lt;/p&gt;


	&lt;h3&gt;Ruby&lt;/h3&gt;


	&lt;p&gt;Ruby jest j&#281;zykiem relatywnie m&#322;odym. Tzn. zosta&#322; po raz pierwszy udost&#281;pniony publicznie w tym samym roku co Java &amp;#8211; 1995. Ale przez wi&#281;kszo&#347;&#263; lat by&#322; ma&#322;o znany poza Japoni&#261; (sk&#261;d pochodzi jego tw&#243;rca).  Ruby jest tak&#380;e  jednym z tych nielicznych j&#281;zyk&#243;w, kt&#243;re (podobnie jak Smalltalk) posiadaj&#261; wbudowan&#261; obs&#322;ug&#281; kontynuacji. Istniej&#261; co prawda r&#243;&#380;ne pr&#243;by implementacji tego mechanizmu w Javie&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;, ale tylko Ruby posiada ten mechanizm jako co&#347; naturalnego i nie trzeba stosowa&#263; &#380;adnych specjalnych sztuczek aby go emulowa&#263;. Z tego co pami&#281;tam, Seaside pierwotnie by&#322; tworzony w Ruby, ale w tamtym okresie, kontynuacje w Ruby by&#322;y jeszcze niedojrza&#322;e, wi&#281;c tw&#243;rcy przerzucili si&#281; na Smalltalka. Ruby jednak szybko si&#281; rozwija, nabiera dojrza&#322;o&#347;ci i moim zdaniem, ma bardzo du&#380;e szanse, aby wyprzedzi&#263; pozosta&#322;e j&#281;zyki przy tworzeniu serwis&#243;w internetowych nowej generacji, serwis&#243;w opartych na kontynuacjach.&lt;/p&gt;


	&lt;h3&gt;Przyk&#322;ad kontynuacji.&lt;/h3&gt;


	&lt;p&gt;Poni&#380;szy przyk&#322;ad&lt;sup&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt; pokazuje implementacj&#281; generatora za pomoc&#261; kontynuacji.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Generator&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;initialize&lt;/span&gt;
    &lt;span class="ident"&gt;do_generation&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;next&lt;/span&gt;
    &lt;span class="ident"&gt;callcc&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;here&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="attribute"&gt;@main_context&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;here&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
       &lt;span class="attribute"&gt;@generator_context&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;call&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

   &lt;span class="ident"&gt;private&lt;/span&gt;

   &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;do_generation&lt;/span&gt;
     &lt;span class="ident"&gt;callcc&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;context&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
       &lt;span class="attribute"&gt;@generator_context&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;context&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
       &lt;span class="keyword"&gt;return&lt;/span&gt;
     &lt;span class="keyword"&gt;end&lt;/span&gt;
     &lt;span class="ident"&gt;generating_loop&lt;/span&gt;
   &lt;span class="keyword"&gt;end&lt;/span&gt;

   &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;generate&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
     &lt;span class="ident"&gt;callcc&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;context&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
       &lt;span class="attribute"&gt;@generator_context&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;context&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
       &lt;span class="attribute"&gt;@main_context&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;call&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
     &lt;span class="keyword"&gt;end&lt;/span&gt;
   &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;A oto oparty na nim generator ci&#261;gu liczb Fibbonacciego:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;FibGenerator&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;Generator&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;generating_loop&lt;/span&gt;
    &lt;span class="ident"&gt;generate&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;
    &lt;span class="ident"&gt;loop&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
      &lt;span class="ident"&gt;generate&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
      &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;+&lt;/span&gt;&lt;span class="ident"&gt;b&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;fib&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;FibGenerator&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;
&lt;span class="number"&gt;15&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;times&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{fib.next}&lt;/span&gt; &lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
&lt;span class="comment"&gt;#wynik: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; Np. &lt;a href="http://rifers.org/"&gt;Riff&lt;/a&gt; lub &lt;a href="http://jetty.mortbay.org/jetty/"&gt;Jetty 6&lt;/a&gt;.&lt;/p&gt;


	&lt;p id="fn2"&gt;&lt;sup&gt;2&lt;/sup&gt; Przyk&#322;ad z ksi&#261;&#380;ki &amp;#8220;The Ruby Way&amp;#8221;, 1ed.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 02:26:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:c15ba4a7-3852-452b-af70-9f5ea30a4702</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu</link>
      <category>Ruby</category>
      <category>Java</category>
      <category>SmallTalk</category>
      <category>ruby</category>
      <category>smalltalk</category>
      <category>java</category>
      <category>continuations</category>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Artur</title>
      <description>&lt;p&gt;Czy taki stan aplikacji nie jest robiony np: w Prado? 
&lt;a href="http://www.pradosoft.com/docs/manual/System.Web.UI/IPostBackEventHandler.html" rel="nofollow"&gt;http://www.pradosoft.com/docs/manual/System.Web.UI/IPostBackEventHandler.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 04 Jan 2007 13:50:55 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:adf0b03b-2c48-4ffb-9855-39e01c7aaf68</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-379</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Pythonowy &lt;a href="http://zope.org" rel="nofollow"&gt;Zope&lt;/a&gt; te&#380; to potrafi.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Nov 2006 22:36:37 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ebc97e62-5f8b-4bc6-ac2f-3ab5b5411636</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-321</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by jps</title>
      <description>&lt;p&gt;Zapomnia&#322;e&#347; napisa&#263; o jednej, &#347;wietnej rzeczy, kt&#243;ra jest w Seaside, a nie ma jej chyba w &#380;adnym innym frameworku&amp;#8212;tworzenie aplikacji odbywa si&#281; &lt;strong&gt;przez przegl&#261;dark&#281;&lt;/strong&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Nov 2006 19:50:15 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:d26b436d-1566-4fe0-9c0e-797186d5a8b2</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-320</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by jps.kni.pk.edu.pl</title>
      <description>&lt;p&gt;Hej,&lt;/p&gt;


	&lt;p&gt;Kontynuacje s&#261; fajne, aplikacje napisane przy pomocy Seaside s&#261; mega i robi&#261; niesamowite wra&#380;enie (dabbledb.com), ale jestem przekonany &#380;e w znacznej wi&#281;kszo&#347;ci aplikacji webowych w zupe&#322;no&#347;ci mo&#380;na poradzi&#263; sobie bez tych bajer&#243;w, kt&#243;re s&#261; dost&#281;pne przy pomocy kontynuacji. 
Blogi, przeszukiwarki, kalendarze, sklepy internetowe &amp;#8211; to wszystko da si&#281; zrobi&#263; ca&#322;kiem elegancko bez Seaside i dzia&#322;a znakomicie.&lt;/p&gt;


	&lt;p&gt;Co do renesansu na Smalltalka &amp;#8211; wiod&#261;ce komercyjne &#347;rodowisko (VisualWorks) jest  cholernie drogie (procent od zysku uzyskany przy pomocy produktu napisanego w VW) i wydaje mi si&#281;, &#380;e trzeba b&#281;dzie poczeka&#263; a&#380; firma, kt&#243;ra je dostarcza zmieni troch&#281; sw&#243;j model biznesowy.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Nov 2006 19:46:57 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:7fc864b4-69b7-4b9f-8e55-316eb324622a</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-319</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Adamh</title>
      <description>&lt;p&gt;sprae &amp;#8211; zgadzam sie z tym, ze kwestia kontynuacji jest ostatnimi czasy podnoszona zbyt czesto jako &amp;#8220;ogromny plus&amp;#8221;. &lt;br /&gt;
Widze zalety tego podejscia ale zbyt czesto chyba pomija sie wady. Mysle, ze zrzucanie odpowiednich danych do sesji po czym ich przywracanie praktycznie rozwiazuje problem. Plusem takiego rozwiazania (przy rozsadnym podejsciu) jest abstrakcja od problemow z bazami i plikami wspomniana przez rsz (zrzucanie tylko identyfikatorow).
&lt;br /&gt;
Oczywiscie cos za cos&amp;#8230; czas procesora i obciazenie bazy za pamiec i zlozonosc kodu (w zalozonych warunkach).&lt;/p&gt;</description>
      <pubDate>Mon, 27 Nov 2006 16:37:12 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2a121486-ad14-44cd-be3f-cdd27d6a5287</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-318</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by lopex</title>
      <description>w pierwszym mia&#322;o by&#263;:
&lt;code&gt;
[Thread.new{callcc{|$c|}},Thread.new{$c.call}].each{|t|t.join}
&lt;/code&gt;</description>
      <pubDate>Fri, 24 Nov 2006 23:34:58 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:75b2ed60-3440-4138-a400-4d4e72e1fab4</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-315</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by lopex</title>
      <description>&lt;p&gt;niestety:&lt;/p&gt;


	&lt;p&gt;`call&amp;#8217;: continuation called across threads (RuntimeError)&lt;/p&gt;


	&lt;p&gt;i niestety:&lt;/p&gt;


	&lt;p&gt;Marshal.dump(callcc{|c|c})&lt;/p&gt;


	&lt;p&gt;`dump&amp;#8217;: no marshal_dump is defined for class Continuation (TypeError)&lt;/p&gt;


	&lt;p&gt;Ale obie te rzeczy nie s&#261; niemo&#380;liwe do wykonania&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 24 Nov 2006 23:31:27 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:0cbf1e99-d7c6-40bd-950a-bddb1f251985</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-314</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;sprae: O &amp;#8211; to prawda. Migracja kontynuacji mi&#281;dzy serwerami na klasterze nie jest zasadniczo mo&#380;liwa. Gdyby jeszcze taki Ruby mia&#322; dobrze zaimplementowane w&#261;tki, to by si&#281; da&#322;o przerzuca&#263; nimi mi&#281;dzy w&#261;tkami w celu rozk&#322;adania obci&#261;&#380;enia na prockach wielordzeniowych.&lt;/p&gt;


	&lt;p&gt;BTW, da si&#281; w Ruby&amp;#8217;m migrowa&#263; kontynuacje mi&#281;dzy w&#261;tkami?&lt;/p&gt;</description>
      <pubDate>Fri, 24 Nov 2006 09:47:07 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:c6c28392-4c87-4c17-a4f0-f95d02997aa2</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-313</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by sprae</title>
      <description>&lt;p&gt;Znowu smierdzi to jakims hype. Duzo latwiejsze w realizacji byloby serializowanie obiektow sesji uzytkownika (na czas nieokreslony) np. do bazy, albo skorzystanie z taskletow (na krotkie okresy przechowywania sesji). Rozwiazania takie pozwalaja na dynamiczne rozsiewanie sesji na grupie serwerow.&lt;/p&gt;</description>
      <pubDate>Fri, 24 Nov 2006 06:02:26 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:7a56c8ca-de97-4ada-902e-ab2b8fe27019</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-312</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;lopex: no wiesz, kwestia gustu, pisanie z du&#380;&#261; ilo&#347;&#263;i&#261; goto to te&#380; niby nie magia, ale&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Thu, 23 Nov 2006 10:04:50 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:b14700ad-0c85-4eaa-ae47-9ddf01ec18d8</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-311</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by lopex</title>
      <description>&lt;p&gt;&amp;#8220;And then Matz and Koichi dropped the bomb: Ruby 2.0 would support neither continuations nor green threads.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;to by&#322;o na konferencji KaiGi na poczatku pa&#378;dziernika i wywo&#322;a&#322;o niema&#322;&#261; burz&#281;. Potem Headius postanowi&#322; na dobre zrezygnowa&#263; z kontytuacji w JRubym: &lt;a href="http://headius.blogspot.com/2006/10/another-year-another-interpreter.html" rel="nofollow"&gt;http://headius.blogspot.com/2006/10/another-year-another-interpreter.html&lt;/a&gt;
Ostatnio (2 tyg temu?) Matz powiedzia&#322; &#380;e je&#347;li czas pozwoli to &lt;em&gt;mo&#380;liwe&lt;/em&gt; &#380;e b&#281;d&#261; kontynuacje (a bior&#261;c pod uwag&#281; tempo prac raczej w to w&#261;tpi&#281;)&lt;/p&gt;


	&lt;p&gt;rsz:
CPS to &#380;adna magia &amp;#8211; to tylko przekazywanie ekstra funkcji &amp;#8211; a &#380;e mo&#380;na si&#281; &#322;atwo pogubi&#263; to fakt &amp;#8211; wystarczy napisa&#263; foldr w haskellu na kontynuacjach&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 19:44:30 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:23efb519-31b7-4721-82e5-4837075f14ba</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-307</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;A ja nie wiem, co&#347; mi si&#281; przewidzia&#322;o chyba z tym byciem pierwszym; no, jak by nie by&#322;o, to warto wiedzie&#263;, &#380;e nie by&#322; :)&lt;/p&gt;


	&lt;p&gt;Dalej nie kumam, o co Ci chodzi z monolityczno&#347;ci&#261; &amp;#8211; co to jest &amp;#8220;ca&#322;y jego &#347;wiat&amp;#8221;? Skoro ma dost&#281;p do plik&#243;w z FSa i sieci, to chyba nie jest jednak ca&#322;y &#347;wiat.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 17:29:47 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2d2e7c22-b121-4081-ba95-2944890ef6b5</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-306</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Troch&#281; piszesz nie na temat (polemizujesz ze swoimi wyobra&#380;eniami a nie z tre&#347;ci&#261; artyku&#322;u). Gdzie ja napisa&#322;em, &#380;e Seaside by&#322; pierwszym serwerem kontynuacyjnym???&lt;/p&gt;


	&lt;p&gt;Co do owej nieszcz&#281;snej monolityczno&#347;ci, to chodzi&#322;o mi o smalltalkowy image (kt&#243;ry zreszt&#261; troch&#281; przypomina mi &amp;#8220;image&amp;#8221; Zope&amp;#8217;a) Zdaje si&#281;, &#380;e Smalltalk zawsze pracuje w ten spos&#243;b, ma sw&#243;j image kt&#243;ry tworzy ca&#322;y jego &#347;wiat.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 17:24:51 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:31d2710a-2b7f-4ff7-a447-a4bc553559c7</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-305</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;BTW Bryant &lt;a href="http://groups.google.com/group/comp.lang.scheme/browse_thread/thread/1c943e555b5cb232/27de3bf76218624b?lnk=st&amp;#38;q=&amp;#38;rnum=4#27de3bf76218624b" rel="nofollow"&gt;tutaj&lt;/a&gt;
wyra&#378;nie pisze, &#380;e Seaside jest napisany na podstawie wcze&#347;niejszych prac:&lt;/p&gt;


	&lt;p&gt;&amp;#8221;...on top of the basic continuation style describe by Quiennec and
later papers&amp;#8221;&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 16:33:51 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:e108265c-8e51-4dfe-a6fa-fdeedb81d6fd</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-304</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;Odno&#347;nie plik&#243;w: to jest, jak rozumiem, przytyk odno&#347;nie Seaside&amp;#8217;a, a nie Smalltalka, tak samo jak to, &#380;e Zope jest &amp;#8220;podobnie monolityczny&amp;#8221; nie jest przytykiem do Pythona.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;tylko Ruby posiada ten mechanizm jako co&#347; naturalnego i nie trzeba stosowa&#263; &#380;adnych specjalnych sztuczek aby go emulowa&#263;&amp;#8221; &amp;#8211; wiesz, &#380;e to nieprawda, zreszt&#261; zdanie wcze&#347;niej piszesz co&#347; z tym sprzecznego.&lt;/p&gt;


	&lt;p&gt;BTW, przeczytaj to: &lt;a href="http://smallthought.com/avi/?p=4" rel="nofollow"&gt;http://smallthought.com/avi/?p=4&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Bruce states in both the article and the book that I had written a continuations-based web framework in Ruby before moving my development to Squeak when Ruby&#8217;s continuations proved unstable. That&#8217;s not actually correct; the framework that I wrote in Ruby &amp;#8230; didn&#8217;t make use of continuations&amp;#8221;. Znowu wychodzi Twoja wiara w Bruce&amp;#8217;a-lamera ;)&lt;/p&gt;


	&lt;p&gt;Do tego jeszcze jedna rzecz: Seaside na 99% nie by&#322; pierwszym webserwerem kontynuacyjnym; prawdopodobnie pierwszy by&#322; soft Grahama (Viaweb, potem Yahoo) napisany, a jak&#380;e, w lispie.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 16:26:25 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:d8a9fdf5-6851-4de4-a3d3-d8175c01c5ce</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-303</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Wen&#281;trznie to Zope korzysta z plik&#243;w, ale mi chodzi o co innego. Tworz&#261;c aplikacj&#281; w Zope pracujesz na obiektach, kt&#243;re nie s&#261; dost&#281;pne z zewn&#261;trz. Sprawiaj&#261; one wra&#380;enie folder&#243;w, plik&#243;w, ale to wszystko s&#261; obiekty. Oczywi&#347;cie, mo&#380;na zmusi&#263; Zope aby dodany do aplikacji obrazek le&#380;a&#322; sobie gdzie&#347; w filesystemie, ale to jest tylko dodatkowa opcja. Normalnie Zope trzyma to wewnetrznie i za choler&#281; si&#281; do tego nie dostaniesz z poziomu shella :) Musisz to zrobi&#263; poprzez Zope i to, co on raczy udost&#281;pni&#263;.&lt;/p&gt;


	&lt;p&gt;W pewnym sensie Zope jest tu monolityczny podobnie jak Smalltalk.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 16:00:32 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:50d46a93-6ee2-48b3-a882-34e51faae8a3</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-302</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Jakie&#347; plotki rozsiewasz. Wg &lt;a href="http://www.chadfowler.com/index.cgi/Computing/Programming/Ruby" rel="nofollow"&gt;Chada Fowlera&lt;/a&gt; (tego od ksi&#261;&#380;ki &lt;a href="http://pragmaticprogrammer.com/titles/fr_rr/" rel="nofollow"&gt;Rails Recipes&lt;/a&gt;) kontynuacje maj&#261; by&#263; zaimplementowane w Ruby 2: &amp;#8220;Matz and Koichi &lt;strong&gt;are still planning to implement continuations&lt;/strong&gt; for Ruby 2.0.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Maj&#261; by&#263; te&#380; zaimplementowane w JRuby. :)&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 15:53:44 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:381a045b-96ce-4ecd-8e3d-4bf3cc55ae52</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-301</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;Tak, my&#347;l&#281;, &#380;e aplikacje na wi&#281;ksz&#261; skal&#281; oparte o czyste kontynuacje to &#347;lepa uliczka. A szczeg&#243;lnie dla aplikacji serwerowych, gdzie masz warstw&#281; kodu na warstwie, du&#380;e narzuty pami&#281;ciowe etc. A odk&#322;adanie kontynuacji na p&#243;&#378;niej przy du&#380;ym obci&#261;&#380;eniu serwera mo&#380;e szybko si&#281; wymkn&#261;&#263; spod kontroli.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Uruchamiaj&#261;c &#347;rodowisko Smalltalak uruchamia si&#281; ca&#322;y, zamkni&#281;ty &#347;wiat Smalltalka. Np. nie ma tam dost&#281;pu do plik&#243;w z zewn&#261;trz tak, jak w innych j&#281;zykach&amp;#8221; &amp;#8211; to brzmia&#322;o tak, jakby&#347; ze &#347;rodowiska Smalltalka nie mia&#322; dost&#281;pu do plik&#243;w na zewn&#261;trz. Ale z tego, co piszesz, mia&#322;e&#347; co&#347; innego na my&#347;li. Ale ja teraz to ju&#380; nie mam poj&#281;cia, o co Ci chodzi.&lt;/p&gt;


	&lt;p&gt;A Zope ma przecie&#380; dost&#281;p do plik&#243;w &amp;#8211; ZODB jest w ko&#324;cu oparta na plikach, wi&#281;c musi on je czyta&#263;, zapisywa&#263;&amp;#8230; Chyba znowu czego&#347; nie rozumiem.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 15:45:35 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:347107b9-fd34-4e12-afff-a578d64cad43</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-300</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Co do tych prognoz, to tak r&#243;&#380;nie m&#243;wi&#261; w sieci i niekt&#243;rych ksi&#261;&#380;kach. Bruce Tate zdaje si&#281; o tym co&#347; pisa&#322;. My&#347;lisz, &#380;e Seaside to &#347;lepa uliczka? To prawda, &#380;e taki styl pracy jest zasobo&#380;erny, ale znacznie upraszcza prac&#281; dla programisty aplikacji webowej.&lt;/p&gt;


	&lt;p&gt;Co do owych nieszcz&#281;snych plik&#243;w Smalltalku, to nie zrozumia&#322;e&#347;. Chodzi&#322;o mi o dost&#281;p do &#347;rodowiska Smalltalku przez zewn&#281;trzne aplikacje a nie odwrotnie. Smalltalk jest ca&#322;ym &#347;rodowiskiem a nie tylko jedn&#261; z aplikacji uruchomion&#261; w systemie operacyjnym.&lt;/p&gt;


	&lt;p&gt;Czy sobie wyobra&#380;am Smalltalka bez dost&#281;pu do zewn. systemu plik&#243;w? A co w tym trudnego do wyobra&#380;enia? Nigdy nie widzia&#322;e&#347; Zope? Wszystkie jego wew. elementy widziane z klienta jako foldery, obrazki czy pliki tekstowe s&#261; obiektami siedz&#261;cymi w obiektowej bazie danych.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 15:40:15 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:327ecae8-56cf-4b35-82f1-1dee23d09234</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-299</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;Poza tym stwierdzenie&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Serwer przywr&#243;ci ca&#322;y wcze&#347;niejszy stan aplikacji bez &#380;adnego problemu&amp;#8221;&lt;/p&gt;


	&lt;p&gt;nie jest do ko&#324;ca prawdziwe, je&#347;li m&#243;wimy o aplikacjach maj&#261;cych stan zewn&#281;trzny &amp;#8211; np. pliki, baza danych. To nie jest taka magiczna r&#243;&#380;d&#380;ka, kt&#243;ra zwalnia programist&#281; z my&#347;lenia o tym.&lt;/p&gt;


	&lt;p&gt;No i ciekawi mnie jeszcze, sk&#261;d wzi&#261;&#322;e&#347; to stwierdzenie:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Wg r&#243;&#380;nych prognoz, tak b&#281;dziemy programowa&#263; serwisy internetowe za kilka lat!&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Jeszcze jedno: &amp;#8220;Sama idea nie jest najwyra&#378;niej jeszcze powszechnie znana&amp;#8221;; dok&#322;adniej by&#322;oby powiedzie&#263; &amp;#8211; by&#322;a powszechnie znana, ale zosta&#322;a zapomniana. Np. w lispach/schemach techniki kontynuacyjne maj&#261; swoj&#261; histori&#281; d&#322;u&#380;sz&#261;, ni&#380; pewnie sam Smalltalk.&lt;/p&gt;


	&lt;p&gt;Poza tym to nie tw&#243;rcy smalltalka wymy&#347;lili ide&#281; maszyny wirtualnej, zob.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://cs.gmu.edu/cne/itcore/virtualmachine/history.htm" rel="nofollow"&gt;http://cs.gmu.edu/cne/itcore/virtualmachine/history.htm&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Dalej czytamy: &amp;#8220;nie ma tam dost&#281;pu do plik&#243;w z zewn&#261;trz&amp;#8221; &amp;#8211; to jaki&#347; &#380;art, prawda? Dla VisualWorks masz tu:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.cincomsmalltalk.com/tutorials/version7/tutorial1/weblogstats3.htm" rel="nofollow"&gt;http://www.cincomsmalltalk.com/tutorials/version7/tutorial1/weblogstats3.htm&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;dla GNU tu:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.gnu.org/software/smalltalk/gst-manual/gst_108.html" rel="nofollow"&gt;http://www.gnu.org/software/smalltalk/gst-manual/gst_108.html&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;a dla Squeak&amp;#8217;a tu:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://minnow.cc.gatech.edu/squeak/uploads/SqueakClassesRef.html#StreamClasses" rel="nofollow"&gt;http://minnow.cc.gatech.edu/squeak/uploads/SqueakClassesRef.html#StreamClasses&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Poza tym, jak sobie wyobra&#380;asz dzia&#322;aj&#261;cy, napisany w Smalltalku webserver bez dost&#281;pu do warstwy systemu plik&#243;w???&lt;/p&gt;


	&lt;p&gt;Nie zaszkodzi troch&#281; doczyta&#263; przed wyra&#380;aniem takich skrajnych opinii&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 15:25:37 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:5cea3a95-c737-48f9-bcca-0ac4bd8dcc9c</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-298</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by rsz</title>
      <description>&lt;p&gt;Parrot oparty jest (podobnie jak wiele kompilator&#243;w j&#281;zyk&#243;w funkcyjnych) na CPS (&lt;a href="http://en.wikipedia.org/wiki/Continuation_passing_style" rel="nofollow"&gt;http://en.wikipedia.org/wiki/Continuation_passing_style&lt;/a&gt;) i translacji (transformacji) CPS jako wewn&#281;trznym etapie kompilacji programu, co nie musi oznacza&#263; udost&#281;pnienia u&#380;ytkownikom (aczkolwiek prawie na pewno b&#281;dzie oznacza&#263;) funkcjonalno&#347;ci kontynuacji. Nota bene, autorzy Parrota zdecydowali si&#281; na u&#380;ycie CPS po wnikni&#281;ciu w teori&#281; kompilacji j&#281;zyk&#243;w funkcyjnych &amp;#8211; co wskazuje na kierunek, w jakim zmierza &#347;wiat :)&lt;/p&gt;


	&lt;p&gt;Na temat u&#380;ycia kontynuacji i CPS w implementacji j&#281;zyk&#243;w programowania zobacz np.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://citeseer.ist.psu.edu/flanagan93essence.html" rel="nofollow"&gt;http://citeseer.ist.psu.edu/flanagan93essence.html&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Poza tym ostatnimi czasy ludzie dochodz&#261; raczej do konsensusu, &#380;e nieograniczone kontynuacje nie s&#261; w&#322;a&#347;ciwym rozwi&#261;zaniem ze wzgl&#281;du na nieuniknione narzuty wydajno&#347;ciowe i problemy semantyczne &amp;#8211; a to dlatego, &#380;e kontynuacje, o ile nie s&#261; u&#380;ywane zgodnie ze &#347;ci&#347;le ustalonym, raczej sztywnym stylem, s&#261; po prostu r&#243;wnowa&#380;ne instrukcji GOTO, kt&#243;ra, jak wiadomo, zosta&#322;a dawno temu odrzucona jako zbyt &#322;atwo prowadz&#261;ca do nieczytelnego, zagmatwanego i trudnego w zrozumieniu/weryfikacji kodu. S&#261; prowadzone aktualnie aktywne prace nad kontynuacjami &amp;#8220;ograniczonymi&amp;#8221; semantycznie (cz&#281;&#347;ciowymi, sk&#322;adalnymi etc), kt&#243;re maj&#261; te problemy rozwi&#261;za&#263;, ale na razie s&#261; w fazie raczej wst&#281;pnej i nie wiadomo, czy cokolwiek kiedykolwiek z tego wyjdzie (jak na razie za du&#380;o nierozwi&#261;zanych problem&#243;w teoretycznych). Bardzo zgrubne wprowadzenie do tematu mo&#380;na znale&#378;&#263; np. tu:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.diku.dk/NWPT05/Slides/nwpt05-biernacki.pdf" rel="nofollow"&gt;http://www.diku.dk/NWPT05/Slides/nwpt05-biernacki.pdf&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 14:56:34 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ed208cfb-702c-4850-b013-70460cd1647a</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-297</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;To pewne informacje czy tylko plotki? Matz to potwierdzi&#322;? Dlaczego chc&#261; si&#281; tego pozby&#263;? W wypadku Rubiego, &lt;a href="http://pl.wikipedia.org/wiki/Parrot" rel="nofollow"&gt;Parrot&lt;/a&gt; wygl&#261;da na pewn&#261; konkurencj&#281; dla &lt;a href="http://www.atdot.net/yarv/" rel="nofollow"&gt;YARP&amp;#8217;a&lt;/a&gt;...&lt;/p&gt;


	&lt;p&gt;Czy to, &#380;e Parrot oparty jest na kontynuacjach co&#347; wnosi do j&#281;zyk&#243;w kt&#243;re ma obs&#322;ugiwa&#263;, czy to tylko wewn&#281;trzna sprawa maszyny wirtualnej Parrota? Czy to co&#347; pomo&#380;e w tworzeniu serwer&#243;w kontynuacyjnych?&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 14:01:26 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:cd363bee-2248-4d9c-980c-5116d67e001b</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-296</link>
    </item>
    <item>
      <title>"Serwery kontynuacyjne - przysz&#322;o&#347;&#263; webu" by lopex</title>
      <description>&lt;p&gt;W Ruby 2.0 prawie na pewno nie b&#281;dzie kontynuacji, a w 1.x s&#261; one zaimplementowane w bardzo niewydajny spos&#243;b &amp;#8211; jakiekolwiek zastosowanie opr&#243;cz takich przyk&#322;ad&#243;w raczej nie wchodzi w gr&#281;. 
Parrot jest w pe&#322;ni oparty na kontynuacjach.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 13:19:28 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:fe31c314-2a6c-4f1a-bb09-9ff240080b11</guid>
      <link>http://blog.zabiello.com/articles/2006/11/22/serwery-kontynuacyjne-przysz%C5%82o%C5%9B%C4%87-webu#comment-295</link>
    </item>
  </channel>
</rss>
