Évaluation stricte

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En informatique, l'évaluation stricte est une stratégie d'évaluation des expressions à l'intérieur d'un programme. C'est le mode d'évaluation où l'expression est évaluée dès qu'elle peut être liée à une variable. Elle est traditionnellement appelée appel par valeur.

Un exemple[modifier | modifier le code]

Considérons la fonction récursive (fonction de Fibonnacci) :

f(x) = si x=0 alors 0 sinon si x=1 alors 1 sinon f(x-1) + f(x-2)

Calculons f(6). On voit que l'expression

si 6=0 alors 0 sinon si 6=1 alors 1 sinon f(5) + f(4)

s'évalue an f(5) + f(6) qui elle-même s'évalue en

f(x) = si 5=0 alors 0 sinon si 5=1 alors 1 sinon f(4) + f(3) +si 4=0 alors 0 sinon si 4=1 alors 1 sinon f(3) + f(2)
etc.

On voit que ce mécanisme qui consiste à évaluer f(5), f(4), f(3) dès qu'on les connaît est très simple et naturel. Il n'y a pas à conserver d'expressions intermédiaires ou à anticiper sur des calculs à venir. Mais il conduit à évaluer f(4) deux fois et f(3) au moins deux fois[1].

Commentaires[modifier | modifier le code]

L'évaluation stricte est le mode d'évaluation des langages impératifs. Elle laisse ainsi au programmeur la responsabilité de définir l'ordre d'exécution, car dans les langages à effets de bord, l'ordre d'évaluation peut avoir un impact sur le résultat obtenu par une expression.

Un désavantage de l'évaluation stricte est qu'elle force l'évaluation des expressions qui ne sont pas nécessaires à l'exécution ou qu'elle peut retarder l'évaluation d'expressions qui sont immédiatement nécessaires. Elle laisse aussi au développeur la tâche d'organiser l'ordre d'exécution, alors que la plupart des compilateurs modernes sont capables d'optimiser l'ordre d'exécution des expressions afin de maximiser l'utilisation des ressources processeurs et d'éliminer des expressions inutiles.

Voir aussi[modifier | modifier le code]

Sources et Liens externes[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. plus puisque l'évaluation de f(4) conduira encore à une évaluation de f(3).