I’ve been using Ruby now for over half a year so I feel like I have a big enough time sample to be able to roll up my impressions of Ruby from a Smalltalker’s perspective.
Ruby the language was easy to learn. I knew Smalltalk, Java, C# and various other languages. The syntax is like Java. The concepts are like Smalltalk. It wasn’t much of a transition at all.
The IDEs are bad. Working in a text editor is skinny but the different between skinny and naked isn’t much. I also use Eclipse with the Aptana plugin loaded and that makes Eclipse only slightly better for Ruby development. Senders, references, implementers are all missing. File search feels like a step back to the C# style of development. Ugh.
Documentation is good but… I miss using the code as documentation like you do in Smalltalk. I don’t want to go look at the Rubydoc website to see how to read a file. Instead, like I would in Smalltalk, I want to look at the implementation of File.new() and then find senders of it to get examples. All in the same code. Still, the documentation is pretty good.
Scripting is easy with Ruby. It should be but that doesn’t always mean much. In Ruby’s case, it really is easy to write scripts without a big IDE in your way.
There are too many ways to do the same thing. One of the things I hate most about Ruby is that there are several ways to do everything. This makes it easy to write code the way you want. It also makes your code messy as different developers write different sections of the code using completely different syntax styles. Yuk.
Libraries in Ruby are similar to Smalltalk or Java. Rake (like make). UnitTest (like SUnit or JUnit).
Debugging in Ruby is terrible. I haven’t found a interactive debugger. Debugging via print statements is like working 20 years ago – it works but not nearly as well as using a good interactive debugger.
Have you tried ruby-debug (cli debugger)? If you want a UI you could try NetBeans or RubyMine.
I find ruby-debug rather comfortable and would like to have something like that for my Scala development, really!
No IDE necessary. Just insert:
require ‘ruby-debug’; debugger
and the debugger will start at that line.
I’ll check them both out. Thanks!