end
block
bug
ruby
eiffel
perl
matz
Reserved word to which ((block|Block)) structure is finished.
According to a certain statistics, 33% of the person,
who saw ((Ruby)) first sees this, associates Pascal. (...trust it?)
However, this form which does not pair with '((|begin|))' is
actually the neighbor of Ada or ((Eiffel)) rather than Pascal.
((Ruby)) do not to have offered to {}
which had been accustomed and familiar with C and ((Perl)).
It is from the following reasons:
* Evasion of ambiguous simple / complex sentence problem
For instance, in C, when you try to add a sentence on
if (a==b)
c();
and do as follows
if (a==b)
c();
d();
leads a confusing ((bug|Bug)).
This problem exists also in Pascal.
* Evasion of dangling 'else' problem
It is similar to the situation above-mentioned. If you write
if (a==b)
if (c==d) foo();
else bar();
it becomes annoying.
To tell the truth, what you really meant is:
if (a==b) {
if (c==d) foo();
else bar();
}
* Improvement of readability
There is a person who thinks that
closing the ((block|Block)) in the word named 'end' is
legible to program, though it is a debatable opinion.
* Problems in sentence structure of '((|begin|))' and '((|case|))'
Frankly speaking, ((matz)) have tried to use
the ((variable|Variable)) 'end' several time
only to have had a terrible time.
Then, he examined to change to the grammar with {} for a time,
but every time he abandoned it for the part of grammar
of '((|begin|))' and '((|case|))' with no beauty.
To tell the truth, this might be the first reason.