Ruby could be wildly more popular if it had

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

Jeff Mitchell graced us by uttering:

Ruby could be wildly more popular if it had … 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?
[ snipped vast majority of farce ]

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.

If it weren’t for the obscene popularity of Visual Basic, you
might have had a point.

But if to be VB is to be popular, I would prefer relative
anonymity.

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

Brackets will not automatically make iterators obvious to coders
who have no experience with them. Iterators already support
brackets and have thus far confused many a Java coder.

Tim Hammerquist

···


Imagine if every Thursday your shoes exploded if you tied them
the usual way. This happens to us all the time with computers,
and nobody thinks of complaining.
– Jeff Raskin, “Doctor Dobb’s Journal”

Jeff Mitchell wrote:

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!
[snip balmy bracket babel]
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.

This presents quite the dilemma on what to use for blocks when you are
introducing Ruby to someone.

On one hand, you should use do…end, which fits nicely in with
begin…end, class…end, def…end etc. so that it seems simple,
orthogonal, pedagogical etc.

On the other hand, you really need to write every possible block on the
{…} form to get high enough bracket-ratio to get into their geeky
little heads.

Personally, I shunned the do…end for quite some time when I started
playing with Ruby. Count me up as anecdotal evidence for your claim. :slight_smile:

···


([ Kent Dahl ]/)_ ~ [ http://www.pvv.org/~kentda/ ]/~
))_student_/(( _d L b_/ (pre-) Master of Science in Technology )
( __õ|õ// ) )Industrial economics and technological management(
_
/ö____/ (_engineering.discipline=Computer::Technology)

“Kent Dahl” kentda@stud.ntnu.no schrieb im Newsbeitrag
news:bg6d1v$nsq$1@tyfon.itea.ntnu.no…

This presents quite the dilemma on what to use for blocks when you are
introducing Ruby to someone.

On one hand, you should use do…end, which fits nicely in with
begin…end, class…end, def…end etc. so that it seems simple,
orthogonal, pedagogical etc.

On the other hand, you really need to write every possible block on the
{…} form to get high enough bracket-ratio to get into their geeky
little heads.

My solution is to use {} for one line blocks and do…end for more
complicated things.

robert

Exhibit A.

Ruby as it exists presently.

Nice, clean, reads like english. Flexible indentation, but language
constructs keep it fairly obvious how to indent.

Exhibit B.

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

Oy vey, that is the single ugliest variation of the bracketed coding
style I’ve seen – so little code in a screenful that you need a huge
screen and tiny font to read a program in the abstract.

I tried this style for a while. But then every time I added lines to a
one-line block, I had to change {} to do/end.

Today I normally used {} on all blocks, except in Rake files.

···

On Tue, 2003-07-29 at 22:30, Robert Klemme wrote:

My solution is to use {} for one line blocks and do…end for more
complicated things.


– Jim Weirich jweirich@one.net http://onestepback.org

“Beware of bugs in the above code; I have only proved it correct,
not tried it.” – Donald Knuth (in a memo to Peter van Emde Boas)

Jeff Mitchell wrote:

Brackets.

Huh? What do you mean “brackets”?


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.

When I first glanced through Programming Ruby I was put off by the
‘begin’ ‘do’ ‘end’ stuff. Ugh, I thought.

For various reasons I returned to the store and bought the book, learned
Ruby, and have been that much the happier for it.

But, indeed, I know of others who also had the same first reaction.

Still, I’m not convinced that having a visual similarity to another
language is a big selling point. I’ve read a number of dismissals of C#
that all seem to moan “it looks just like Java, so why bother.”

I find that the best way to sell someone on Ruby is to show them
something that is difficult or imposible in most other languages. It’s
often enough to get them to overcome the initial gag reflex over the
quasi-Pascal keywords.

James

···

cheers,
Matt

… a look like javascript on steroids.

Casual PHP programmers and designer that are forced to write javascript
would feel at home. This is of course not the sort of elite programmers
that follows this group normally (having learned lisp, haskell, ocaml,
having read/written books about patterns etc.).

A lot of people don’t trust python because of indentation (at least i
do) and moreover don’t trust a language where newline separates
statements. They want a language where program logic survives
reformatting in a wordprocessor.

···


Fritz Heinrichmeyer FernUniversitaet, LG ES, 58084 Hagen (Germany)
tel:+49 2331/987-1166 fax:987-355

Saluton!

  • Jeff Mitchell; 2003-07-30, 13:49 UTC:

Brackets.

If that is true why isn’t LISP the most popular language on this
planet?

Gis,

Josef ‘Jupp’ Schugt

···


N’attribuez jamais à la malice ce que l’incompétence explique !
– Napoléon

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.

Okay, I will.

Exhibit A.

Ruby as it exists presently.

“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.”

“If you find this hard to read, maybe you should use a higher
indentation level”

Exhibit B.

“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.”

“Wow, this language’s syntax is incredibly brain-damaged!”

Seriously, the brackets do make it a little easier to read. But, what if
you had formatted it like so:

class IO
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?
    result = nil
    break
  end

  c = getc.chr
  buf << c

  if $expect_verbose
    STDOUT.print c
    STDOUT.flush
  end

  if mat=e_pat.match(buf)
    result = [buf,*mat.to_a[1..-1]]
    break
  end
end

if iterator?
  yield result
else
  return result
end

nil

end
end

Or what if you used a higher level of indentation?

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

Both options, are, I think, better than adding “brackets”. And both can
be done without hacking the interpreter.

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.

I disagree. (The part about it being true, not the part about it being
absurd. :slight_smile: )

Jason Creighton

···

On 29 Jul 2003 10:22:38 -0700 quixoticsycophant@yahoo.com (Jeff Mitchell) wrote:

My take is: {} are for functional blocks; do…end for procedural blocks.
That shows me which expressions are important for their results, and which
are not.

Gavin

···

On Tue, 2003-07-29 at 22:30, Robert Klemme wrote:

My solution is to use {} for one line blocks and do…end for more
complicated things.

I tried this style for a while. But then every time I added lines to a
one-line block, I had to change {} to do/end.

Today I normally used {} on all blocks, except in Rake files.

Maybe it would be more popular with Perl programmers, but you wouldn’t have
any Ruby programmers left.

Sorry, but this is one of the great things about Ruby: no semicolons! If you
put your code through a wordprocessor, you deserve everything you get…

Regards,

Brian.

···

On Wed, Jul 30, 2003 at 03:26:12PM +0900, Fritz Heinrichmeyer wrote:

… a look like javascript on steroids.

Casual PHP programmers and designer that are forced to write javascript
would feel at home. This is of course not the sort of elite programmers
that follows this group normally (having learned lisp, haskell, ocaml,
having read/written books about patterns etc.).

A lot of people don’t trust python because of indentation (at least i
do) and moreover don’t trust a language where newline separates
statements. They want a language where program logic survives
reformatting in a wordprocessor.

Hi,

Javascript’s semicolon is also optional. Javascript is one of my
favorate language because of it’s object creation mechanism.
Unfortunately the language itself is too much limited.

I have used PHP… it is Sh*t… mainly because of the “;”. A lot of
runtime errors because I am used to ruby. And it is not like Delphi,
which has lightening fast compilation, php’s debug cycle is terrible.

Shannon

···

On Wed, 30 Jul 2003 15:26:12 +0900 Fritz Heinrichmeyer fritz.heinrichmeyer@fernuni-hagen.de wrote:

… a look like javascript on steroids.

Casual PHP programmers and designer that are forced to write javascript
would feel at home. This is of course not the sort of elite programmers
that follows this group normally (having learned lisp, haskell, ocaml,
having read/written books about patterns etc.).

A lot of people don’t trust python because of indentation (at least i
do) and moreover don’t trust a language where newline separates
statements. They want a language where program logic survives
reformatting in a wordprocessor.


Fritz Heinrichmeyer FernUniversitaet, LG ES, 58084 Hagen (Germany)
tel:+49 2331/987-1166 fax:987-355


Xiangrong Fang xrfang@hotmail.com

On the other hand, you really need to write every possible block on the
{…} form to get high enough bracket-ratio to get into their geeky
little heads.

Or to have bracket-aware editors be able to fold, bracket-match, etc.

Personally, I shunned the do…end for quite some time when I started
playing with Ruby. Count me up as anecdotal evidence for your claim. :slight_smile:

I still do, and not for philosophical reasons.

The one nice thing about brackets is that editors know how
to match them up. Ie, I can select a section of code by
just double-clicking on the initial or ending bracket.

Other than that, I don’t see much point in pushing for more
brackets. If people can’t figure out ‘do…end’ and must
have brackets to like ruby, then they will also complain
about every single thing where ruby differs from whatever
language they prefer…

Just MO.

···

At 12:29 PM +0900 7/30/03, Aredridel wrote:

Exhibit A.

Ruby as it exists presently.

Nice, clean, reads like english. Flexible indentation, but
language constructs keep it fairly obvious how to indent.


Garance Alistair Drosehn = gad@gilead.netel.rpi.edu
Senior Systems Programmer or gad@freebsd.org
Rensselaer Polytechnic Institute or drosih@rpi.edu

Josef ‘Jupp’ Schugt wrote:

Saluton!

  • Jeff Mitchell; 2003-07-30, 13:49 UTC:

Brackets.

If that is true why isn’t LISP the most popular language on this
planet?

Becauae of the obvious criitcal differences between ( ) and { }.

:slight_smile:

James

···

Gis,

Josef ‘Jupp’ Schugt

Sorry, but this is one of the great things about Ruby: no semicolons! If you

Ruby does have semicolons, but they are optional…

ruby -e “print 4;print 5”

Moustaches and goatees.

Brackets of the mouth.

_why

I don’t like either of them. Because of the motto “Ruby makes
programming fun again”, we should opt for something like that instead:

class Example (-:

def initialize(*args) (-: @ary = args :-)

def sum(start = 0) (-:
    s = start
    each (-: |x| s += x :-)
    s
:-)

def sqare_sum(start = 0) (-:
    s = start
    each (-: |x| s += x ** 2 :-)
    s
:-)

def each(-: @ary.each (-: |x| yield x :-) :-)

:slight_smile:

···

On 2003-07-31 05:59:42 +0900, james_b wrote:

Becauae of the obvious criitcal differences between ( ) and { }.


You can create art and beauty on a computer.
– Steven Levy, Hackers: Heroes of the Computer Revolution

I have used PHP… it is Sh*t… mainly because of the “;”. A lot of

Have you used a PHP debugger? Or do you just click the refresh button in
Mozilla? You cant say a language is s**h just because you use ; . In PHP
the ; is very useful eg.

<?php $result=$db->getOne(); echo $value+$othervalue ?>

as opposed to

<?php $result=$db->getOne() echo $value+$othervalue ?>

“Nothing is more stubborn than a programmer defending a language” :wink: