Тут давеча на администрируемом мною веб 2.0-сайте развернулась
дискуссия о вопросах Божественных
(http://www.infostart.ru/blogs/459/). Я лично ничего не имею против
того, чтобы на программистских сайтах обсуждались Божественные
вопросы, но, конечно, лучше было бы, чтобы вместо тупого флуда о
костях динозавров и новомодной ереси под названием "научный
креационизм" было филиокве и чтобы разрешалось всё это кровавым
образом в оффлайне. Но вот что меня тут наиболее развеселило, так это
само явление верующего программиста, то есть не абстрактно как-то
верующего, как сейчас модно, а именно буквально придерживающегося
традиционного христианства, воскресение есть величайшее событие
истории и т.п. При том что этот человек один из наиболее знаменитых и
уважаемых в своей среде.
Лично для меня совмещение веры с программированием
упиралось бы в некоторые непреодолимые логические тупики, которые в
общем сводятся к неизбежной необходимости для верующего программиста
учитывать возможность чуда.
Предположим, имеется следующий код (пример на некоем перлообразном псевдокоде,
обсуждаемый здесь программист использует другие языки, но это в нашем
случае не важно):
if (0 and $condition) {
do something;
}
Программист-материалист вполне может таким способом закомментировать
if, потому что знает, что do something никогда не будет выполнено,
однако программист-теист тут вынужден всегда предполагать возможность
чуда, благодаря которому этот код всё же будет выполнен. И что же тут
делать, спрашивается? Жизнь программиста-теиста превращается в кошмар,
ибо он в принципе не может написать работоспособного кода, поскольку
любые его потуги будут пресекаться возможностью чуда! Единственным
решением было бы, пожалуй, добавление в существующие языки
программирования обработку чуда, наподобие обработки исключений, но,
опять же, всемогущий Бог легко обходит эти суетные уловки ума
человеческого.
А с другой стороны, верующий программист в определённых ситуациях,
напротив, будет уповать на чудо и отлынивать от своих прямых
обязанностей: зачем, скажем, проверять делитель на равенство нулю,
если Бог милостив и непременно отвратит сию страшную чашу? Что ему
стоит в последний момент взять и обратить ноль в любое нормальное
число? Кроме того, зная об этом, критические куски кода такой
программист заранее будет сопровождать комментариями типа
#Зде, Господи, спаси и сохрани!
(впрочем, на случай, если Бог игнорирует
комментарии, эта молитва должна периодически также посылаться на
stderr или, ещё лучше, на управляющий терминал процесса).
Я уж не говорю про тестирование. Единственные полноценный QA-engineer
- это Бог, Который найдёт такие баги, которые вам и не снились.