Туманные вычисления
- 1 year ago
- 0
- 0
Вычисления по короткой схеме ( англ. 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), вычисления по короткой схеме невозможны, потому что для определения результата всегда требуются оба операнда.