> The problems I have had are: as I make changes, I often > don't realize that I have made some trivial error until 5 > minutes into the test, when that code is first hit. This > is slow. Most of the time these are things that would > have been immediately flagged in a static language.
Most probably it would not happen, and the reason is simple: in this day and age where most computer languages involve subtyping (i.e. inheritance from you OO folks), trivial errors can easily pass through through the subtyping mechanism. A static type system is almost useless in this case.
Programming usually goes down two routes:
1) the problem at hand is trivial. In this case, a static type system won't help because the problem is trivial.
2) the problem at hand is quite complex. In this case, a static type won't help as well, because the code will usually involve lots of subclasses and interfaces.