> Sure, you can reuse a variable for very different purposes but is that > really such an advantage? You don't do this. Heck, you shouldn't even reuse a variable for the same purpose. Reusing variables tends to imply that you don't really know what their purpose was in the first place. The advantage of dynamic typing comes in working with the hairier design patterns. It's a reduction ad extremum of a way of constraining object behaviour - the typical members of the "expliticly" typed language group use type / class hierarchies for this, and check against those. The group of dynamically typed languages doesn't make assumptions based on the elements that make up an object's behaviour belonging together - an object is of the correct type for a given message send if it responds to said one message, nothing more, nothing less. For (a very contrived) example any object that just so happens to properly respond to the messages for arithmethical operations can be substituted for an "integer" you only ever do arithmetics with without the language runtime batting an eyelash. In dynamically typed languages, the type of an object isn't its "class" or any other predictable concept, it's just the protocol it adheres to during its lifetime. Most such languages also make no presumption that this protocol, or the behaviour of an object remains the same during its lifetime - which makes compile-time checks rather pointless. Of course, you rarely use even this aspect of dynamic typing - in fact, I can't come up with a single noncontrived example for it, these things just don't occur in daily coding. But dynamic languages sure a heck faster to type, and the fact the compiler rarely bitches at all is very, very appealing to people that know what they're doing most of the time. David Vallner