Жадная оценка - Eager evaluation
эта статья не цитировать Любые источники.Ноябрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Стратегии оценки |
---|
В компьютерное программирование, жадная оценка, также известен как строгая оценка или жадная оценка, это стратегия оценки используется наиболее традиционными языки программирования. В нетерпеливой оценке выражение оценивается, как только он привязан к переменная. Альтернативой нетерпеливой оценке является ленивая оценка, где выражения оцениваются только тогда, когда зависимое выражение оценивается в зависимости от определенного стратегия оценки.
Эффекты нетерпеливой оценки включают:
- Код, который легко понять с точки зрения порядка выполнения, который потенциально не изменяет свое поведение в зависимости от изменения контекста выполнения.
- Более простой процесс отладки по сравнению с другими стратегиями оценки из-за вышеизложенного.
- Однако ответственность за выполнение кода перекладывается на программиста, что требует тщательного оптимизация кода обработать.
Императивное программирование языки, в которых порядок выполнения неявно определяется структурой исходного кода, почти всегда используют активную оценку, чтобы избежать неожиданного поведения, которое может произойти в определенных контекстах из внеочередное исполнение (например, при использовании многопоточное программное обеспечение, одновременное выполнение кода, так далее.). Это неожиданное поведение может привести к гонки данных, атомарность нарушения и другие потенциально нежелательные и трудно контролируемые ошибки и эффекты.
Многие современные компиляторы способны изменение порядка выполнения для лучшей оптимизации ресурсов процессора и часто может полностью исключить выполнение ненужных выражений, если можно определить, что результаты выражений не отображается для остальной части программы. Однако это не должно отвлекать поток скомпилированной программы от стратегии оценки, определенной языком программирования, на котором написан скомпилированный код, за заметным исключением потенциальных ошибок, вносимых компилятором. Чтобы избежать этой проблемы, большинство (если не все) современных языков высокого уровня предоставляют конструкции, позволяющие программисту направлять компилятор в отношении его собственных оптимизаций. В качестве примера, используя конструкцию уровня блока замок в C # позволяет программисту определять блок кода, который должен выполняться в том же порядке, в каком он был определен в исходном коде, эффективно запрещая компилятору выполнять любые операции изменения порядка в этом блоке кода.
Церковная кодировка
Под Церковная кодировка, жадная оценка операторы соответствует строгой оценке функций[требуется дальнейшее объяснение ]; по этой причине строгую оценку иногда называют «нетерпеливой».