Résumé
La transparence référentielle est une propriété des expressions d'un langage de programmation qui fait qu'une expression peut être remplacée par sa valeur sans changer le comportement du programme. Une expression est référentiellement transparente si elle peut être remplacée par sa valeur sans changer le comportement du programme (c'est-à-dire que le programme a les mêmes effets et les mêmes sorties pour les mêmes entrées, quel que soit son contexte d'exécution). Une expression est référentiellement opaque si elle n'est pas référentiellement transparente. Si toutes les fonctions impliquées dans l'expression sont pures, c'est-à-dire si elles ont toujours les mêmes valeurs de retour pour les mêmes arguments et si elles sont sans effets de bord, alors l'expression est référentiellement transparente. Mais la réciproque est fausse : une expression référentiellement transparente peut impliquer des fonctions impures. La transparence référentielle est la pierre angulaire de la programmation fonctionnelle. Elle permet notamment la mémoïsation des fonctions référentiellement transparentes (c'est-à-dire la mémorisation des valeurs précédemment calculées). Les opérations arithmétiques sont référentiellement transparentes : on peut ainsi remplacer 43 par sa valeur 12 ou par 26 ou par 3*4. Les fonctions au sens mathématique du terme sont référentiellement transparentes : c'est le cas par exemple de la fonction sin(x) qui est référentiellement transparente, puisqu'elle renvoie toujours le même résultat pour un x donné et n'a pas d'effets de bord. En revanche, l'expression x++ du langage C n'est pas référentiellement transparente, car elle change la valeur de x. Il est de même de today() qui n'est pas référentiellement transparent, car si on l'évalue aujourd'hui on n'obtient pas le même résultat que si on l'exécute demain. Néanmoins, puisqu'une expression référentiellement transparente peut toujours être remplacée par sa valeur ou par une expression produisant la même valeur, il n'est pas nécessaire de définir des points de séquence ou de préserver l'ordre d'évaluation.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.