Once you go down the spectrum then you have to start relying on tests, which end up indirectly validating the same things as the type system anyway, at which point you are no further ahead than having used a dynamically-typed language.
Partial statically-typed languages like Rust are pretty cool for things like highlighting basic mistakes in your editor as you type, automatic refactoring, etc. That is all very useful for humans writing code, even if a bit redundant on some technical level. But if an LLM is doing the work, none of that matters.
In 2012, I felt the high of Scala programs working perfectly once it compiles. Now my TS code is almost there, and Django is somewhat behind.
empthought•15h ago
tekacs•15h ago
Hopefully https://github.com/astral-sh/ty will make the Python typing situation better, but absent that, Python typing is... not great. Honestly even with that it feels subjectively very finicky.
westurner•14h ago
"Support runtime checking" : https://github.com/astral-sh/ty/issues/867 :
> [ typeguard, beartype, trycast; mypyc ]
mypyc/mypyc: Compile type annotated Python to fast C extensions https://github.com/mypyc/mypyc src: https://github.com/python/mypy/tree/master/mypyc .. docs: https://mypyc.readthedocs.io/en/latest/ :
mypyc docs > Using type annotations > Strict runtime type checking: https://mypyc.readthedocs.io/en/latest/using_type_annotation... :
> Mypyc ensures type safety both statically and at runtime. [...] `Any` types and erased types in general can compromise type safety, and this is by design. Inserting strict runtime type checks for all possible values would be too expensive and against the goal of high performance.
westurner•13h ago
beartype docs: https://beartype.readthedocs.io/en/latest/ :
> Welcome to the Bearpedia
trycast: https://github.com/davidfstr/trycast :