I would prefer to use statically typed language when I develop embedded software.
Memory efficiency is very important in embedded programming. In my opinion, if you depend on dynamic casting, memory leak might occur and more bugs can appear compared to using statically typed language.
Enjoy the best of both worlds :)
A statically typed language that (for the most part) feels like a dynamically typed one: like C# or Haskell.
As an extremely lazy human being, i like dynamically typed languages.
It should be the job of the compiler/interpreter to assign types, imho.
Mark
If the project is small enough to be familiar with all the code (e.g. most scripts and many small websites) and/or if for prototyping or short time use, then dynamic typing offers a bit of a speed advantage.
But for large projects (long time and/or many people), when it gets too difficult to know all the code, I really like static type systems. It rules out a lot of bugs completely (so you don't have to check when reading someone else's code), and they provide great documentation that can't go out of date (also great when reading other people's code).
It works much better if you actually create many types for names, prices, unsafe strings, etc. If you mostly use primitives and enormous classes you don't get much of the benefit. Of course it helps to have things operator overloading and sum types for this.
EDIT: I'm sad to see dynamic typing winning. I would've been in that group a few years ago. I think, given time, some of you will come around if you give it a chance. ;-) When percentage bugfixing time goes up and percentage code that's yours goes down...