Лозунги об ограничении свободы выражения программерской мысли Виртовскими языками известны.

Три вида ошибок (по учеб. Кушниренко, изложение произв.):
1) времени компиляции = запись алгоритма на ЯП забракована
2) времени выполнения = аварийный останов исполнителя
3) логические = исполнитель работает по программе, но цель алгоритма не достигается

Перечислены по степени сложности обнаружения. Очевидно, что перевод ошибок в меньший по номеру класс повышает надёжность.

Конкретика (иллюстрирующая направление движения): функции "с результатом" и его указание (возврат). Ошибка: функция без результата --- в какой-то из веток возврат результата упустили.
(например) Си: логическая ошибкаОберон: ошибка времени выполнения (останов в конце тела функции)Оберон-07: синтаксическая ошибка. (RETURN в Оберон-07 просто слово в конце процедуры-функции в отличие от Оберон, где был оператором)
Свобода ограничена. Теперь просто так с 20-ю выходами функцию не склепать. Приходится подумать. Но и серьёзность ошибки "уменьшилась". Как минимум -- равноценный размен.

Попробую (критикуйте, то что выше - тоже) немного аналогии:
инструментарий требующий повышенной мысленной активности -> "закаляющий" мышлениене "сковывающий" инструментарий, позволяющий писать как вздумается и, возможно, предупреждающий (в 100% случаях предупреждения не спасут, т.к. думать пока дано и всё равно придётся только человеку) -> ...
Регулярные физ. упражнения и пр. требуют преодоление себя, ограничивают свободу времяпрепровождения -> закаляют здоровьеМедикаменты и в частн. антибиотики по каждому поводу позволят жить свободно и будут поддерживать "здоровье=не болезнь" (но организм привыкает) -> ...