I think I find the “type vs tag” distinction better than “strong / weak /static / dynamic,” but maybe I just want to be a cool kid :)
I really think static and dynamic is a great way of describing it, but I think that if you’re not exposed to static types you don’t reserve the option for them to exist. The whole “variable versus value” typing thing feels so terribly misleading.
Static / dynamic is certainly better than strong / weak, which is almost useless.
I really need to dig into TAPL more…
I think “weak” still has use in describing languages like C where undefined behaviour is permitted all over the place, and to a lesser extent to languages which try to proceed with nonsensical values after bad operations instead of cleanly aborting them with errors.
“Strong” vs “weak” shoulddn’t come up when we talk about, say, comparing Java to Python, since both are strong to about the same extent.
What makes this interesting? The answer is obviously yes, and the SO answer doesn’t seem to offer any great insight.
It’s only an interesting question because of the confused nature of definitions for strongly/weakly typed. Most of the arguments on the matter that I’ve seen are just people refusing to align definitions before debating this.
Invariably one hacker’s strong typing is another hacker’s weak typying. Look at them trying to argue how Perl types also don’t change, but are merely overloads.