Static typing is not a single issue. It is several.
From a high-level-language standpoint, static typing is a crutch. It isn't necessary, but it forces you to do things "the right way"... according to some definitions of the right way. It is possible to make mistakes without static typing that you would not make with it... but if you're careful you can also do some good things without it that you can't do with it. It all depends on whether you feel more comfortable with taking control or you feel the need for some restrictions to keep you "in line".
From a purely performance standpoint, there is no question: static typing compiles/interprets to faster code.
> From a high-level-language standpoint, static typing is a crutch
I see types as a high-level design tool. They allow me to reason about a domain, and figure out how to structure things at a high level before delving into the implementation. Yes, performance is a great side-benefit, but it is not always the driving factor.
From a high-level-language standpoint, static typing is a crutch. It isn't necessary, but it forces you to do things "the right way"... according to some definitions of the right way. It is possible to make mistakes without static typing that you would not make with it... but if you're careful you can also do some good things without it that you can't do with it. It all depends on whether you feel more comfortable with taking control or you feel the need for some restrictions to keep you "in line".
From a purely performance standpoint, there is no question: static typing compiles/interprets to faster code.