Referenčná transparentnosť

Referenčná transparentnosť je vlastnosť častí počítačových programov. Časť programu sa nazýva "referenčne transparentná", ak ju možno nahradiť hodnotou, ktorú vracia, bez toho, aby sa zmenilo správanie programu. Referenčne transparentná funkcia musí byť čistá - musí vždy dávať rovnaký výstup, ak prijíma rovnaký vstup, a nesmie mať žiadne vedľajšie účinky - časti programu, ktoré vykonávajú inú činnosť ako vrátenie hodnoty. Opakom referenčnej transparentnosti je referenčná nepriehľadnosť.

V matematike sú všetky funkcie referenčne transparentné, pretože matematická funkcia môže len prijímať hodnoty a vypúšťať hodnotu. V programovaní to nie je vždy pravda - funkcia môže tiež zistiť, aký je deň v roku, alebo vypísať správu na obrazovku. Kvôli tomuto rozdielu niektorí ľudia používajú pre funkcie v programovaní iné názvy, napríklad procedúry.

Referenčná transparentnosť umožňuje programátorom a kompilátorom uvažovať o kóde ako o systéme prepisovania - niečom, čo preberá výraz a nahrádza ho niečím iným. To môže pomôcť pri viacerých úlohách, ako napr:

  • Dokázanie, že program alebo kód je správny - že robí presne to, čo má, bez ohľadu na okolnosti.
  • Zjednodušenie algoritmu.
  • Zjednodušuje sa tým zmena kódu a zároveň je isté, že robí to, čo má.
  • Zrýchlenie behu kódu alebo spôsob, ktorý využíva menej pamäte.

Existuje niekoľko spôsobov, ako vykonať poslednú úlohu - najznámejšie sú memoizácia (uloženie odpovedí po prvom použití), eliminácia spoločných podvýrazov (zistenie, či sa oplatí spojiť dve časti kódu, ktoré sú rovnaké) , lenivé vyhodnocovanie (nezisťovanie odpovede, kým ju kód naozaj nepotrebuje) a paralelizácia (práca na viacerých problémoch súčasne).

Otázky a odpovede

Otázka: Čo je to referenčná transparentnosť?


Odpoveď: Referenčná transparentnosť je vlastnosť častí počítačových programov, keď časť programu možno nahradiť hodnotou, ktorú vracia, bez toho, aby sa zmenilo správanie programu.

Otázka: Čo je opakom referenčnej transparentnosti?


Odpoveď: Opakom referenčnej transparentnosti je referenčná nepriehľadnosť.

Otázka: Sú všetky funkcie v matematike referenčne transparentné?


Odpoveď: Áno, všetky funkcie v matematike sú referenčne transparentné, pretože matematická funkcia môže len prijímať hodnoty a vypúšťať hodnotu.

Otázka: Ako pomáha referenčná transparentnosť programátorom a kompilátorom?


Odpoveď: Referenčná transparentnosť umožňuje programátorom a kompilátorom uvažovať o kóde ako o systéme prepisovania - niečom, čo berie výraz a nahrádza ho niečím iným. Pomáha to pri úlohách, ako je dokazovanie správnosti programu alebo kódu, zjednodušenie algoritmu, uľahčenie zmeny kódu, pričom je stále isté, že robí to, čo má, a zrýchlenie behu kódu alebo zníženie spotreby pamäte.

Otázka: Aké techniky sa používajú na zrýchlenie behu kódu alebo na zníženie spotreby pamäte?


Odpoveď: Niektoré techniky používané na zrýchlenie behu kódu alebo na zníženie spotreby pamäte zahŕňajú memoizáciu (ukladanie odpovedí po prvom použití), elimináciu spoločných podvýrazov (zistenie, či sa oplatí spojiť dve rovnaké časti kódu), lenivé vyhodnocovanie (nezisťovanie odpovede, kým ju kód naozaj nepotrebuje) a paralelizáciu (práca na viacerých problémoch súčasne).

Otázka: Je nejaký rozdiel medzi funkciami v programovaní v porovnaní s funkciami v matematike?


Odpoveď: Áno, existuje rozdiel medzi funkciami v programovaní v porovnaní s funkciami v matematike - V programovaní môže funkcia zistiť aj to, aký je deň v roku, alebo vypísať správu na obrazovku, zatiaľ čo pri matematických funkciách to nie je možné.

AlegsaOnline.com - 2020 / 2023 - License CC3