How does Ruby compare to Python?? How good is DESIGN of Ruby compared to Python?

Joe Mason joe at notcharles.ca
Wed Feb 25 21:40:24 EST 2004


In article <103qa59gj6h57f8 at news.supernews.com>, John Roth wrote:
> 
> "Joe Mason" <joe at notcharles.ca> wrote in message
> news:slrnc3ob0q.i6n.joe at gate.notcharles.ca...
>> In article <c1h1sb$1it26i$1 at ID-169208.news.uni-berlin.de>, Greg Ewing
> (using news.cis.dfn.de) wrote:
>>
>> > * In Python, functions are first-class, and
>> > methods are implemented in terms of functions. In Ruby,
>> > methods are the fundamental concept, and there are no
>> > first-class functions. The result is that Python lets
>> > you obtain a bound method from an object and use it like
>> > any other function. You can't do that in Ruby. You can
>> > get a method object in Ruby, but you can't call it using
>> > normal calling syntax.
>>
>> I don't see the distinction.  "normal calling syntax" in ruby involves
>> an object, so "unbound function" isn't a meaningful concept.  I mean, if
>> you get a method the begins with the self parameter, you still need an
>> object to call it, right?  Even if you're calling it as "foo(obj,
>> params)" instead of "obj.foo(params)".  I don't see what the ability to
>> use the other syntax gets you, except the ability to pass functions
>> around independantly of objects, which I'm pretty sure you can do with
>> methods in Ruby anyway.
> 
> I think you've missed the point here. Python has a concept
> of a "callable," that is, some object that can be called. Bound
> methods are useful precisely because they carry their instance
> around with them and also because they look exactly like any
> other callable; there is no special syntax that is required either
> to create one or to invoke it.
> 
> Unbound methods, on the other hand, require the caller to provide
> the instance explicitly which limits their usefulness quite a bit.

Ah.  Finally I see - I just misread "bound" as "unbound" in the original
post.  I wondered why Greg brought up unbound methods and then gave me
examples of bound ones...

Joe



More information about the Python-list mailing list