Taula de continguts:
Definició: què significa transparència referencial?
La transparència referencial és una propietat d’una part específica d’un programa o d’un llenguatge de programació, especialment llenguatges de programació funcionals com Haskell i R. Es diu que una expressió d’un programa és referencialment transparent si es pot substituir pel seu valor i el comportament resultant és el mateix que abans del canvi. Això vol dir que no es canvia el comportament del programa tant si l’entrada utilitzada és una referència com si és un valor real al qual s’hi apunta la referència.
Techopedia explica la transparència referencial
La transparència referencial té les seves arrels en la filosofia analítica, que és una branca de la filosofia que estudia construccions, arguments i afirmacions del llenguatge natural basats en els mètodes de la matemàtica i la lògica i té poc a veure amb la programació, tot i que ha estat adoptada per informàtics.
El concepte és simple, el "referent", allò que fa referència una expressió, es pot utilitzar per substituir el "referent" sense canviar el significat de l'expressió. Per exemple, la afirmació "El pare de Luke és un home malvat", "El pare de Luke" fa referència a "Darth Vader" a Star Wars. De manera que la afirmació és referencialment transparent, ja que "el pare de Luke" es pot substituir en qualsevol moment per "Darth Vader" i la declaració no canviaria de sentit. Tanmateix, en la declaració "el públic no sabia fins que" The Empire Strikes Back "que el pare de Luke en realitat és Darth Vader" no és una expressió referencialment transparent ja que si "el pare de Luke" es substitueix per "Darth Vader" l'expressió es converteix en "el l'audiència no va saber fins a "The Empire Strikes Back" que Darth Vader és en realitat Darth Vader ", que té un significat completament diferent.
En relació amb la programació, el concepte és a primera vista el mateix, però molts filòsofs no estan d’acord amb que el concepte s’implementi o es transmeti bé en llenguatges de programació. Però, en programacions generals, això significa simplement que una expressió es pot substituir pel seu valor resultant sense tenir cap efecte sobre el comportament del programa. Per exemple, la funció plusOne (x) simplement afegeix una a qualsevol que sigui el valor de x, així que si sabem que x = 5 podem substituir la funció amb el valor 6 amb seguretat en una expressió que produeix el mateix comportament quan s'utilitza plusOne (x) Però si hi ha una variable externa dins de l’expressió que es controla externament, digueu a la funció plusY (x) on Y dins de la funció està controlada externament, el comportament resultant pot no ser el mateix - en aquest cas no és referencialment transparent expressió.