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 de calculer la complexité algorithmique d'un programme puisque l'on sait précisément quand les arguments sont évalués.
Appel par nom
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, considérons 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
Dans l'appel par valeur, les paramètres sont d'abord évalués, puis la fonction est évaluée. Par exemple, considérons 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é
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
C. Livercy, Theorie des programmes / schemas, preuves, sémantique, Dunod, 1978
Voir aussi Sémantique des langages de programmation Sémantique opérationnelle Sémantique dénotationnelle Substitution explicite
Catégorie:Calculabilité Catégorie:Logique mathématique Catégorie:Programmation fonctionnelle Catégorie:Langage de programmation Catégorie:Théorie de la compilation Catégorie:Méthode formelle