Évaluation stricte

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article sur l'informatique doit être recyclé ().

Une réorganisation et une clarification du contenu paraissent nécessaires. Améliorez-le, discutez des points à améliorer ou précisez les sections à recycler en utilisant {{section à recycler}}.

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

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

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 en f(5) + f(4) 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) aussitôt qu'on sait qu'on a la faire est très simple et assez naturel[1]. 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) trois fois (en comptant l'évaluation de f(4) restante qui conduira à la troisième évaluation de f(3)).

Commentaires

Un désavantage de l'évaluation stricte est qu'elle force l'évaluation des expressions qui ne sont pas nécessaires à l'évaluation finale ou qu'elle peut retarder l'évaluation d'expressions qui sont immédiatement nécessaires[pas clair]. Elle laisse aussi au développeur ou au programmeur 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

  • Évaluation paresseuse
  • Stratégie d'évaluation

Sources et Liens externes

Notes et références

  1. Cette méthode d'évaluation d'une fonction récursive par remplacement d'un appel par sa définition s'appelle la réduction de Gross-Knuth (voir par exemple Zena Ariola et Matthias Felleisen, « The Call-By-Need lambda Calculus », Journal of Functional Programming, vol. 7, no 3,‎ , p. 265-301 (lire en ligne)).
  • icône décorative Portail de la programmation informatique