And a lot more bug prone. I’m just explaining the OP because people didn’t get it. I’m not saying dynamic languages are bad. I’m saying they have different trade-offs.
I have a feeling you are misunderstanding what is meant by “theorems for free” here. For example, one theorem that is proven by all safe Rust programs is that they don’t have data races. That should always be a requirement for functional software. This is a more pragmatic type of automatic theorem proving that doesn’t require a direct proof from the code author. The compiler does the proof for you. Otherwise the theorem would not be “free” as stated in OP.
Yes, that’s why we use typing, to get better working code more easily. That’s why I use type annotation and enforced checkers in Python. It makes it so much easier and quicker to create good systems of any significance.
Turns out getting working code is a lot cheaper and more useful than formally proven code.
And a lot more bug prone. I’m just explaining the OP because people didn’t get it. I’m not saying dynamic languages are bad. I’m saying they have different trade-offs.
The problem with formal proofs for code is that it assumes the spec/requirements are complete and bug-free.
I find most bugs come from missed or misinterpreted requirements.
I have a feeling you are misunderstanding what is meant by “theorems for free” here. For example, one theorem that is proven by all safe Rust programs is that they don’t have data races. That should always be a requirement for functional software. This is a more pragmatic type of automatic theorem proving that doesn’t require a direct proof from the code author. The compiler does the proof for you. Otherwise the theorem would not be “free” as stated in OP.
And maintainable code is even cheaper and more useful than that in the long run.
Ah, the long run. I keep trying to explain this concept to management, but without success.
The technical debt is strong in this one
You call it tech debt, I call it last quarter’s profits.
Cheaper? Yes, I guess so, depending on how you measure cost. More useful? Absolutely disagree.
Industry will pick functionality over verification every time.
Industry will leak PII without consequence every week.
Yes, that’s why we use typing, to get better working code more easily. That’s why I use type annotation and enforced checkers in Python. It makes it so much easier and quicker to create good systems of any significance.
That depends on your definition of “working”.