Referenční průhlednost
Referenční průhlednost neboli referenční transparentnost je v programování vlastnost výrazů, která znamená, že daný výraz lze vyhodnotit bez ohledu na jeho kontext v rámci zdrojového kódu. Tedy že výraz se zadanými stejnými hodnotami bude vyhodnocen vždy na stejný výsledek (neboť nezávisí na skrytých hodnotách, například na globálních proměnných) a sám nemá žádné skryté vedlejší účinky.
Referenčně průhledný podprogram je tak funkcí v matematickém smyslu. Díky tomu na něj programátor i překladač mohou nahlížet izolovaně a počítačový program složený z referenčně průhledných výrazů je vlastně přepisovacím systémem. To usnadňuje dosáhnout dokazatelné správnosti, umožňuje nebo alespoň výrazně usnadňuje či zefektivňuje řadu optimalizačních technik (například líné vyhodnocování, statickou analýzu kódu) a usnadňuje vytváření paralelních programů. Tím je motivován vznik programovacích jazyků, které referenční průhlednost do značné míry podporují a nebo i vyžadují.
Na druhou stranu referenčně průhledné výrazy jsou z definice deterministické, přičemž praxe vyžaduje i implementace nedeterministických algoritmů, a nepředpokládají dodatečné vedlejší vstupy a výstupy, přičemž interaktivní programy v praxi využívají hojně vstupní a výstupní zařízení. Proto existují jednak jazyky využívající referenční průhlednost jen částečně, jednak pokročilé techniky (například monády), které umožňují v referenčně průhledných funkcích implementovat i postupy zdánlivě s referenční průhledností zcela nekompatibilní.
Referenční průhlednost je jedním ze základních paradigmat deklarativního programování (tedy například funkcionálního a logického programování).
Reference
editovatV tomto článku byl použit překlad textu z článku Referential transparency na anglické Wikipedii.