

My Mixed Feelings about Ruby - mattculbreth
http://weblog.raganwald.com/2008/06/my-mixed-feelings-about-ruby.html

======
petuniapredator
Good article raganwald.

I'm just learning RoR and I guess my biggest hangup is the prodigious use of
colons.

I admire your ability to "rewrite code for Ruby"...

For me it's tough enough to learn one language. There is no way that I would
ever attempt anything but a greenfield application with RoR and to finish that
I will probably need some help. What attracted me to the language was the
impression I got from reviewing descriptive materials from DHH and the 37
signals crew that Ruby has a great deal of elegance when it comes to
interacting with databases. And, for me anyways, that's the only kind of
elegance I'm really interested in because I think that's where the money is
going to be. So far I'm not really good enough with the syntax to say whether
it's going to live up to expectations but I haven't really seen anything yet
that would cause me to say I've made a mistake in choosing this platform.

------
Darmani
Blocks may not be able to genuinely accept blocks in Ruby, but I was able to
get something pretty close: [http://blade.nagaokaut.ac.jp/cgi-
bin/scat.rb/ruby/ruby-talk/...](http://blade.nagaokaut.ac.jp/cgi-
bin/scat.rb/ruby/ruby-talk/293232)

------
sabat
_To my eyes, Ruby as a language looked a lot like an internal IT app that is
built as an aggregation of features. There might be a wonderful, coherent
design in the implementation that I can’t see, but the interface I use seems
like a bunch on one-off features that don’t play well together._

Huh? Is this guy talking about Perl? Is he talking about the same Ruby I know?
His criticisms don't make any sense. Ruby is well-organized and well thought-
out. It's not without its flaws, but it has far fewer than Java or Perl. Hell,
Ruby makes Perl look like Java.

(If he hates Ruby this much, I'd hate to imagine what he'd think of the
gigantic featuritis-striken kludge called Java or J2EE.)

~~~
raganwald
_Ruby is well-organized and well thought-out._

O RLY?

Just kidding. I think Ruby _is_ well thought-out. Just for a chuckle, what
does this snippet of code do?

    
    
      p = Proc.new { return :to_sender };  
      p.call
    

What about this one?

    
    
      l = lambda { return :to_sender };  
      l.call
    

Why and how do they differ? And given that they differ in behaviour, what do
you think this should return? False, right?

    
    
      c.class == l.class
    

As for my criticisms, my main point has to do with Ruby not being implemented
in terms of itself. Almost everything else that troubles me can be traced back
to that issue.

[http://weblog.raganwald.com/2006/11/significance-of-meta-
cir...](http://weblog.raganwald.com/2006/11/significance-of-meta-
circular_22.html)

[http://weblog.raganwald.com/2007/12/why-rubinius-matters-
to-...](http://weblog.raganwald.com/2007/12/why-rubinius-matters-to-rubys-
future.html)

[http://weblog.raganwald.com/2008/02/turtles-all-way-down-
ple...](http://weblog.raganwald.com/2008/02/turtles-all-way-down-please.html)

p.s. Please remember that the post was not titled "What's wrong with Ruby," it
was titled "My Mixed Feelings about Ruby." So it can well be that I have a
viewpoint which does not reflect how intelligent people feel about t he
language.

~~~
menloparkbum
The main point is that Ruby is not implemented in terms of itself? That surely
doesn't come across as the main point of the article, as it is only mentioned
in a short 3 sentence paragraph that mostly consists of links to other
articles.

I felt the article was a bit content-free. The main point I got out of it was
that Ruby isn't elegant like Scheme or Smalltalk. This is the same sort of
thing that has been repeated ad nauseum since the dawn of internet discussion.
If Ruby is too gauche, Scheme and Smalltalk already exist and provide actual
implementations of this strange symmetrical, consistent, mathemagical
"elegance" that certain programmers get a boner over. (substitute "OOP" for
"mathemagical" in the case of Smalltalk)

Now, I'll derail this thread with some opinions of my own. I used to love
Perl. The inconsistency, crypticness, ability to make incomprehensible one-
liners that actually did something useful - I truly felt like a wizard. Perl
golf was a big hobby of mine. Unfortunately as soon as Java became the next
big thing, Perl became totally not cool. To be honest, Perl was never "cool"
anyway. The good Perl guys were all old systems administratiors who still
posted "rants" to alt.kibology and only had sex when dressed in giant furry
chipmunk suits. However, at least they were free-thinking, anything goes
weirdos. In contrast, the Java droids who replaced them had the spirit of
soviet city planners dressed in khakis and a SUN logo polo shirt... Ugh.

I'm completely indebted to Matz, (and DHH, because ruby wouldn't have taken
off as it has without Rails) because he's invented a Perl that is "cool." No
longer do I have to make the choice between working with guys still into "the
Church of the Subgenius" or guys who actually wear their blackberry in a
holster on the outside of their pants. I can now work on fun startup things
with cool people who I can actually relate to. There's just enough "WTF" in
Ruby to keep me happy, and just enough "OBJECT ORIENTED DESIGN PATTERNZ" stuff
to keep those types of people happy. There's even enough Lispy stuff in there
to keep those types happy for about 30 minutes until they go back to their
real avocation, posting long diatribes to mailing lists about how things
aren't as elegant as Lisp.

~~~
raganwald
No, the main point of my personal blog post was that I am personally wrestling
with the idea that Ruby as a whole might be more than the sum of its inelegant
parts.

The main point of the criticism within the point of the post was about Ruby
not being implemented in itself, but that is not the point of the post.

~~~
menloparkbum
Ah, well that is a good point. However, many (most?) good things in software
have a bit of insanity going on somewhere in the mix. For instance, any
computer game is definitely "more than the sum of its inelegant parts."

My main beefs with Ruby are that it is slow, and there is a weird reality
distortion field within the community that makes a lot of people respond to
legitimate criticisms with tribal defensiveness. However, I won't go into
either point as Zed Shaw seems to have covered them quite well.

~~~
davidw
> makes a lot of people respond to legitimate criticisms with tribal
> defensiveness.

That's true for pretty much any computer system, whether it's Tcl, Emacs,
Ubuntu, Postgres or whatever.

BTW, I loved the descriptions of Perl and Java users - it's not often that I
get that good a laugh when reading something. And I agree with you completely
about Ruby hitting a 'sweet spot'.

------
quellhorst
Who cares? It isn't like you and ruby are getting married.

If you have a project that ruby seems like a decent fit, use it. You'll get
nowhere are learn nothing without actually doing.

