Verifying that your different pieces of code actually work together. With a static type system and similar compiler features you can lighten the mental load a lot compared to languages like Python where you need to keep it all in your head.
The problem with optional typing is that it has all the downsides of both but gives you very little of the advantages of a strong static type system, e.g. being able to rely on types catching certain kinds of errors when refactoring because you don’t know for sure that all APIs have types. It is really nothing more than an admission by dynamically typed languages that static types are so useful you can’t really do without them while at the same time not admitting that it might be best to move to a language and library ecosystem that was designed with static types from the start.
“Hardware cycles are cheap. Wetware cycles are expensive.”
Then why do Python people insist on having the programmer do so much stuff instead of letting a compiler do it?
Examples?
Verifying that your different pieces of code actually work together. With a static type system and similar compiler features you can lighten the mental load a lot compared to languages like Python where you need to keep it all in your head.
Python has (optional) types now.
The problem with optional typing is that it has all the downsides of both but gives you very little of the advantages of a strong static type system, e.g. being able to rely on types catching certain kinds of errors when refactoring because you don’t know for sure that all APIs have types. It is really nothing more than an admission by dynamically typed languages that static types are so useful you can’t really do without them while at the same time not admitting that it might be best to move to a language and library ecosystem that was designed with static types from the start.
Such as?