Стратегия оценки


В языке программирования стратегия вычисления — это набор правил для вычисления выражений. [1] Этот термин часто используется для обозначения более конкретного понятия стратегии передачи параметров [2] , которая определяет тип значения, передаваемого функции для каждого параметра ( стратегия привязки ), [3] следует ли оценить параметры вызова функции, и если да, то в каком порядке ( порядок оценки ). [4] Понятие стратегии сокращения отличается, [5]хотя некоторые авторы объединяют эти два термина, и определение каждого термина не является общепринятым. [6]

Чтобы проиллюстрировать это, приложение-функция может оценить аргумент перед оценкой тела функции и передать адрес, давая функции возможность искать текущее значение аргумента и изменять его с помощью присваивания . [7]

Стратегия оценки определяется определением языка программирования и не является функцией какой-либо конкретной реализации. Соглашение о вызовах определяет детали передачи параметров для конкретных реализаций.

Это таблица стратегий оценки и репрезентативных языков по годам введения. Репрезентативные языки перечислены в хронологическом порядке, начиная с языка (языков), которые представили стратегию (если таковые имеются), а затем следуют известные языки, использующие эту стратегию. [8] : 434 

В то время как порядок операций определяет абстрактное синтаксическое дерево выражения, порядок оценки определяет порядок, в котором оцениваются выражения. Например, программа Python

Порядок вычислений в основном виден в коде с побочными эффектами , но он также влияет на производительность кода, поскольку жесткий порядок препятствует планированию инструкций . По этой причине языковые стандарты, такие как C++, традиционно оставляли порядок неопределенным, хотя такие языки, как Java и C#, определяют порядок вычислений слева направо [8] : 240–241  , а стандарт C++17 добавил ограничения на порядок вычислений. порядок оценки. [15]