Прозорість посилань (інформатика): відмінності між версіями
[перевірена версія] | [перевірена версія] |
Вилучено вміст Додано вміст
Bunyk (обговорення | внесок) доповнення перекладом з en:Referential transparency |
Bunyk (обговорення | внесок) Немає опису редагування |
||
Рядок 1:
'''Прозорість посилань''' і '''непрозорість посилань''' — це властивості частин [[Комп'ютерна програма|комп'ютерних програм]]. [[Вираз (інформатика)|Вираз]] називають прозорим за посиланнями, якщо його можна [[Рерайтинг (математика)|замінити]] на його [[Величина (інформатика)|значення]] і це не вплине на поведінку програми<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}} - його значення повинно бути однаковим для однакових аргументів і обчислення не повинно створювати [[Побічний ефект (програмування)|побічних ефектів]]. Вираз який не є прозорим за посиланнями називають непрозорим за посиланнями.
В [[математика|математиці]] всі функції прозорі за посиланнями, за визначенням [[функція (математика)|математичної функції]]. Проте, в програмуванні це не завжди так, і часто для уникнення плутанити використовуються терміни [[Підпрограма|процедура]] та [[Метод (програмування)|метод]]. Ключовою характеристикою [[Функційне програмування|функційного програмування]] є те, що воно дозволяє лише прозорі за посиланням функції.
В [[математика|математиці]] всі функції прозорі за посиланнями, в програмуванні це не завжди так. Важливість прозорості посилань полягає в тому, що вони дозволяють програмісту та компілятору робити здогади про поведінку програми. Це може допомогти в доведенні правильності, спрощенні [[алгоритм]]у, допомагає при зміні коду без отримання нових помилок або [[оптимізація (інформатика)|оптимізації]] коду в сенсі [[мемоізація|мемоізації]], [[усунення спільних підвиразів]] або [[Паралельні обчислення|паралелізації]].▼
▲
== Приклади й контрприклади ==
|