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

由于请求之间保存状态的问题,服务器端Web编程变得困难.对此有两个优雅且相关的解决方案:Continuations(如Scheme、Ruby和Smalltalk中的解决方案)和协程(如Python和Go中的解决方案).

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

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

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?

推荐答案

我使用过Seside,Continuations是开发客户端服务器Web应用的一个很好的模型.它们简化了我无法相信的传统客户端/服务器应用程序 为什么没有其他语言在这么做.

但不幸的是,网络应用程序已今非昔比. 现在使用Ajax时,不再只请求一个页面,而是在不同的时间有多个请求.这就是为什么延续不再像过go 那样有用.

甚至Avi Bryant(Seside的原著作者)也说过,在Ajax下,使回调变得更容易(事件驱动编程)比继续更重要.

有关更多信息,请查看此Quora讨论: http://www.quora.com/Whats-the-best-continuation-based-web-framework

Go相关问答推荐

GORM Find方法中缺少字段

使用!NOT运算符的Golang文本/模板多个条件

golang regex基于关键字拆分字符串

无法使用exec从管道中读取.Go中的命令

格式化 Azure SDK 的 golang 时间

Go 1.20 中如何计算连接错误?

Json.Unmarshal() 和 gin.BindJson() 之间的区别

在 go 中,将接收器 struct 从值更改为指针是否向后兼容?

在本地 go 应用程序上获取秘密的正确策略

在密钥不存在时处理 PATCH 部分更新

Golang crypto/rand 线程安全吗?

当图像是对象数组的元素时,如何显示存储为页面资源的图像?

从Go中的随机日期开始以天为单位获取时间

有没有办法约束(通用)类型参数?

访问传递给可变参数函数的通用 struct 的特定字段

如何在golang中按字符a对字符串数组进行排序

我如何解码 aes-256-cfb

将 Simple Go Web 应用程序部署到 Elastic Beanstalk

在 go (1.18) 的泛型上实现多态的最佳方法是什么?

如何使用通用字段初始化匿名struct数组