Índice:
Definição - O que significa Transparência Referencial?
Transparência referencial é uma propriedade de uma parte específica de um programa ou linguagem de programação, especialmente linguagens de programação funcionais como Haskell e R. Diz-se que uma expressão em um programa é referencialmente transparente se puder ser substituída por seu valor e o comportamento resultante for o mesmo que antes da mudança. Isso significa que o comportamento do programa não é alterado, independentemente de a entrada usada ser uma referência ou um valor real para o qual a referência está apontando.
Techopedia explica Transparência Referencial
A transparência referencial tem suas raízes na filosofia analítica, que é um ramo da filosofia que estuda construções, argumentos e declarações da linguagem natural com base nos métodos da matemática e da lógica e tem pouco a ver com programação, embora tenha sido adotada por cientistas da computação.
O conceito é simples, o "referente", a coisa a que uma expressão se refere, pode ser usado para substituir o "referenciador" sem alterar o significado da expressão. Por exemplo, a declaração "O pai de Luke é um homem mau", "O pai de Luke" faz referência a "Darth Vader" no folclore de Guerra nas Estrelas. Portanto, a declaração é referencialmente transparente, já que "o pai de Luke" pode ser substituído a qualquer momento por "Darth Vader" e a declaração não muda de significado. No entanto, na declaração "o público não sabia até 'The Empire Strikes Back' que o pai de Luke é na verdade Darth Vader" não é uma expressão referencialmente transparente, pois se "o pai de Luke" for substituído por "Darth Vader", a expressão se tornará "o o público não sabia até 'The Empire Strikes Back' que Darth Vader é na verdade Darth Vader ", que tem um significado completamente diferente.
Em relação à programação, o conceito é, à primeira vista, o mesmo, mas muitos filósofos discordam de que o conceito seja implementado ou transportado bem nas linguagens de programação. Mas na programação geral, isso significa simplesmente que uma expressão pode ser substituída pelo valor resultante sem afetar o comportamento do programa. Por exemplo, a função plusOne (x) simplesmente adiciona um ao valor de x, portanto, se sabemos que x = 5, podemos substituir com segurança a função pelo valor 6 em uma expressão que produz o mesmo comportamento ao usar o plusOne (x) Mas se houver uma variável externa na expressão que é controlada externamente, digamos na função plusY (x) onde Y na função é controlada externamente, o comportamento resultante pode não ser o mesmo - nesse caso, isso não é referencialmente transparente expressão.