At CIO.com:
You Used Ruby to Write WHAT?!
Deciding when to use any language -- including Ruby -- depends on the
appropriateness to task and the amount of yak shaving necessary. Zed
Shaw explains when Ruby's MRI or JRuby is the best language for the
job, and when it really isn't.
http://www.cio.com/article/191000
I'll use language a little less colorful than Zed himself might use in talking
about MRI, Rails, and the Ruby Community outside of the pages of CIO,
and say the article has some problems.
Zed seems to think that Rails is the start and end of Ruby for the
web, which is
odd given his fabulous explosion and his comments about the other Ruby web
frameworks in that explosion and how those other frameworks made the Rails
core team squirm. Its one thing for Zed's corporate, writing-for-pay persona
to differ from his writing-on-my-own-time persona in attitude (it is, I'd say,
pretty essential) but its another thing for his writing-for-pay persona to be
completely ignorant of basic and relevant facts that his other persona is
clearly aware of.
The article is also self-contradictory in several places (this seems to be a
feature of this series of articles in CIO), at one point he mentions, as a
plus,the fact that MRI can easily tie to code in C for portions of an
application that need it, and later he says if your application needs
intensive calculations, you should not use Ruby for the application
but use C, C++, Fortran, or Java. Why he doesn't suggest simply
factoring out the computation-intensive portion to C or Java
(depending on whether the rest of the app is JRuby or MRI) and using
Ruby for the rest, which would be in line with his earlier positive
comments, I don't know. Its almost like each paragraph was
written in isolation by a different person.
Similarly, he talks about people "giving up" on writing servers
in Ruby and resorting to Ruby+C as a weakness, after having
described C interfacing in MRI as a strength -- and he uses this
to argue that Ruby is unsuitable for use in such projects, even
though part of the support for it is people choosing to use Ruby
in exactlythe way he earlier mentions as one of its strengths.
"Ruby's good for DSLs, which are easy to implement!", "Ruby's
bad for DSLs because Ruby DSLs don't have intelligible errors!".
I don't understand what the utility of the article is supposed to
be. If you don't already know anything about Ruby, its not
going to help a lot in making a decision about using it in any
given project, because its too scattershot with its often
contradictory categorical statements about what Ruby
should and should not be used for. And if you know even
a little about Ruby, you'll probably know more than the
article gives you about any of the issues it presents.
About the only thing it seems useful for is as a tool for a
manager that doesn't know much about Ruby looking
to justify making a decision that's really been made for
some other reason. And there, the contradictions are
probably useful, since you can pick the one that goes
with the decision you've already made and ignore
the other.