A recent article asked the question whether dynamic languages can scale or not. I think the question can’t be answered that easily. Just because a project that used Python failed, doesn’t prove that dynamic languages can’t scale. There are just too many reasons for project failure. And I think Smalltalk proved that there can be big commercial projects that build on dynamic languages. The best thing of course is to reduce or even avoid the need of scaling, by careful architecturing and refactoring and by using the right tool. And IMHO lines of code isn’t a very good measurement for scaling.
I don’t think static typing is the silver bullet. It’s still far too limited, at least when using it in an imperative language.
One sentence in the above mentioned article made me feel somewhat sick:
“Languages like Ruby and Scala introduce new programming constructs and paradigms that are beyond the cognitive abilities of the average programmer”
At first I think, Java is far beyond the cognitive abilities of the average programmer. The whole environment a Java programmer usually has to use is incredible complex (build systems Maven, Ant, web frameworks, OO mapper) counting probably many millions lines of code.
The cited sentence also means that we need stupid programmers that don’t extend their knowledge. I couldn’t live in a setting like that. I expect from people and especially from programmers to be flexible, to be able to learn new languages. It’s the only way to prove that they have really understood the ideas behind the language and not just it’s syntax and how to apply syntax to specific problems. If they aren’t flexible enough, they will soon be replaced by machines. It’s that simple. So instead of accepting that programmers are limited, challenge them and give them a possibility to enhance their knowledge. But never accept sentences like the one above.