Comment by MeetingsBrowser

3 months ago

> teams can always add runtime checks like pydantic to ensure your types match reality.

That's the problem with bugs though, there's always something that could have been done to avoid it =)

Pydantic works great in specific places, like validating user supplied data, but runtime checks as a replacement for static type checkers are not really feasible.

Every caller would need to check that the function is being called correctly (number and position of args, kwarg names, etc) and every callee would need to manually validate that each arg passed matches some expected type.

Pydantic also takes CPU time and doesn't do anything till runtime.

Type checking is real time in the IDE and lets you fix stuff before you waste fifteen minutes actually running it.

To be clear, I myself prefer sound type systems.

But the reality is that teams have started with untyped Python, Ruby, and Javascript, have been productive, and now need to gradually add static types to remain productive.

> Every caller would need to check that the function...

The nice part here is where the gradual part comes in. As you are able to type more of your code, you're able to move where you add your runtime validation, and eventually you'll be able to move all validation to the edges of your system.