2007: Ruby

June 6, 2007

While Meredith was writing her level 2 CFA exam this past weekend, I had the chance to dig into the first 100 pages of Programming Ruby. I figure it makes sense to try and do a good job learning Ruby first before learning Ruby on Rails.

Admitedly, I'm very split minded about Ruby right now, sort of like I am about Perl: There are a lot of things that I really like, but there are also some things that make me cringe. Here are some things that I like/dislike so far.

The good:

Ruby is very object oriented, which makes for a clean namespace. One of my complaints about PHP (and Perl) is that they are function-oriented, and so you get these somewhat long, hard to remember function names. For example, PHP has: file_get_contents, simplexml_load_file, strtotime, etc.

Ruby is very good at reducing how much the developer has to type. This is one of my gripes about Java, but also C++ to a certain extent: In many places they are wordy and bloated. For instance, in C++:

Words Words;
Words::iterator Iter;

for ( Iter = Words.begin() ;
      Iter != Words.end() ;
      Iter++ )
    cout << *Iter;

In Ruby:

words.each {|word| puts word}

The bad:

Major complaint: Everything that I've read has indicated that Ruby is slow. Not just slow, dog slow :(

Ruby's code block construct is fascinating, but it feels a bit unnatural. It will take some time before I have a better feeling for whether I like or dislike code blocks.

Related point: Ruby accomplishes a lot by levereging its object oriented namespace and being clever with the code block construct. But this results in a bit of an unnatural style that doesn't mimick natural language that well. For instance:

words.each {|word| puts word}

... is not as natural in form as Perl's...

for each $word (@words)
    print "$word\n";

April 12, 2007

Last week I picked up Programming Ruby at Chapters, and this week I lucked out by getting Agile Web Development with Rails for free from Scott at work since he had an updated version of the book. I can't wait wait to dive in -- hopefully this language lives up to all of the hype. I'm optimistic.