I don't think it matters much. In dynamically typed languages, the types will be checked at runtime. In static languages the types will be checked at compiletime. The cost of checking at compile time is that you have to type the types explicitely. The benefit is that you don't have to run your code to check types. I don't think this is a real benefit, because you'll run all code anyway to test for other errors.