Brackets.

Huh?  What do you mean "brackets"?

Brackets.  Ruby doesn't have enough brackets.

Hmph! I think ruby has the exact right amount of brackets!

But not enough to become popular.  Brackets are a prerequisite, didn't
you know?

That's preposterous!  Ruby's great design, its expressiveness, its
clarity, its generally grand way of doing things -- all these
strengths and you are saying brackets are more important?

Yes.  To be popular.

You keep saying "popular."  But who cares about popularity anyway?  As
if the measure of a language is its popularity.  Are you a
card-carrying member of the ignorant masses who follow whatever is
"hot" at the moment, disregarding what may really be better?

No.

Then screw popularity.  We don't need whimsy programmers who are
attracted to the simulated familiarity which brackets give.  Such
shallow programmers we can do without, thank you.

Then you shall continue basking in the lonely sunshine of relative
obscurity, secure in your knowledge of what programmers should be
like.  Good luck with all of that.

[brief pause]

Surely you are a troll.

Nope.

What about Python?  It doesn't have brackets.

Um, Python isn't popular.  Perhaps relative to ruby it is.  All Python
programmers rode the short bus anyway.

Huh?

Python programmers -- they rode the short bus to school.

Short bus?

It's the bus for the special -- oh nevermind.

[end conversation]

Exhibit A.
----------
Ruby as it exists presently.

class IO
  def expect(pat,timeout=9999999)
    buf = ''
    case pat
    when String
      e_pat = Regexp.new(Regexp.quote(pat))
    when Regexp
      e_pat = pat
    end
    while true
      if IO.select([self],nil,nil,timeout).nil? then
        result = nil
        break
      end
      c = getc.chr
      buf << c
      if $expect_verbose
        STDOUT.print c
        STDOUT.flush
      end
      if mat=e_pat.match(buf) then
        result = [buf,*mat.to_a[1..-1]]
        break
      end
    end
    if iterator? then
      yield result
    else
      return result
    end
    nil
  end
end

"Oh great another language trying to be different."

"Pascal sucks.  I hate the 'end' keyword."

"My editor isn't set up to handle this language.  I don't understand
why they can't just use brackets."

"A garbled mess, looks like.  It's confusing without brackets to guide
my eye."


Exhibit B.
----------
Ruby as it exists in an alternative universe where it supplanted perl.

class IO
{
  expect(pat,timeout=9999999)
  {
    buf = ''
    case pat
    {   
      when String
        e_pat = Regexp.new(Regexp.quote(pat))
      when Regexp
        e_pat = pat
    }
    while true
    {
      if IO.select([self],nil,nil,timeout).nil?
      {
        result = nil
        break
      }
      c = getc.chr
      buf << c
      if $expect_verbose
      {
        STDOUT.print c
        STDOUT.flush
      }
      if mat=e_pat.match(buf)
      {
        result = [buf,*mat.to_a[1..-1]]
        break
      }
    }
    if iterator?
    {
      yield result
    }
    else
    {
      return result
    }
    nil
  }
}

"Wow cool language.  I see what's going on immediately."

"I like how it's familiar.  My eye is trained to follow brackets, so I
can size up this code with one glance."

"Hey this looks just like Java!  I know Java!  I can't wait to start
using ruby as my no-separate-compile-step language!"

"Dude this is gonna kick perl's ass."

----

I am being more serious than it may or may not appear.  I think ruby
missed out on a big chance here.  It is absurd, but it's true.

cheers,
Matt