[Twisted-Python] regarding callbacks.

Jasper St. Pierre jstpierre at mecheye.net
Mon Apr 30 16:45:03 EDT 2012


On Mon, Apr 30, 2012 at 4:15 PM, Glyph <glyph at twistedmatrix.com> wrote:
> On Apr 30, 2012, at 4:57 AM, moses dsouza wrote:
>
> I don't think so.  Most of what Guido wants is already available via inlineCallbacks, and the drawbacks of using that are documented pretty well in the comments there.  I also have some issues with the premises and conclusions of that article. For example, batching, pipelining and pooling are all easier to implement with a callback-driven style.
>
> I think that article is mainly about aesthetic choices, and the culture of the Python community.  However, it does highlight the need to document the reasons why things are the way that they are in the Twisted world, so that the broader Python community understands that it's not weird for the sake of weird; but this is a documentation issue.  For example, Node.JS doesn't have this problem, despite having a much worse convention of callback spaghetti (as far as I know, they don't have an abstraction analogous to a Deferred yet); this is because the JavaScript community has already accepted callbacks and is intimately familiar with them before approaching Node for the first time.  There are a few analogues in Python (for example, GUI toolkit programming) but a smaller proportion of the community at large are familiar with that style.

Several large JS toolkits have the concept of a Deferred or a Promise.
MochiKit stole Twisted's, where it got forked into Dojo, and then
forked into Google's Closure library. jQuery has a separate Deferred
implementation that looks like Twisted's, and is similar enough that
we can call it a Deferred, although I know a few people who object to
that.

This is a bit off-topic, but generators are expected to be in Harmony
(they're already in Mozilla's JS, stolen wholesale from Python). The
latest specification draft has "yield" as a future reserved word, and
has a reference to an undefined "YieldExpression", though this may
just be an editing oversight.

Right now, you could implement inlineCallbacks in Mozilla JavaScript.

> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

-- 
  Jasper



More information about the Twisted-Python mailing list