Why I chose Python over Ruby
Marcin Mielżyński
lopexx at autograf.pl
Sun Mar 5 17:27:21 EST 2006
Francois wrote:
> I discovered Python a few months ago and soon decided to invest time in
> learning it well. While surfing the net for Python, I also saw the hype
> over Ruby and tried to find out more about it, before I definitely
> embarked on studying and practicing Python. I recently found two
> sufficient answers for choosing Python - which is a personal choice and
> others may differ, but I'd like to share it anyway :
I use both Python and Ruby and I think You are a little bit unfair in
your judgements.
>
> 1) In Ruby there is a risk of "Variable/Method Ambiguity" when calling
> a method with no parameters without using () :
>
> def a
> print "Function 'a' called\n"
> 99
> end
>
> for i in 1..2
> if i == 2
> print "a=", a, "\n"
> else
> a = 1
> print "a=", a, "\n"
> end
> end
>
> OUTPUTS >>
>
> a=1
> Function 'a' called
> a=99
>
Yes, I agree with that, but being aware of that I have never had any
problems. And this problem a arises only in method bodies. When a
receiver is specified, there is no ambiguousity (Ruby objects dont have
public fields)
>
> 2) Ruby does not have true first-class functions living in the same
> namespace as other variables while Python does :
>
Wrong! Ruby has first class functions and unlike Python Ruby supports
_true_ closures (Python supports only readonly closures). The first
class Ruby functions are the _blocks_.
> In Python :
>
> def sayHello (name) :
> return "Hello " + name
> print sayHello("Mr. Bond")
> m = sayHello
> print m
> print m("Miss Moneypenny")
>
> OUTPUTS >>
>
> Hello Mr. Bond
> <function sayHello at 0x0102E870>
> Hello Miss Moneypenny
>
> In Ruby you need extra syntax that ruins the "first-class-ness" :
No, blocks again...
>
> def sayHello (name)
> return "Hello " + name
> end
> puts sayHello("Mr. Bond")
> m = Class.method(:sayHello)
> puts m
> puts m.call("Miss Moneypenny")
>
> OUTPUTS >>
>
> Hello Mr. Bond
> #<Method: Class(Object)#sayHello>
> Hello Miss Moneypenny
>
> 4) Conclusion
>
> Since I did a lot of work in Scheme, rigor and consistency are most
> important to me, and Python certainly meets this requirement.
>
> --- Python newbie
>
Depends, I like Pythons constructs consistency, but I also like Rubys
object model constency
lopex
More information about the Python-list
mailing list