One of the historical guidelines in C was "trust the programmer". This would be fine were it not for the fact that programmers, like all humans, are frail and fallible beings. Experience shows that whatever techniques are used it is hard to write "correct" software. It is good advice therefore to use tools that can help by finding bugs and preventing bugs. Ada was specifically designed to help in this respect."
https://www.adacore.com/adaanswers/gems/gem-30/
(And if even Ada is not restrictive enough, one uses Ada's subset Spark, e.g., http://www.spark-2014.org/ )
Not to say that one should use Ada (though it would often help I guess), but this different approach to software design and maintenance ("Ada culture"[1]) is worth knowing.
[1] http://archive.adaic.com/intro/ada-vs-c/ada-vs-c.html
My personal rule of thumb:
C and Scheme for explorative hacking, Ada and Haskell for reliable implementation, Perl for teh recreational lulz.