小编Luc*_*lho的帖子

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

问题是:为什么不继续(在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开发的背景下,这些方法存在根本缺陷吗?

ruby python continuations go coroutine

20
推荐指数
1
解决办法
1101
查看次数

为什么在camel情况下命名OrderedDict而defaultdict是小写的?

看一下源代码,似乎唯一的"原因"是OrderedDict用Python编写的,而defaultdict在C语言中.但是看起来这种情况正在发生变化,因为Python 3.5应该有一个cOrderedDict(参见Python Bugs),这突出了我唯一的错误解释其实是.

谁能提供更好的解释?我希望更好的理由.

编辑:对于Python 2.7,所谓的重复答案是可以的,而不是对于类3 /类型区别消失的Python 3.OrderedDict并且defaultdict都被解释器本身视为类:

>>> collections.defaultdict
<class 'collections.defaultdict'> 
>>> collections.OrderedDict
<class 'collections.OrderedDict'>
Run Code Online (Sandbox Code Playgroud)

python

14
推荐指数
1
解决办法
1374
查看次数

标签 统计

python ×2

continuations ×1

coroutine ×1

go ×1

ruby ×1