It's hard to explain to someone who hasn't experienced it how much easier it is to develop in a bug free code base.
It's hard to explain to someone who hasn't experienced it how much easier it is to develop in a bug free code base.
To paraphrase: We programmers need all the help we can get, and we should never assume otherwise. Careful design is great. Testing is great. Formal methods are great. Code reviews are great. Static analysis is great. But none of these things alone are sufficient to eliminate bugs: They will always be with us. A bug can exist for half a century despite our best efforts to exterminate it. We must program carefully, defensively, and remain ever vigilant.
It's a great philosophy or methodology, but it can be very hard to execute on 100%. In the real world there are deadlines and resource requirements and impatient clients and produce launch plans with set dates and trade shows starting next week and the Thanksgiving/Xmas launch opportunity and and and.
Better languages are possible. Provably correct software is possible. We really can eliminate bugs.
Ah cool, so you've solved the halting problem then?
It's like the difference between being able to express proofs in maths, versus having a method of deciding the validity of arbitrary propositions. We can certainly write programs that we can we can prove things about, but given an arbitrary program, we can't always tell whether it will do the right thing.
Even then, the software is provably correct according to some specification, which can still have bugs. No technology can fully prevent logic bugs.
At other places I've worked, I wouldn't raise an eyebrow if I found 3 bugs in a day, just trying to get other stuff done.