> Me too. But usually (for me) those are algorithmic and > wouldn't have been caught by static typing.
It's not that I don't get those too but some things would be caught, like the field vs. *field thing above. I also find that I use standard types in Python for things I would use custom types for in, say Java. This is good in one way as I am freed from creating those types but when I am trying to figure out why my code isn't working, I miss having that information.
> One thing that occured to me is that I don't always take > the most "testable" approach. I could refactor me code so > that it is more resumeable. If I memoized certain results > to disk so they could be reloaded instead of computed, or > took a more granular staged approach to the computation, > it would be better. But then I'm dealing with tangential > issues when I want to be developing an algorithm.
Well this is one of those things that is ignored when people claim that dynamic languages are faster to develop in. The testing burden is a bit higher (even if people don't want to admit it) and the documentation burden is much greater. Once you take these things into account, I'm not sure that it's true that it's much faster. If you don't do these, then it seems like you are really speeding along but in the long term you pay for it. For things that are small enough to fit in ones brain all at once, I think the benefits of a dynamic language like Python far outweigh the costs.