As far as I know, Bruce Eckel is a competent programmer and when I saw
that he was agree with me, I surprised.

What do you think about those "end"s? Do you REALLY like them?
Will Ruby-2 offer an alternative? Well, maybe not “indentation” but
will another solution be available?

I’ve got to declare that I also like the idea of dropping the ends a la
Python, although if the effect of that is that your whitespace becomes
strict I’m not sure which way is better. I have looked at some of my and
other people’s Ruby code and often been tempted to select those last 5
‘ends’ and hit the delete button. : )

Yes I really like the end statements, and they make it easier for
beginners. It’s possible to support both indenting and end statements
(i.e. support one mode or the other), and you don’t need python’s
redundant and unnecessary colons. I implemented this myself in a
parser. I don’t think it is appropriate for ruby, however.

What would be even better would be to allow optional labels after end
statements, such as “end class”, “end def”, so the parser can catch
more errors.
I’ve implemented this as well in a separate project.

Or how 'bout “if - fi” and “until - done” and “for - done”…
nah. As much as the Bourne shell has a few constructs that
seem to meet your criteria, I don’t think it’s the answer.

I have to say, as much as I like the idea of significant
whitespace for certain things (preservation of vertical
space; force new programmers to indent), I just don’t think it’s
the right solution here, either.

Besides, Python has no solution for which scope is ended when
code is reverse indented. It’s clean, but not descriptive.

I agree that Ruby’s explicit "end"s make it nicer for use in
erb. And at least this way you can, for your posterity’s sake,
do:

stuff.each do |thing|
if thing.instance_of?(other_thing)
thing.action()
end # if
end # each stuff

I’m pretty much a newbie programmer so my opinion shouldn’t count much
but before I chose Ruby as the definite language I tried writing in as
many other languages as I could, including Python.

I understand the importance of indentation, but forcing it on me was
really painful. I honestly wanted to stab someone every time I got an
error (ruby give me an error too when I missed an end, but it’s somehow
different). There is something incredibly soothing about writing
freeform and freestyle code in Ruby which I don’t get in Python.

What I’m afraid of now is going to college next year and having to deal
with “stricter” languages.

What would be even better would be to allow optional labels after end
statements, such as “end class”, “end def”, so the parser can catch
more errors.
I’ve implemented this as well in a separate project.

Holy mother of god in the heavens, for the love of all that’s good and
sacred,
please NO! I’ve had more than enough XML and VHDL already,
thankyouverymuch.
Next thing you see we’re coding in palindromes to doublecheck we know
what
order we wrote the characters in…

I want to see a single half-serious programmer that actually makes
errors
because he can’t remember what scope he’s in. That’s what the
indentation
conventions are there anyway. If you keep your code well-structured,
It’s
impossible to have that cause a show-stopping bug that can survive five
minutes in the codebase.

That said, I prefer indentation as a convention, not as syntax. I made
certain
sporadic forays into Python; but I like how Ruby tries to resemble
natural
language with the likes of statement modifiers, and do/begin and end for
code
blocks. It feels more natural to me to type “end” to end a code block,
and I
usually associate the backspace key probably the most commonly used in
editors to unindent code manually with correcting typos - ergo not a
natural
component in the flow of typing.

What would be even better would be to allow optional labels after end
statements, such as “end class”, “end def”, so the parser can catch
more errors.
That sound like a good idea. But what about “if”, “when”, “for”,
“until” etc?
Hmm…
“endif”, “end when”, “end for”, “end until”, “end class”, “enddef”,…
Umh! A never “ended” nightmare.

I’m not particularly fond of IF … ENDIF constructs, but one can
simulate this:

def foo
…
end # def foo

I don’t do it, though. Vim does a damn fine job of folding things for
me.

Not a bad idea in itself. In fact, I think that really old Ruby
versions (prior to my learning it with 1.4) did something like
that. When modifiers were introduced (x if y, x while y, etc.)
parsing became difficult and they were dropped. I think that’s
the case.

…
I understand the importance of indentation, but forcing it on me was
really painful. I honestly wanted to stab someone every time I got an
error (ruby give me an error too when I missed an end, but it’s somehow
different). There is something incredibly soothing about writing
freeform and freestyle code in Ruby which I don’t get in Python.

Same here. My editor fills in the ‘end’ stuff for me, so there is no
extra typing. But I have the freedom to adjust the layout to highlight
sections of code to better express intent.

What I’m afraid of now is going to college next year and having to deal
with “stricter” languages.

Well, that sinks it: Skip college. Code Ruby.

Actually, experience with a variety of languages is usually a Good
Thing, at least to give some perspective.