Daily Thought - 2024-07-17
< back to listYesterday, I declared "strong, dynamic typing" to be an intermediate goal for Caterpillar. I know this is going to confuse some people, so let's clear up a mistake I see sometimes: "Strong typing" is not the same as "static typing".
Static (vs dynamic) typing means, that types are known at compile-time. I don't know of such a concise definition for strong and weak typing, but strong basically means there are clear distinctions between types, while weak means there are shenanigans like unchecked or implicit conversions between types. All four combinations between static/dynamic and strong/weak can exist.
Rust is static and strong. JavaScript is dynamic and weak, due to its many weird and implicit rules. Many scripting languages are dynamic, but strong. I'm told Python is an example of that. C is static, but weak. Types are known at compile-time, but you can always just cast one type to another, without restriction. To C, it's all just bits.