Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерном программировании , энергичное вычислении , также известное как строгая оценка или жадные оценки , является стратегия оценки , используемой большинство традиционных языков программирования . При активной оценке выражение вычисляется, как только оно привязано к переменной . Альтернативой нетерпеливому вычислению является ленивое вычисление , при котором выражения оцениваются только тогда, когда вычисляется зависимое выражение, в зависимости от определенной стратегии вычисления .

Эффекты нетерпеливой оценки включают:

  • Код, который легко понять с точки зрения порядка выполнения, который потенциально не меняет своего поведения в зависимости от изменения контекста выполнения.
  • Более простой процесс отладки по сравнению с другими стратегиями оценки из-за вышеизложенного.
  • Однако ответственность за производительность кода перекладывается на программиста, что требует тщательного процесса оптимизации кода .

Императивные языки программирования , в которых порядок выполнения неявно определяется структурой исходного кода, почти всегда используют активную оценку, чтобы избежать неожиданного поведения, которое может возникнуть в определенных контекстах из -за выполнения вне очереди (например, при использовании многопоточного программного обеспечения. , одновременное выполнение кода и т. д.). Это неожиданное поведение может привести к скачкам данных , нарушениям атомарности и другим потенциально нежелательным и трудно управляемым ошибкам и эффектам.

Многие современные компиляторы способны изменять порядок выполнения для лучшей оптимизации ресурсов процессора и часто могут полностью исключить выполнение ненужных выражений, если можно определить, что результаты выражений не видны для остальной части программы . Однако это не должно отвлекать поток скомпилированной программы от стратегии оценки, определенной языком программирования, на котором написан скомпилированный код, за заметным исключением потенциальных ошибок, вносимых компилятором. Чтобы избежать этой проблемы, большинство (если не все) современных языков высокого уровня предоставляют конструкции, позволяющие программисту направлять компилятор в отношении его собственных оптимизаций. В качестве примера, используя конструкцию блочного уровня блокировки в C #позволяет программисту определять блок кода, который должен выполняться в том же порядке, в каком он был определен в исходном коде, эффективно запрещая компилятору выполнять любые операции изменения порядка в этом блоке кода. [ необходима цитата ]

Церковная кодировка [ править ]

В кодировке Чёрча нетерпеливое вычисление операторов соответствует строгому вычислению функций [ требуется дальнейшее объяснение ] ; по этой причине строгую оценку иногда называют «нетерпеливой».

См. Также [ править ]

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