Referenční průhlednost

Odkazová průhlednost je vlastností částí počítačových programů. Část programu se nazývá "referenčně transparentní", pokud ji lze nahradit hodnotou, kterou vrací, aniž by se změnilo chování programu. Referenčně transparentní funkce musí být čistá - musí vždy dávat stejný výstup, pokud přijímá stejný vstup, a nesmí mít žádné vedlejší efekty - části programu, které provádějí jinou činnost než vracení hodnoty. Opakem referenční transparentnosti je referenční neprůhlednost.

V matematice jsou všechny funkce referenčně transparentní, protože matematická funkce může pouze přijímat hodnoty a vyplivovat hodnotu. V programování to neplatí vždy - funkce může také zjistit, jaký je den v roce, nebo vypsat zprávu na obrazovku. Kvůli tomuto rozdílu někteří lidé používají pro funkce v programování jiné názvy, například procedury.

Referenční transparentnost umožňuje programátorům a kompilátorům uvažovat o kódu jako o systému přepisu - něčem, co vezme výraz a nahradí ho něčím jiným. To může pomoci s několika úlohami, jako je např:

  • Prokázání, že program nebo kód je správný - že dělá přesně to, co má, bez ohledu na to, co se děje.
  • Zjednodušení algoritmu.
  • Usnadňuje to změnu kódu a zároveň zaručuje, že dělá to, co má.
  • Zrychlení běhu kódu nebo způsob, který spotřebovává méně paměti.

Poslední úkol lze řešit několika způsoby - mezi nejznámější patří memoizace (ukládání odpovědí po prvním spuštění), eliminace společných podvýrazů (zjištění, zda se vyplatí spojit dvě stejné části kódu) , líné vyhodnocování (zjištění odpovědi až ve chvíli, kdy ji kód opravdu potřebuje) a paralelizace (práce na více problémech současně).

Otázky a odpovědi

Otázka: Co je to referenční průhlednost?


Odpověď: Odkazová průhlednost je vlastnost částí počítačových programů, kdy lze část programu nahradit hodnotou, kterou vrací, aniž by se změnilo chování programu.

Otázka: Co je opakem referenční transparentnosti?


Odpověď: Opakem referenční průhlednosti je referenční neprůhlednost.

Otázka: Jsou všechny funkce v matematice referenčně transparentní?


Odpověď: Ano, všechny funkce v matematice jsou referenčně transparentní, protože matematická funkce může pouze přijímat hodnoty a vyplivovat hodnotu.

Otázka: Jak pomáhá referenční transparentnost programátorům a kompilátorům?


Odpověď: Referenční transparentnost umožňuje programátorům a kompilátorům uvažovat o kódu jako o přepisovacím systému - něčem, co vezme výraz a nahradí ho něčím jiným. To pomáhá při řešení takových úkolů, jako je prokázání správnosti programu nebo kódu, zjednodušení algoritmu, usnadnění změny kódu a zároveň jistota, že dělá to, co má, a zrychlení běhu kódu nebo snížení spotřeby paměti.

Otázka: Jaké techniky se používají k tomu, aby kód běžel rychleji nebo využíval méně paměti?


Odpověď: Mezi techniky používané pro zrychlení běhu kódu nebo snížení spotřeby paměti patří memoizace (ukládání odpovědí po prvním spuštění), eliminace společných podvýrazů (zjišťování, zda se vyplatí spojit dvě stejné části kódu) , líné vyhodnocování (zjišťování odpovědi až ve chvíli, kdy ji kód opravdu potřebuje) a paralelizace (práce na více problémech najednou).

Otázka: Je nějaký rozdíl mezi funkcemi v programování ve srovnání s funkcemi v matematice?


Odpověď: Ano, existuje rozdíl mezi funkcemi v programování a v matematice - V programování může funkce také zjistit, jaký je den v roce, nebo vypsat zprávu na obrazovku, zatímco u matematických funkcí to možné není.

AlegsaOnline.com - 2020 / 2023 - License CC3