| ▲ | travisgriggs 8 hours ago | ||||||||||||||||
“Every institution perishes by an excess of its own first principle.” - Lord Acton For the reasons explored in the post, I prefer my type systems optional. It has been my experience and observation that typing in languages follow an 90:10 rule. You get 90% of the gains for 10% of the effort. And the remaining 10% for 9x the effort. I’m rather happy with the way Python allows me to do the easy ones and/or pick the hotspots. I’ve worked in exhaustively typed languages, and while it gives a sense of safety, it’s literally exhausting. And, anecdotally, I feel I dealt with more zero divides, subscript woops, and other runtime validation errors than I had in less typed languages. Not that it matters. Soon, we’ll use semantically vague human language, to prompt, cajole, nudge LLM agents to produce programs that are (lossy) statistical approximations of what might be correct programs. | |||||||||||||||||
| ▲ | kace91 8 hours ago | parent | next [-] | ||||||||||||||||
Every time I've interacted with optional type systems, it feels like I'm driving in a road where only 50% of the drivers follow the rules. Meaning, it's just as hard as no one following rules, but on top of that I get blindsided by expectations of security. | |||||||||||||||||
| ▲ | HauntingPin 8 hours ago | parent | prev | next [-] | ||||||||||||||||
I've worked with both Java and Python extensively. Python's type system is far more exhausting, tbh. You have to think about types in both languages, but at least in Java, the compiler and static analysis can tell you if there are type-related issues. In Python, runtime errors. Anything larger in Python becomes a nightmare to work with because you basically never know for sure what's being passed into a function without excessive type checking and testing. | |||||||||||||||||
| |||||||||||||||||
| ▲ | waterTanuki 4 hours ago | parent | prev | next [-] | ||||||||||||||||
Not to sound harsh, but it sounds like you're greenfielding most projects and don't have to worry about collaborating with a large dev team or onboarding new developers which is a luxurious position to have. It's been the exact inverse for me where getting up to speed or maintaining a python codebase is exhausing and maintaining rust/go/typescript projects has been much less of a burden. Any time I've worked on a python codebase with 3 or more people on a reasonably sized project, it turns into a mess than becomes much more of a cognitive load than any compiled language. Here are my experiences: - numerous lsp errors and warnings that drown out real bugs and issues (no one is null checking in python, or correctly typing their functions beyond the primitive types) - hodgepodge of tools like conda, python version <= 3.5, etc. required for project (because one person refuses to migrate to uv) We've seen the exact opposite trend of what you've said. Typescript has surged in popularity because the quality of LLM output scales with context, and untyped languages like python/JS leave most of that context out that no machine can parse. These tools do not reason. They are token generators. Pure functions. Some outputs have more weight than others. | |||||||||||||||||
| ▲ | mpalmer 7 hours ago | parent | prev | next [-] | ||||||||||||||||
I think it's only fair to ask how you would apply that quote to your own preferred conventions. | |||||||||||||||||
| ▲ | mpalmer 7 hours ago | parent | prev [-] | ||||||||||||||||
That seems vanishingly unlikely next to the potential of using strongly typed, verifiable-at-compile-time languages.If humans move further and further away from actual code, what do they care what language the product is made in? | |||||||||||||||||