Late binding = dynamic typing.
Typing done at runtime. Repeatedly.
Dynamic typing is often confused with No Typing. Not the same.
Compiling is Production Engineering (which Kay mistakenly calls Software Engineering1).
Pour your Smarties out on the desk and sort them. Red ones over here, green ones over there, …
If you can sort programming constructs like Smarties, you can pre-compile some of them and avoid doing them repeatedly at runtime.
Design ≡ being able to change your mind rapidly ≡ dynamic typing.
If you can sort programming constructs like Smarties, you can catch stupid mistakes earlier.
If you rely on static typing only, you inhibit Design.
Static binding says that variable names are inconsequential.
In the extreme - all syntax is inconsequential.
Syntax is just a skin draped over loftier concepts like paradigms.
Engineering is more nuanced than just optimization. First, comes figuring what all of the details are, then, comes optimizing those details. Architects think about details, too, but, different details (like “how does this fit in the eco-system?” (sometimes AKA “UX”)). ↩