danite
Joined 7 years ago
Joined 7 years ago
Static type systems on the other hand, can give you much greater guarantees of correctness (if they're sound). Due to the Curry-Howard isomorphism we know that programs in sound static type systems are the same as mathematical proofs. That's a much stronger guarantee than what you're given by testing alone. The problem of missing a case in your testing goes away if you have a mathematical proof that that case cannot occur. You've taken away some of the burden of thoroughness from the programmer and given it to the compiler instead.
In a perfect programming utopia we would all encode the desired properties of our programs in static types and have no need for testing because we'd have proofs of correctness. The problem of course is that writing those kinds of proofs into types is very time consuming and tedious and isn't realistic for most software development. So we still need tests to cover what is too expensive or complicated to type.
Call it hyperbole if you want, but it's the reality we're living in.
If you want to be even more daring and spend a little bit of public money, you could have a publicly financed streaming service with most major public domain works. You could make it available through the Library of Congress.
Edit: Also the continued existence of null in new programming languages is a baffling choice to me.
TLDR; linked lists' theoretical performance advantages are often negated by years of hardware optimization for dealing with arrays.