Cedric and Bob are talking about the Continous Tax that you have to pay when you use dynamic languages.
Really? I have developed fairly large codebases in dynamic and static languages, and I never found this the case. In fact, if I had to make a gross generalization I would have to say:
- The dynamic language projects had less code, and it was easier for the team to maintain
- The dynamic language projects had small teams, so it was easier for us to maintain (we could do more with less)
- The Java projects were often over engineered (not a problem with Java per se, but epidemic to a large part of the community)
Of course, I have seen projects in both worlds that had to pay a lot of continuous tax. This was normally due to bad design, a poor choice of tools, a poor choice of developers, and a myriad of other reasons that had NOTHING to do with static vs. dynamic.
Quite frankly, at this stage of the game all I care about is having a small team of developers that I respect and enjoy working with.
October 10th, 2007 at 2:10 pm
I have spent many thousands of hours coding in Smalltalk and Java. Both have their strengths and weaknesses.
Java’s static typing system is only a strength in that it makes it easy to write certain kinds of tools. These tools only partially make up for the very type system they are enabled by. Type declarations make up for a lot of noise in Java code, and Java’s broken polymorphism is remedied by interfaces (which perhaps would be a nice language feature in better circumstances) which proliferate and cause cognitive overload because there are after a time too many pieces in the code to keep juggling in your mind.
Smalltalk’s dynamic typing makes writing clear and expressive code a simple matter. The importance of this cannot be overestimated. While there are a few refactorings that cannot be done in a dynamic language, there are refactoring tools for Smalltalk (and Groovy too I gather) and have been long before Java had them. Smalltalk cooperates so well with the mental processes of object oriented development that static type declarations only get in the your way.
My 20 cents