Точное значение следует на естественном языке также не ясно выражено. Когда вы говорите «колесо должно поместиться в ряд» - что это значит? Это может означать то же самое, что must , но тогда в конструкции нет никакого смысла. Иначе, с какой уверенностью вы должны быть для этого, чтобы быть удовлетворенным? Что делать, если колесо не подходит?
В упомянутых вами смыслах есть некоторые эквиваленты, хотя я не знаю языка, в котором слово должно означать для них:
Тестирование / утверждение
ASSERT
часто является директивой языка, макросом или функцией библиотеки тестирования. В том смысле, что ASSERT
соответствует must , некоторые языки и платформы тестирования определяют макросы для «предупреждений о предупреждении», которые будут выдавать предупреждающее сообщение, если проверка не пройдена, но не выручит или не провалит тест - это будет соответствует должен .
Обработка исключений
В некоторых терминах вы можете рассматривать исключение как аналог - в случае обнаружения исключения программа может обработать случай, когда что-то не так, как должно быть . Но иногда исключение описывает сбой чего-либо, поскольку должно быть для работы программы, в этом случае исключение не будет перехвачено или обработчик заставит программу изящно завершиться с ошибкой. Однако это не всегда так - иногда выполняется код для проверки того, что может быть или, возможно, даже маловероятно , и возникает исключение, ожидающее, что оно обычно будет выброшено .
Ограничительная логика
Одно общее значение must и must в различных официальных документах на естественном языке заключается в ограничениях - must указывает ограничение, которое вы всегда должны удовлетворять и если вы не можете, то ваше состояние несовместимо, в то время как должен означает, что вы всегда будете удовлетворять ограничению , если это возможно , учитывая состояние и ограничения, подразумеваемые must , но , если это невозможно , который все еще действителен. В неформальной логике ограничений это происходит, когда в контексте существуют «внешние ограничения», поэтому проверка того, что «решение» является удовлетворительным по отношению к « должны ограничения», может быть возможна только при знании контекста. и с учетом контекста вы также можете удовлетворить различные подмножества ограничений « should », но не одновременно. По этой причине некоторые языки спецификации логики ограничений (называете ли вы их «языками программирования», зависит от вашего определения) имеют понятия упорядочения ограничений - первый уровень ограничений соответствует must , следующий уровень соответствует до должно , и ограничение должно быть выполнено, если возможно, с учетом всех внешних для него ограничений (на предыдущих уровнях), даже если это противоречит некоторым ограничениям на следующих уровнях, которые затем не будут выполнены.