La transparence référentielle est une caractéristique de certaines parties des programmes informatiques. Une partie d'un programme est dite "transparente par référence" si elle peut être remplacée par la valeur qu'elle redonne sans modifier le comportement du programme. Une fonction référentiellement transparente doit être pure - elle doit toujours donner la même sortie si elle prend la même entrée, et elle ne doit pas avoir d'effets secondaires - les parties du programme qui effectuent une action autre que de redonner une valeur. L'opposé de la transparence référentielle est l'opacité référentielle.
En mathématiques, toutes les fonctions sont transparentes par référence, car une fonction mathématique ne peut que prendre des valeurs et en recracher une. En programmation, cela n'est pas toujours vrai - une fonction peut aussi découvrir quel jour de l'année on est, ou imprimer un message à l'écran. En raison de cette différence, certaines personnes utilisent d'autres noms pour les fonctions en programmation, comme les procédures.
La transparence référentielle permet aux programmeurs et aux compilateurs de considérer le code comme un système de réécriture - quelque chose qui prend une expression et la remplace par autre chose. Cela peut aider dans plusieurs tâches, telles que
Il existe plusieurs façons de réaliser cette dernière tâche, les plus connues étant la mémorisation (sauvegarder les réponses après la première fois), l'élimination des sous-expressions communes (déterminer s'il vaut la peine de combiner deux parties du code qui sont identiques), l'évaluation paresseuse (ne pas trouver la réponse avant que le code n'en ait vraiment besoin) et la parallélisation (travailler sur plusieurs problèmes en même temps).