Вычисления по короткой схеме

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Стратегии вычисления
Строгие вычисления
Нестрогие вычисления
Недетерминированные стратегии
Другие

Вычисления по короткой схеме (англ. Short-circuit evaluation), также известны как вычисления Маккарти (англ. McCarthy evaluation, в честь американского информатика Джона Маккарти) — это стратегия в некоторых языках программирования, при которой второй логический оператор выполняется или оценивается только в том случае, если первого логического оператора недостаточно для определения значения выражения. Таким образом, после того, как результат выражения становится очевидным, его вычисление прекращается.

Примеры:

  • если левый операнд AND имеет значение false, то общее значение выражения также false

или

  • если левый операнд OR имеет значение true, то общее значение выражения также true

Более общо, в выражениях вида либо вычисление продолжается слева направо, пока одно из не даст false, или true, соответственно. Наличие или отсутствие вычисления по короткой схеме особенно важно, если члены выражения — действия с возможными побочными эффектами (помимо вызова функций это может быть останов программы при делении на нуль или выход за пределы массива). Например, код вида if (n!=0) and (k/n>17)... является корректным только, если язык (или компилятор) гарантирует вычисление по короткой схеме.

В языках программирования с ленивыми вычислениями (Lisp, Perl, Haskell) логические операторы используются по короткой схеме. В других (Ada, Java, Delphi) доступны как операторы по короткой схеме, так и стандартные логические операторы. Для некоторых логических операций, таких как исключающее «или» (XOR), использование короткой схемы невозможно, потому что для определения результата всегда требуются оба операнда.

Ссылки[править | править код]