You can't just push the problem into lack of discipline. People make mistakes, if you stubbornly ignore that fact, you'll get defective products.
That's why static analysis is so useful. But there are many other factors to consider -- and sometimes dynamic languages are the better choice.
You have to balance a lot of factors when solving problems. Human fallibility is just one factor in the problem, but it is one among MANY.
You can't just push the problem into lack of discipline. People make mistakes, if you stubbornly ignore that fact, you'll get defective products.