Python和Ruby中Web编程的协程或延续.为什么不?

Luc*_*lho 20 ruby python continuations go coroutine

问题是:为什么不继续(在Ruby中)和coroutines(在Python中)更广泛地用于Web编程?

由于在请求之间保持状态的问题使得服务器端web编程变得困难.两个优雅且相关的解决方案是继续(如Scheme,Ruby和Smalltalk中所见)和协同程序(如Python和Go中所见).

Bruce Tate在他的Beyond Java(O'Reilly,2005)中谈到Ruby on Rails和Seaside是Web编程中令人兴奋的新发展.对我而言,Seaside是真正的突破:使用Smalltalk延续,Seaside使编写复杂的请求/响应序列变得非常容易.

我知道在Tornado和Twisted中使用Python协程来减少回调,但与在单个协程中编写视图/控制器来处理一系列HTTP请求以完成在线购买相比,这有点低级别.

我想知道为什么这些看起来如此优秀的想法在Python和Ruby中没有得到更广泛的部署.这只是一种文化问题吗?以这些语言实施的设施限制?或者,在Web开发的背景下,这些方法存在根本缺陷吗?

elv*_*o79 5

我使用Seaside和continuation是开发客户端服务器webapps的漂亮模型.它们简化了传统的客户端/服务器应用程序,我无法相信为什么没有其他的langugage这样做.

但不幸的是,webapps并不像以前那样.现在使用ajax而不是仅请求一个页面,而是在不同时间有多个请求.这就是为什么延续不像以前那么有用的原因.

甚至Avi Bryant(Seaside的原作者)也表示,在ajax下使回调更容易(事件驱动编程)比延续更重要.

请看一下这个quora讨论:http: //www.quora.com/Whats-the-best-continuation-based-web-framework

  • elviejo:感谢您的见解和Quora答案的链接,这真的很棒. (2认同)
  • 这是一个非常好的观点.我会说延续更适合可能需要连续进行的API调用. (2认同)