On Wed, 03 Oct 2012 21:47:33 -0700, Chris Rebert wrote: > On Wed, Oct 3, 2012 at 11:31 AM, Wolfgang Keller <felip...@gmx.net> > wrote: >>> I'm really new to Usenet/Newsgroups, but... I'd like to learn some new >>> programming language, because I learnt a bit of Perl though its OOP is >>> ugly. So, after searching a bit, I found Python and Ruby, and both of >>> they are cute. So, assuming you'll say me "learn python", why should I >>> learn it over Ruby? >> >> The point why Ruby was started (perceived deficit of >> object-orientation) has been remedied since Python 2.2. > > Not completely. At the least, there's arguably still the issue of len() > and friends (vs. `.length` etc.), and also of `self` being explicit.
I'm not entirely sure which "perceived deficit of object-orientation" is being talked about, or why anyone but OOP purists would consider that a problem. Python is *more* object-oriented than Java, and I don't hear anyone complaining that Java isn't object-oriented. Everything[1] in Python is an object. *Everything*. Ints are objects. Strings are objects. Arrays are objects. There's no distinction between "boxed" and "unboxed" ints, like in Java or Haskell -- Python just has ints, and they're always objects. As for len() and friends, that's a red-herring. Just because the syntax is written len(x) instead of x.len() doesn't make Python less object- oriented. It's just syntax: "a + b" is no less OO than "a.plus(b)". Somebody might not *like* the syntax "a + b", or "len(x)", but they should just say so, and not pretend that it isn't OO. Likewise self. Explicit or implicit, how does that make a language less or more object-oriented? That's as foolish as saying that Python isn't object-oriented because you don't have to declare the type of variables: x = (float)1.234 Again, there are arguments for and against explicit self, but "explicit self is not OO" is not a valid argument. Being object-oriented has both costs and benefits. Java compromises on the idea of OOP for performance: native, non-object ints are faster than object ints. All these people complaining that Python isn't OO enough because you have to write "self" in method declarations, why aren't they complaining that Java isn't OO enough because ints are unboxed primitive types? [1] Emphasis on the *thing* part. Control structures aren't things in that sense, they aren't values at all, they are actions that takes place during execution. -- Steven -- http://mail.python.org/mailman/listinfo/python-list