I agree with everything you said.
Yes, two posters agree with each other. On Usenet. And it's not April
Regarding soft typing:
By "soft typing" I mean that type checking is performed as for static
typing, but without rejecting the program if type checking fails.
Instead, the compiler might emit a warning and insert a run-time check.
Thus, you get early error detection as for static checking, and full
flexibility as for dynamic checking.
For an example, see Soft Typing by Robert Cartwright and Mike Fagan,
available from http://www.yqcomputer.com/
Note that "soft typing" is different from "weak typing": weak typing, at
least according to the definition I know, is implicit type conversion.
Things like "foo: " + 12 in Java, where 12 is implicitly converted to a
Being able to override the type system, finally, is yet a different
thing. I'm not exactly sure what it actually means (if the language
allows you to do it, it is _part_ of the type system, right?), but I
assume you mean things like casts in C. Casts in C aren't weak typing;
they're simply a way to lie to the type checker. This makes C
type-unsafe, but, alas, is the work-around for the otherwise overly
restrictive type checker.
``I see'' said the blind man, as he picked up the hammer and saw.