http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222&mode=thread&tid=145 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. Thoughts? Phil