Wes Dyer on Type Systems

Awesome post by Wes Dyer about Type
Systems
:

Types
Of Confusion

He tackles a lot of misconceptions and myths about Typing.

To frame his points, he starts with some fantastic definitions.  I am all for
clarifying vocabulary and I really like this:

Based on the apparent confusion, I think it is best to clarify what I mean by each
of the following terms:

    Type Checking - Verifying that code respects type constraints.

    Statically Typed - Type checking occurs at compile time.

    Dynamically Typed - Type checking occurs at run time.

    Type Safe Language - A language which protects its own abstractions.

    Type Unsafe Language - A language which is not type safe.

    Strongly Typed and Weakly Typed - Depends on the author; The definitions
    are so many and so varied that the terms are practically useless. It seems that anyone
    can claim that language X is either strongly typed or weakly typed based on sound
    reasoning derived from one of the various definitions.

    Dynamic Language - A language which enables runtime inspection or
    modification of a program; most languages can do this but dynamic languages make it
    easy. It is common for people to refer to "dynamic languages" and mean "dynamically
    typed languages" as the term is defined here.

good read.