Ruby and Python (Can’t we all just get along?)
Over on Loud Thinking, David Hanson creator of Rails, seems pretty frustrated with Bruce Eckel’s recent blog post about Ruby, Rails, Python and Tate’s Beyond Java book.
“I’m losing track of the ill-conceived comparisons, but I do know what’s astoundingly clear: Bruce Eckel doesn’t like Ruby, he doesn’t like the attention its getting, and he doesn’t like people such as Bruce Tate fueling that attention.”
Bruce isn’t a huge fan of Ruby, but he doesn’t slam it either. So he does have some critical things to say, but on the other hand, here are a few quotes where he praises Ruby and Rails:
Clearly Ruby is making important contributions to the programming world.
Rails approach isn’t the ultimate solution; there will be plenty of other problems that we need to solve on the way to making web development easy. But it represents a fundamental restart in the thinking process.
He does however criticize Tate’s Beyond Java for announcing Ruby to the be the successor to Java without considering Python in any depth. And from what I can tell this is a reasonable critique of that book.
I know that a while ago on the Ruby list there where some quotes from one of Bruce’s posts which were not favorable to Ruby. And there might some bad blood from those quotes. But that post is no longer available in it’s entirety, and the only thing left is a few out of context quotes on the Ruby mailing list.
So, as far as I’m concerned the Ruby folks should get over it, and start engaging Bruce in a reasonable dialog. Especially since his current stance is that Ruby is nice, but he’s not yet convinced that there’s enough benefit to switching to let go of the advantages (and yes there are some!) of Python.
It seems that I read more and more about how the Ruby people and the Python people are fighting on the playground.
The blog you pointed to made me think that that guy was not very secure in the capabilities of his language of choice.
Dialog people dialog!
There are many reasons to use (and not to) Python.
There are many reasons to use (and not to) Ruby.
There are many reasons to use (and not to) Java. Really, bashing Java doesn’t help.
There are many reasons to use (and not to) .NET. Really, it’s cool, I’ve done serious work with it.
It’s funny that language advocates think that anyone that doesn’t prais their language is bashing it.
BTW: The 10x-more-productive-than-Java thing is a *MYTH*. I’ve been extremely productive with Java, mainly because it has very cool development tools.
Firstly, I’d like to say that I agree strongly with the title of this blog-post. The Ruby community is usually well known for its open-mindedness and general niceness, I don’t understand why some members have a dislike of Python (I personally prefer Ruby, but Python would be my 2nd favorite language). I don’t think superficial Python critics (e.g. “significant whitespace, wtf? must be a bad language”) are representative of the Ruby community as a whole, just like I don’t think superficial Ruby critics (”influenced by *Perl*, wtf? must be a bad language”) are representative of the Python community.
However I think there is one main issue with with Bruce Eckel’s comments, and I think it’s valid (David H. Hansson seems to be making a similar point, but in his typical outspoken style). The problem is that Eckel’s main criticism of Bruce Tate’s book is that he dismisses languages without taking the effort to learn them. In Eckel’s post, and especially in his previous post some years ago, which I clearly remember (the rest of the post was quite similar to the quotes, IIRC), Eckel seems to criticise and dismiss Ruby without showing that he has taken the time to learn it. First time round, this was the paragraph that I remember most strongly:
For some reason, the creator of the language saw Python and decided to do a clone, and people who had never used Python thought it was a good idea. Harsh, maybe, but that’s my impression: if you’ve used Python at all, you wouldn’t give Ruby a second glance.
Strong words from an influential and respected writer, but they didn’t seem to be based on much evidence (and as a Python convert to Ruby, I disagreed with them). This time it seems to be along the lines of “there are influences from Perl, ergo it must be a bad language”. So to me he comes across as the pot calling the kettle black, not spending the time to learn the language before he shoots his mouth off criticising it.
The fact that Eckel criticises different parts of Ruby this time around, without acknowledging that he criticised Ruby before, and that some of these previous criticisms were somewhat rash and unfounded, is a secondary issue, which I think Ruby people would be willing to overlook if he wrote a second post, critiquing Ruby from the perspective of an example script he’s written, or some evidence that he’s taken the time to learn Ruby and to try to think in the language, something I imagine he would be quite good at doing :-)
Matt,
I agree with you that the quotes from the previous article by Bruce indicate that he may have been guilty of the same thing that he blames “Beyond Java” for doing. However, his removal of that post, and his inclusion of several positive statements about Ruby seem to indicate that he is at least learning!
And that’s what I want. I want us all to get along, and to be able to talk to one another without starting flame wars by being rude, or by over-reacting to some perceived slight by the other side.
The reactions to Bruce Tate’s book surprise me. I thought we was careful not to “declare a winner”. In my case, reading the book led me, via my own investigations, to use Turbogears for a commercial project that I’m starting.
As far as the languages are concerned, I don’t see much fundamental difference between Python and Ruby except that Ruby incorporates regular expressions into the language. (Sure, the punctuation is different, but that’s small beer. I’m reminded of Wadler’s law of language design: [http://www.informatik.uni-kiel.de/~mh/curry/listarchive/0017.html])
I have two reasons for choosing Python (and Turbogears) over Ruby (and Rails):
(1) The Turbogears framework, in contrast to Rails, makes the interface between controller and model completely transparent. (We don’t need to “babysit a relational database”, but control a bunch of web-connected devices. Turbogears lets me use existing “model” code without thinking about it.)
(2) other programmers and code for the project are already using Python.
#g