Obsah:
Definice - Co znamená referenční transparentnost?
Referenční průhlednost je vlastnost určité části programu nebo programovacího jazyka, zejména funkčních programovacích jazyků, jako jsou Haskell a R. Výraz v programu je považován za referenčně průhledný, pokud jej lze nahradit jeho hodnotou a výsledné chování je stejně jako před změnou. To znamená, že chování programu se nezmění bez ohledu na to, zda je použitým vstupem odkaz nebo skutečná hodnota, na kterou odkaz odkazuje.
Techopedia vysvětluje referenční transparentnost
Referenční průhlednost má své kořeny v analytické filosofii, což je odvětví filosofie, které studuje konstrukce přirozených jazyků, argumenty a výroky založené na metodách matematiky a logiky a má málo společného s programováním, i když bylo přijato počítačovými vědci.
Koncept je jednoduchý, „referent“, věc, na kterou výraz odkazuje, lze použít k nahrazení „referrera“, aniž by se změnil význam výrazu. Například prohlášení „Lukášův otec je zlý muž“, „Lukášův otec“ odkazuje na „Darth Vader“ v tradici Star Wars. Toto tvrzení je tedy transparentní, protože „Lukovin otec“ lze kdykoli nahradit „Darthem Vaderem“ a tvrzení by se neměnilo ve smyslu. Avšak ve výroku „publikum nevědělo, dokud Lukeův otec není vlastně Darth Vader“, dokud „The Empire Strikes Back“ není referenčním průhledným výrazem, protože pokud je „Lukeův otec“ nahrazen „Darth Vader“, výraz se stává „ publikum nevědělo až do doby „The Empire Strikes Back“, že Darth Vader je ve skutečnosti Darth Vader, „který má úplně jiný význam.
Ve vztahu k programování je tento koncept na první pohled stejný, ale mnoho filozofů nesouhlasí s tím, že tento koncept je v programovacích jazycích implementován nebo přenášen dobře. Obecně to však znamená, že výraz lze nahradit výslednou hodnotou, aniž by to mělo vliv na chování programu. Například funkce plusOne (x) jednoduše přidá jednu k jakékoli hodnotě x, takže pokud víme, že x = 5, můžeme bezpečně nahradit funkci hodnotou 6 ve výrazu, který dává stejné chování při použití plusOne (X). Pokud je však ve výrazu, který je ovládán externě, externí proměnná, řekněme ve funkci plusY (x), kde Y v rámci funkce je externě ovládáno, výsledné chování nemusí být stejné - v tomto případě to není referenční transparentnost výraz.
