The lack of static typing in Ruby tends to make some C++/Java people kind of crazy, so I just had to repost this gem from Rob Rypka on the ruby-lang mailing list:
It seems to me that typed variables and compilers give programmers a false
sense of security about their code. Once you get the darn thing to compile,
you feel like you've accomplished something, where all you've really done is
satisfy the compiler - the semantics of what you've actually done are a
whole 'nother can of worms (type conversion usually has a part in this).
Once you start coding in Ruby, you'll find it's pretty easy to catch those
spelling/type mismatching mistakes. If you add a string and an integer, you
get an error (unlike JavaScript, where "2" + 2 = "22"), so you still have to
explicitly convert data (using #to_s) if the behavior is undefined (you
could also define the behavior if you like). You skip the entire compilation
step, so you are evaluating both proper syntax and semantics at the same
time.
Bottom line: Not having typed variables or static checking really isn't that
bad, and the dynamic nature of Ruby is really that good.