If I tell you that these are the views of a newcomer to Ruby, you might think they can be dismissed as the babblings of pure ignorance. Not so! The quote above comes from an article by Matthew Huntbach, a lecturer in computer science at Queen Mary, University of London. I first came across Matthew after her wrote a feisty and well-argued riposte to a piece that Dermot Hogan and I had written about Object Orientation; in his comment, Matthew happened to mention that he was just starting to take a look at Ruby, that he was suspicious of all the hype that surrounded it but since “there are people who I’ve admired in the past who are going for Ruby,” he thought “there must be something in it.”
It struck me that this would be the perfect opportunity to get the opinion of a highly experienced computer scientist with no axe to grind pro or con Ruby. I asked Matthew to take a closer look at Ruby and write an article giving his views on what he found. I didn’t know whether he’d end up loving the language or hating it. In the event, Matthew seems to have found things both to like and to loathe about Ruby. On the plus side, he says…
“If I needed to use a scripting language, it’s the one I would now use. It’s cleaner than Perl, and I like its syntax better than Python.”
But his praise is certainly not unqualified. He believes many of the claims made for Ruby are ‘outrageous’ and is highly sceptical of the benefits of Ruby’s core features such as its ‘dynamism’…
"Ruby’s dynamic class modification also strikes me as something with the potential to produce hugely complex and non-understandable code. If I am tracking down the source of some buggy behaviour, I might start by looking for the class of the object whose method call led to the bug. The lack of types in Ruby would make that more difficult, but on top of that I have to face the possibility that the method may have been redefined somewhere else during code execution, maybe for the whole class, maybe for the individual object. There isn’t one class definition I can reliably say completely defines an object’s behaviour…"
Read the whole article over on the Bitwise Site