Static vs Dynamic typing is a great source of controversy. Like many of the other great debates (e.g. where to put the curly braces) there is not a lot of factual support for either side. One notable exception is Lutz Prechelts paper "An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl".
The abstract reads:
Anyway, here is my opinion in a nutshell. Dynamically typed languages do lead to shorter programs. For example, where a Java programmer would typically write something like:
ExpandedChoicePolicyOption expandedChoicePolicyOption = new ExpandedChoicePolicyOption();
a Python programmer would accomplish the same thing with:
policyOption = ExpandedChoicePolicyOption()
assuming, of course, that they could be persuaded to write insurance applications. (The variable name in Python snippet is shorter on purpose - that's one noticeable differences between typical Java programs and typical Python programs.)
This leads me to the following logic:
Dont ask me to back this up with fact. All I have is personal anecdote and conjecture. On the other hand, Lutz Prechelt does have some solid fact to contribute.