Zed Shaw on Ruby Pros/Cons: You Used Ruby to Write WHAT?

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.

On Tue, Mar 4, 2008 at 7:20 AM, estherschindler [email protected]
wrote:

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.

Christopher D. wrote:

On Tue, Mar 4, 2008 at 7:20 AM, estherschindler [email protected] wrote:

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.

I’m a bit surprised he didn’t take the easy shots at ruby: not suitable
for hard real time, for device drivers, for SMP, for embedding multiple
interpreters in a process, for very low memory situations. Most IT
managers won’t know these things unless you tell them, no matter how
obvious they are to programmers.

Anyway, he seems to know about web and java gui, but not much about some
of the other topics he mentions. “Large data crunching”? What about Ara
Howard’s work at NOAA? “Image manipulation”? Ditto. He briefly appears
to discount Event Machine without naming it or giving specifics about
why it’s not suitable for “server protocols” (if he has a reason, I’d
like to know it!). I’ve found ruby extremely useful (with a bit of C
code compiled on the fly) for simulations that involve “heavy math or
computation” and for DSLs to specify and manage those simulations.

I was surprised to see his claim that Rails isn’t any good for writing
a CMS, yet Django is. Having easily written a few CMS-like apps in
Rails, I have NO idea what his thoughts are there. Is it the blocking
file upload issue?

On Tue, Mar 4, 2008 at 1:47 PM, Joel VanderWerf
[email protected] wrote:

for hard real time, for device drivers, for SMP, for embedding multiple
code compiled on the fly) for simulations that involve “heavy math or
computation” and for DSLs to specify and manage those simulations.

I agree he skipped over some things (both bad and good), but I think
his general point was that Ruby in a web production environment can be
a feisty animal (he mentioned math, but only briefly, and was clearly
unaware of some number-crunching that people have done). But, just
like with any language, I suppose you need good programmers to have
good programs. The only difference that I personally see is how easy
a particular language can allow someone to write bad code, and I think
that’s what he was trying to get at.

Todd

On Wed, 5 Mar 2008, Mark T. wrote:

I was surprised to see his claim that Rails isn’t any good for writing
a CMS, yet Django is. Having easily written a few CMS-like apps in
Rails, I have NO idea what his thoughts are there. Is it the blocking
file upload issue?

The relevant paragraph is:

“The caveat on Ruby for Web programming is that Rails is better suited
for
building Web applications. I’ve seen many projects attempt to create a
WebDAV server or a content management system (CMS) with Rails and fail
miserably. While you can do a CMS in Rails, there are much more
efficient
technologies for the task, such as Drupal and Django. (In fact, I’d say
if
you’re looking at a Java Portal development effort, you should evaluate
Drupal and Django for the task instead.)”

Zed does seem to fall into the common trap here of criticizing Ruby via
a
Rails weakness (or perceived Rails weakness). I find Ruby to be a
brilliant language to use for CMS systems, and have been doing CMS work
with Ruby (using IOWA) for many years. The attributes of Rails may or
may
not make CMS systems easy to write, but that’s hardly a weakness of
Ruby.

Kirk H.

On 3/4/08, Mark T. [email protected] wrote:

I was surprised to see his claim that Rails isn’t any good for writing
a CMS, yet Django is. Having easily written a few CMS-like apps in
Rails, I have NO idea what his thoughts are there. Is it the blocking
file upload issue?

Same here, multiple CMS’s under my belt using Rails, no major problems.

My experience with Django, on the other hand, was a complete pain.
Having to place models in “apps” is dumb. An inverted template system
is even dumber.