@jeff @lupyuen what works for one need not work for many and you should never rely on the less probable case (i.e. the programmer being disciplined or aware of every pitfall).
I would say it's better to have reasonable constraints in the language design that guarantee safety rather than freedom in everything with a higher chance to mess up.
I think, you should use the right tool for the task. Given that #Rust and #Ada show that you can develop bare-metal code without the risk that you or anyone else involved in the project shoots them-self in the foot at every corner, I wonder why the answer to all programming questions should be always the same.
@jeff @lupyuen
That might be true, but there seems to be surprisingly large number of software and libraries where this discipline has not been applied.
In a team you also face the additional challenge that you need to hold up the standards consistently even if there is fluctuation in the team.
On tow of that software also needs to be maintained which often is done by different people than the original development team. A lot of challenges.