We may not agree with what Larry has to say about Ruby, but as usual he
says it well.
The relevant part:
"As for specifics, I must say that the example of Ruby is the main reason
I decided against implicit lexical scoping for Perl 6. We’ll be sticking
with explicit my declarations. But I have to like the majority of Ruby
simply because that’s the part that was borrowed straight out of Perl.
I also liked Ruby’s unary splat operator, so I borrowed it for Perl 6.
The main problem I see with Ruby is that the Principle of Least Surprise
can lead you astray, as it did with implicit lexical scoping. The question
is, whose surprise are you pessimizing? Experts are surprised by different
things than beginners. People who are trying to grow small programs into
large programs are surprised by different things than people who design
their programs large to begin with.
For instance, I think it’s a violation of the Beginner’s Principle of
Least Surprise to make everything an object. To a beginner, a number is
just a number. A string is a string. They may well be objects as far as
the computer is concerned, and it’s even fine for experts to treat them as
objects. But premature OO is a speed bump in the novice’s onramp. "
Personally, I like Ruby’s scoping rules a lot better than Perl’s.
Also, I think that everyting being an object is actually helpful for
beginners - It’s much easier to pick up OO programming ideas if you learn
them first, I think. It also tends to make things much more consistent.