Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Coroutines or continuations for Web programming in Python and Ruby. Why not? [closed]

The question is: why aren't continuations (in Ruby) and coroutines (in Python) more widely used for Web programming?

Server-side web programming is made difficult by the problem of preserving state between requests. Two elegant, and related, solutions to this are continuations (as found in Scheme, Ruby and Smalltalk) and coroutines (as found in Python and Go).

Bruce Tate in his Beyond Java (O'Reilly, 2005) talked about Ruby on Rails and Seaside as exciting new developments in Web programming. To me, Seaside was the real breakthrough: using Smalltalk continuations, Seaside made it very easy to program complex request/response sequences.

I know about Python coroutines being used in Tornado and Twisted to reduce callbacks, but that is somewhat low-level, compared to writing a view/controller in a single coroutine to handle a sequence of HTTP requests to complete an online purchase, for example.

I wonder why these ideas that look so good on paper are not more widely deployed in Python and Ruby. Is it just a cultural matter? Limitations in the facilities as implemented in these languages? Or is there a fundamental flaw in these approaches in the context of Web development?

like image 381
Luciano Ramalho Avatar asked Aug 28 '12 22:08

Luciano Ramalho


3 Answers

I've used Seaside and continuations are a beautiful model for developing client server webapps. They simplify traditional client/server applications that I couldn't believe why no other langugage was doing it.

But unfortunately webapps aren't what they used to be. Instead of the requesting only one page, now with ajax there are multiple requests at different times. That is why continuations aren't as useful as they used to be.

Even Avi Bryant (original author of Seaside) has said that under ajax making callbacks easier (event driven programming) is more important than continuations.

Take a look at this quora discussion for more: http://www.quora.com/Whats-the-best-continuation-based-web-framework

like image 167
elviejo79 Avatar answered Nov 15 '22 20:11

elviejo79


You application should be written on continuation/coroutines framework, as well as support libraries too. It's not trivial model to understand by beginners. Also there are much easier frameworks like gevent, which provides the same possibilities in making green threads, and easier to use because of monkey patching.

like image 1
Alex Avatar answered Nov 15 '22 20:11

Alex


Mainly because of non-technical reasons. The number of people knowing Seaside or even Smalltalk is small, so there is no large pool of cheap programmers that can be hired. Because of this the number of service providers knowing how to install and maintain a Seaside system is also low.

like image 1
Stephan Eggermont Avatar answered Nov 15 '22 20:11

Stephan Eggermont