Posted this because it has an interesting view on static and dynamic type systems that I hadn't considered before.
"Dynamic and static type systems are two completely different things, whose goals happen to partially overlap. [... ] Great confusion results from trying to find a world view in which 'type' really means the same thing in both systems. It doesn't. [ ... ] Many programmers approach the question of whether they prefer static or dynamic types by comparing some languages they know that use both techniques. [ ... ] The problem, in this case, is that most programmers have limited experience, and haven't tried a lot of languages. For context, here, six or seven doesn't count as 'a lot.' On top of that, it requires more than a cursory glance to really see the benefit of these two very different styles of programming. Two interesting consequences of this are: 1) Many programmers have used very poor statically typed languages. 2) Many programmers have used dynamically typed languages very poorly."
"Dynamic and static type systems are two completely different things, whose goals happen to partially overlap. [... ] Great confusion results from trying to find a world view in which 'type' really means the same thing in both systems. It doesn't. [ ... ] Many programmers approach the question of whether they prefer static or dynamic types by comparing some languages they know that use both techniques. [ ... ] The problem, in this case, is that most programmers have limited experience, and haven't tried a lot of languages. For context, here, six or seven doesn't count as 'a lot.' On top of that, it requires more than a cursory glance to really see the benefit of these two very different styles of programming. Two interesting consequences of this are: 1) Many programmers have used very poor statically typed languages. 2) Many programmers have used dynamically typed languages very poorly."