问题是:为什么延续(在 Ruby 中)和协程(在 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 开发环境中是否存在根本缺陷?