topaz: (qwrrty)
Tim Pierce ([personal profile] topaz) wrote2008-03-14 11:09 am
Entry tags:

Ruby: the love is really gone

As a postscript to my previous complaint about Ruby, I received today a fantastic exploration of Ruby's closure and execution semantics, via [livejournal.com profile] zsquirrelboy: http://innig.net/software/ruby/closures-in-ruby.rb.  This covers some of the ground that I did but then goes much, much deeper.  I have only covered about half of it and probably will not get any farther today.  If you are a Ruby fan or any kind of a computer language nerd I strongly recommend that you take 30 or 40 minutes to read through it.

The upshot is: Ruby is even more fucked than I recognized.  I'm an understanding guy, and would be willing to accept a lot of the language's foibles if they were well documented up front, but some of these conclusions are really damning.  See section 3 in particular, especially if you think that "I thought I knew all there was to know about the 'return' statement" is a funny joke.

Ruby seems like a very interesting but ultimately unsuccessful experiment in functional language semantics, where some of the novel concepts just do not pan out.  Blocks in particular are a failure: if they were just implemented as first-class closures it would solve a lot of problems, but that doesn't seem likely.  A pity.
ckd: (cpu)

[personal profile] ckd 2008-03-14 04:33 pm (UTC)(link)
I haven't used Ruby, and I'm not nearly as good with CS concepts like closures as I would like to be, but I'd be interested in your opinion of how Python handles these features (assuming of course that you have one).
ext_86356: (Default)

[identity profile] qwrrty.livejournal.com 2008-03-14 04:43 pm (UTC)(link)
I don't, really. Python seems like a fine language but I've never been fond of it, partly because it feels to me like the syntax tends to get too much in my way. My sense of it is that it's much more careful to define consistent rules about the language semantics, so I would be very surprised if it fell into traps like the ones I'm talking about here.