Прозорість посилань (інформатика): відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
м автоматична заміна {{Не перекладено}} вікі-посиланнями на перекладені статті
Рядок 1:
'''Прозорість посилань''' і '''непрозорість посилань'''&nbsp;— це властивості частин [[Комп'ютерна програма|комп'ютерних програм]]. [[Вираз (інформатика)|Вираз]] називають прозорим за посиланнями, якщо його можна [[Рерайтинг (математика)|замінити]] на його [[Величина (інформатика)|значення]] і це не вплине на поведінку програми<ref>{{cite book|title=Concepts in Programming Languages|author=John C. Mitchell|year=2002|publisher=Cambridge University Press|page=[https://books.google.gr/books?id=7Uh8XGfJbEIC&pg=PA78&dq=referential+transparency&hl=en&sa=X&redir_esc=y#v=onepage&q=referential%20transparency&f=false 78]}}</ref>. Для цього потрібно аби вираз був {{iw|[[чиста функція|чистим|en|pure function}}]] - його значення повинно бути однаковим для однакових аргументів і обчислення не повинно створювати [[Побічний ефект (програмування)|побічних ефектів]]. Вираз який не є прозорим за посиланнями називають непрозорим за посиланнями.
 
В [[математика|математиці]] всі функції прозорі за посиланнями, за визначенням [[функція (математика)|математичної функції]]. Проте, в програмуванні це не завжди так, і часто для уникнення плутанити використовуються терміни [[Підпрограма|процедура]] та [[Метод (програмування)|метод]]. Ключовою характеристикою [[Функційне програмування|функційного програмування]] є те, що воно дозволяє лише прозорі за посиланням функції.
Рядок 14:
 
== Приклади й контрприклади ==
Якщо в виразі задіяні лише {{нп|[[Чиста функція|чисті||Pure function}}]] функції, тоді вираз буде прозорим за посиланнями. Також, деякі нечисті функції можуть бути використані у виразі, якщо їх значення не впливають на значення виразу та їх [[Побічний ефект (програмування)|побічні ефекти]] незначимі.
 
Візьмемо функцію, що не приймає параметрів і повертає дані, введені з [[Клавіатура|клавіатури]]. Припустимо, її виклик такий: <code>GetInput()</code>. Значення повернуте функцією <code>GetInput()</code> залежить від вводу користувача, отже різні виклики <code>GetInput()</code> з однаковими параметрами (порожній список) можуть повертати різні значення. Звідси, <code>GetInput()</code> ані детермінована, ані прозора за посиланнями.