Нужны ли комментарии в исходных текстах программ?

Комментарии хороши, если они описывают usage этого кода. Что нужно сделать чтобы корректно вызвать этот код, и в принципе - как корректно использовать этот фнкционал. Нужно вызывать так-то и так-то.

В одной корпорации у программистов есть обязанность(!) писать комментарии на свой код. А к обязанностям программистов, да и не только их а вообще офисных работников, нельзя относится как к чему-то незыблемому и само собой разумеющемуся.

В другой корпорации может быть обязанностью писать на свой код unit-тесты, но это совсем не означает, что подобные тесты пишутся всегда и везде. Кто-то может забыть и не написать, а скорее всего не изменить, написанные кем-то ранее, комментарии на измененный код и проверить актуальность комментария написанному коду довольно сложно - нужно "перебирать" работающий код и "вручную" выяснять - соответствуют комментарии коду или нет.

Какая-либо автоматизация этой проверки невозможна.

В свою очередь, если на нормально написанный, код написаны unit-тесты (назовём их "правильными" комментариями), то чтобы оценить покрытие кода тестами (читай - актуальность кода и "правильных" комментариев) существует не одно программное решение.

В итерационном программировании, (особенно когда над одним и тем же куском кода работают несколько программистов) скорость изменения кода высока и программисты могут просто не успевать или, что более вероятно, просто забывать поправлять комментарии во всех, релевантных изменённому участку, местах. Внизу файла исходника поправили, сверху поправили, а, например, в середине - забыли. Такие случаи не представляются уж очень фантастическими.

Иногда комментарии появляются в результате реинжинеринга. Человеку нужно понять как работает этот код и он, разбираясь, начинает писать комментарии. Если бы после проведения структурных изменений в коде были бы написаны unit-тесты, то необходимости в комментариях не было бы.