Thursday, April 26, 2007

Fighting words on Ruby

Is anyone but me dismayed by the current state of Ruby? It's a great language, and it has a lot of promise--but there are also major issues that make Ruby and related efforts seem more like a set of academic projects than serious production-quality programming tools.

The main thing that prevents me from using Ruby is that the 1.8 interpreter is too weak, and the other alternatives are too immature. I can use Ruby for scripting in the same way that I'd use Perl or PHP, but I wouldn't want to write a major application using a technology that doesn't support native threads, Unicode, or some kind of GUI. Yes, I know that you can roll some primitive Unicode support into Ruby, and I know that there are several GUI toolkits out there, but overall, Ruby's support for anything beyond basic scripting is spotty.

So what are the alternatives? I guess the front-runner is JRuby, but JRuby is really just a scripting language that works with Java, not something that you'd use to write an application. And compared to MRI, it's really, really slow.

And anyway, why would I want to write something using Ruby 1.8, when I'd just have to change it as soon as Ruby 2.0 comes along? I'm skeptical that Ruby 2.0 will ever arrive; the Ruby 1.9 branch seems like a free-for-all experiment with language features that's not converging on anything coherent. I've seen posts from Matz about Ruby 2.0 on comp.lang.ruby from as far back as 2001. But the fact that Ruby 2.0 is out there puts the the wisdom of developing Ruby 1.8 code into question. I can't even develop Ruby 1.9 code with any confidence, because there are features in 1.9 that might not make it into 2.0.

My feeling about Ruby is that it will never enjoy the success of C, C++, Java, Perl, or even PHP. But I am hopeful that someone will take some of the concepts and syntax from Ruby and use it to create a viable post-Java application development langauge.


At 6:21 PM, Blogger Mr Kast said...

Regarding the sluggish progress moving from Ruby 1.8 to 2.0, you could certainly level the same argument against Perl 5.8 to 6.0, which also seems like it will never happen and involves major changes...

I think Ruby's fine as a scripting language, and it beats the pants off Perl or Python. For programs large/complex enough to need threads, I'd tend to shy away from any scripting language, as the "duck typed" feature that makes them so fast to write makes them such a pain to refactor as the code base grows and changes.


Post a Comment

<< Home