I am currently listening to Tim Bray’s keynote, opening the JavaPolis
conference. His presentation is called "When not to program in Java" and
is a comparison of C, Java and Python (with a short mention of C++, although he
admits having never programmed in it).
The presentation is overall interesting but not very innovative. Tim
compares the number of lines and characters used to solve a simple problem and
draws a number of conclusions. The one I disagree the most with is his
assertion that Python is more object-oriented than Java. "Almost
irritatingly so", he says, arguing that sometimes, Python is "too"
object-oriented for his taste.
I am still scratching my head at this, and it’s hard for me to understand how
you can tell that Python is very object oriented when:
- You need to pass "self" as a parameter to all your methods… Does
this remind you anything? Right, that’s how we "simulated"
object-orientation in C, by passing the address of the current object in
first parameter. If anything, this shows that Python is not
object-oriented, and this flaw is a simple illustration of Python’s old age
(it was not object-oriented when it was created, more than fifteen years
- You can’t pass messages to, say, strings, as you can in Java, Ruby or
Groovy ("foo".size()). Writing code in Python usually ends up being a
mix of imperative and object-oriented calls that doesn’t always follow any
Python is a fine language but overall, I am quite surprised by the amount of
misconceptions that people have about it, and Tim is certainly not the first one
falling under Python’s spell. I chatted with Tim after his talk and he
admitted not being a very proficient Python programmer… Mmmh.