先行評価
表示
先行評価(せんこうひょうか、英: eager evaluation)、正格評価(せいかくひょうか、英: strict evaluation)、厳密評価とは、プログラミング言語における評価戦略の一種であり、多くの言語処理系で標準的に使われている戦略である。
概要
[編集]先行評価では、変数の値が得られた時点で即座に数式が評価される。一般に、評価の済んでいない数式を表す中間的なデータ構造を構築・管理する必要がないため、単純なプログラミング言語ではこれが最も効率的である。
先行評価の主な利点は、そのメモリ使用量と速度である。例えば、次のBASICのコードを考えてみよう。
X = 5 + 3 * (1 + 5 ^ 2)
PRINT X
PRINT X + 2
先行評価では、1行目が実行された時点で評価が行われ、X の値が 83 と確定する。従って、その後の PRINT X と PRINT X + 2 の行で X の値を再計算するという手間を掛けることがない。このため、時間的性能はもちろんのこと、数式を保持しておく必要もないので、メモリ使用量も削減される。
なお、遅延評価方式でもメモ化によって重複した計算を回避できる場合がある。