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

I think this whole Least Surprise Principle is a load of bullshit that 
is invoked far too often for no good reason. It has a fancy name, but I 
translate it to myself as "when matz made Ruby he made sure the way it 
worked made sense to him". Excuse me, isn't it how all languages are(or 
should be) made?

When you are a complete novice to computers, nothing in Ruby (or in any
other language) will be familiar to you and you will be 'surprised' by
everything. You just go ahead and learn how Ruby (or any other language) 
works and you live with it and let Ruby be Ruby. Then you gradually 
train your intuition to Ruby and everything is dandy.

When you learn Ruby after having a lot of experience with languages such 
as C++/Java everything makes sense, and the Principle seemingly works.
If you only programmed in Fortran before (which is the case with a lot
of old-school physicists for example) then you will probably be even
more surprised than if you were a novice...

So face it, Ruby is just the language with its own structure, logic, 
syntax and attitude. You just learn it, like every other language. It
is a good language simply because it was written by a good programmer; 
and the story about the Principle of the Least Surprise is a good 
anecdote for language historians but has nothing to do with any serious 
discussion on advantages and disadvantages of Ruby.