This is exactly what is required if you believe in software for writing software and static typing - software software errors - due to complexity (for sure), development overhead (maybe) and efficiency (maybe, but debatable) is the basic premise of languages like C # and java.
This, however, is not a battle that has been fully won.
EDIT (requested explication):
Complexity.
Using C # or java, you get a lot of code for configuration, type declaration, casting, type checking and validation. You write some of them yourself, some IDEs write for you. But the developer is responsible for all this. The main advantages for the IDE / compiler are an indication of possible software errors and autocomplete. I can safely say, without accepting either side, that there is an industry discussion about whether volume is in the lines of code. This is at least a clear violation of YAGNI. In VS, I usually come across whole code files written by the IDE that have errors that I ultimately need to find out. I do not like to compute code that I did not write.
Development overhead.
The same as above. And Java is well known for all the XML configuration files that you need to write and maintain so that the application matches each other. RoR's biggest attraction is “convention configuration,” just to avoid it.
Efficiency.
The assertion that interpreted or JIT-compiled languages are terribly inefficient compared to compiled languages has long been taken for granted. For many reasons than I have time for this, this assumption is being called into question; for example, some newer, faster javascript engines.
The obvious things to search on this site and google for are late binding, dynamic typing, and JIT compiler.
source share