Именно такую спецификацию работ имел в виду начальник полиции одного из американских
городов. Когда его спросили в интервью, почему он выбрал именно эту работу, он ответил: "Это
единственная работа, где заказчик всегда неправ!"
Для постусловия ситуация меняется на противоположную. Лучшими для работника являются
более слабые условия - это "хорошие новости"; в этом случае хорошо нужно уметь делать очень
немногое. Наилучшей работой - второй синекурой является работа, заданная спецификацией:
Синекура 2
{...} A {True}
Как бы не была выполнена работа, постусловие в этом случае будет истинным по определению.
Кстати, почему эта работа является все-таки второй по предпочтительности? Причина, как можно
видеть из определения триады Хоара, в завершаемости (terminate). Определение устанавливает, что
выполнение должно завершиться в состоянии, удовлетворяющем Q, всякий раз, когда оно начинается
в состоянии, удовлетворяющем P. Для синекуры 1, где нет состояний, удовлетворяющих P, не имеет
значения, что делает А даже если программный текст приводит к выполнению бесконечного цикла,
или ломает компьютер. Любое А будет корректным по отношению к данной спецификации. Для
синекуры 2, однако, требуется завершение работы, должно существовать заключительное состояние,
не важно, что делает А, но то, что делается, должно быть выполнено за конечное время.
Читатели, знакомые с теорией, могли заметить, что формула {P} A {Q} определяет тотальную (total
correctness) или полную корректность, включающую завершаемость наряду с соответствием специ-
фикации. Свойство, устанавливающее, что программа удовлетворяет спецификации при условии ее
завершения, известно, как частичная корректность.
Обсуждение того, будет ли усиление или ослабление утверждений "хорошей"или "плохой"новостью,
шло с позиций работника, нанимающегося для выполнения работы. Обратим ситуацию, и рассмотрим
ее с позиций работодателя. В этом случае слабое предусловие станет "хорошей"новостью, поскольку