Прозорість посилань (інформатика): відмінності між версіями
[перевірена версія] | [перевірена версія] |
Вилучено вміст Додано вміст
помилка |
мНемає опису редагування |
||
Рядок 1:
{{Без джерел|дата=липень 2013}}'''Прозорість посилань''' і '''непрозорість посилань''' — це властивості частин [[Комп'ютерна програма|комп'ютерних програм]]. Кажуть, що [[Вираз (інформатика)|вираз]] прозорий по посиланнях, якщо його можна замінити на його [[Величина (інформатика)|значення]] і це не вплине на поведінку програми (тобто ми отримаємо нову програму, що на ті самі вхідні дані видає ті самі вихідні). Протилежним терміном є непрозорість посилань.
В [[математика|математиці]] всі функції прозорі по посиланнях, в програмуванні це не завжди так. Важливість прозорості посилань полягає в тому, що вони дозволяють програмісту та компілятору робити здогади про поведінку програми. Це може допомогти в доведенні правильності,
Прозорість посилань є одним з принципів [[функційне програмування|функційного програмування]]; тільки прозорі по посиланнях функції можуть бути мемоізовані (перетворені в тотожні функції, які використовують кешовані результати). Деякі мови програмування забезпечують засоби для гарантування прозорості посилань. Деякі ж вимагають дотримання прозорості посилань у всіх функціях.
Рядок 30:
Однією з переваг написання коду з прозорими посиланнями є те, що розумному компілятору легше виконувати статичний розбір коду і використовувати кращі оптимізації. Наприклад, у випадку С присутнє погіршення швидкодії через додавання до тіла циклу дорогої, в сенсі виконання, функції, навіть якщо виклик функції можна винести за тіло циклу без зміни результату програми. Програміст змушений робити ручні правки, які можливо позначаться на зручночитності коду. А якщо компілятор в змозі визначити, що виклик функції прозорий по посиланнях, він може здійснити це перетворення автоматично.
Основним недоліком мов, що наполягають на прозорості посилань є те, що в них послідовність дій, яка
У випадку прозорості посилань, немає різниці між посиланням на об'єкт і самим об'єктом. Інакше така різниця може бути легко введена й використана.
|