Stratégie d'évaluation (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Un langage de programmation utilise une stratégie d'évaluation pour déterminer « quand » évaluer les arguments à l'appel d'une fonction (ou encore, opération, méthode) et « comment » passer les arguments à la fonction. Par exemple, dans l'appel par valeur, les arguments doivent être évalués avant d'être passés à la fonction.

La stratégie d'évaluation d'un langage de programmation est spécifiée par la définition du langage même. En pratique, la plupart des langages de programmation (Java, C, ...) utilisent l'appel par valeur. En effet, l'appel par valeur permet de raisonner plus facilement lorsque l'on essaie de déterminer et calculer la complexité algorithmique d'un programme puisque l'on sait précisément quand est-ce que les arguments sont évalués.

Appel par nom[modifier | modifier le code]

Article détaillé : machine de Krivine.

Dans l'appel par nom, la fonction est évaluée d'abord et à chaque fois que dans cette évaluation les paramètres sont invoqués ceux-ci sont évalués. Par exemple, supposons avoir une fonction fst qui rend le premier élément d'une paire. fst (3 + 2, 6 * 8) s'évalue d'abord en 3 + 2 et enfin en 5.

Appel par valeur[modifier | modifier le code]

Article détaillé : machine SECD.

Dans l'appel par valeur, les paramètres sont d'abord évalués, puis la fonction est évaluée. Par exemple, supposons avoir une fonction fst qui rend le premier élément d'une paire. fst (3 + 2, 6 * 8) s'évalue d'abord en fst (5, 6 * 8), puis en fst (5, 48) et enfin en 5.

Appel par nécessité[modifier | modifier le code]

Article détaillé : évaluation paresseuse.

L'appel par nécessité est une optimisation de l'appel par nom dans laquelle les valeurs d'expressions déjà évaluées sont mémoïsées, ce qui permet de ne pas avoir à évaluer plusieurs fois les mêmes expressions.

Bibliographie[modifier | modifier le code]

Voir aussi[modifier | modifier le code]