[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Y Store /Closures
[My apologies for multiple copies, but I accidentally posted from my
wife's account, and I'm not sure the message made it to the list.
--Florin]
On Fri, 28 Feb 2003, Sundar Narasimhan wrote:
>Ok. What is the framework that Avi is talking about / where can one
>get such hands-on experience? Don't get me wrong -- I perfectly
>understand the benefits of what certain languages can provide in the
>back-end. It's just that I don't think some of the ones that people
>have mentioned are indispensable (yet), mainly because I've been
>benchmarking our performance wrt. some of these, and back-end server
>programming seems to go pretty quickly with the tools that are out
>there now.. perhaps I'm missing something.
>
I haven't so far participated in this discussion (or any other on this
list), but I thought I'd briefly come out of lurk-mode for this subject.
I am an "industry" guy, and I am surely in Avi's camp: the first time I
looked at Web flow in terms of continuations I had such an "Aha!", that
afterwards I could never look at the problem in any other terms; it just
didn't feel natural. Other forms of encoding "page" flow (it's easy to
forget it's actually *program* flow), looked to me as contrived ways of
capturing (only partially) what in fact is expressed directly by the
concept of continuation.
The problem my company had at the time was to be able to implement a
very large number of custom check-out scenarios in very short
timeframes, together with a large projected number of back-office
workflows that had to be accessed from the browser. We didn't even know
how those scenarios would actually look like, we just had a general
idea. We also had to prototype some pretty complex scenarios in almost
no time, and make sure that whatever we used fit well within the
existing architecture.
Fortunately, I happened to read a remark made by Matthias Felleisen on
another list, along the lines that "doing cgi programming involves CPS
conversion", and then it dawned on me: we could design all our flows in
Java, in direct style, and then apply CPS conversion manually, to make
up for the fact that Java doesn't have first class continuations. We
decided it was worth the pain, because it was so much easier to design
that way. We ended up implementing a scheme of encoding continuation
id's in URL's, and using inner classes to simulate closures. Although
most of my colleagues hadn't done CPS conversion before, and indeed
weren't familiar with continuations, they learned pretty quickly, and
soon became proficient in designing new flows. The system works the same
way today (I left the company a year ago.)
Here are two papers of Christian Quinnec's that attempt to motivate the
closure/continuation approach (Paul Graham made much of same points very
briefly in one of his articles which I cannot locate at the moment):
http://youpou.lip6.fr/queinnec/Papers/www.ps.gz
http://youpou.lip6.fr/queinnec/Papers/webcont.ps.gz
--Florin