I’ve noticed that there’s a lot of confusion and ambiguity surrounding many commonly used terms for describing type systems. I’m not even close to being an authority on the subject, but I’ve come across some definitions that make sense to me. Static typing is when type checking is performed on the program’s source code. Types are associated to program elements (like variables and expressions). Typ