3 ms·
I don’t disagree with you about maintaining large unwieldy code bases being perhaps better in static type land. Large unwieldy code bases have already ossified
by wellpast 7y ago
I don’t disagree with you about maintaining large unwieldy code bases being perhaps better in static type land.
Large unwieldy code bases have already ossified anyway so the productivity gain of dynamism is lost and you’re simply swimming in complexity.
But my argument is that what got you the large unwieldy code base is a lack of skill set that no type system could protect you from.
With the right toolkit (which includes nominal static typing among many other tools) and expertise you are not being optimal by giving highest precedent to formal machine proof systems which is what strong static typing does.
- zozbot234 7y agoProperly used, static typing actually enhances modularity and reduces unwanted coupling among software components. This means that a larger code base is far less likely to become practically "unwieldly" if static types have been consistently used in development. Even in exploratory programming where dynamic types may actually have some limited value, using them effectively requires a lot more "skill".
- wellpast 7y agoThought experiment, in your mind what would better produce modularity — TDD or static type verification? If you had to pick one.
- tome 7y agoAnecdata: in Python I used to (and still do to some extent) practice TDD very conscientiously because I felt it really helped me structure my programs well and get them "correct my construction". One of the reasons for moving to Haskell was that the type system has the same effect at a lower cost (once the barrier to entry of learning about the type system has been crossed).