Прозорість посилань (інформатика): відмінності між версіями
[перевірена версія] | [перевірена версія] |
Вилучено вміст Додано вміст
мНемає опису редагування |
Емартіс (обговорення | внесок) "Прозорий по посиланнях" -> "Прозорий за посиланнями" (виглядає, як автопереклад з російської), інші мовні правки, вікіфікація |
||
Рядок 1:
В [[математика|математиці]] всі функції прозорі
Прозорість посилань є одним з принципів [[функційне програмування|функційного програмування]]
Через те, що прозорість посилань вимагає однакового результату на однаковому вході в будь-який час, прозорий
== Приклади й контрприклади ==
Якщо в виразі задіяні лише
Візьмемо функцію, що не приймає параметрів і повертає дані, введені з [[Клавіатура|клавіатури]]. Припустимо, її виклик такий: <code>GetInput()</code>. Значення повернуте функцією <code>GetInput()</code> залежить від
Витонченіший приклад — функція, що використовує [[глобальна змінна|глобальну змінну]] (змінну з динамічною [[Область видимості (програмування)|областю
Арифметичні операції прозорі
Присвоєння не прозоре. Наприклад, вираз на [[C (мова програмування)|C]] <code>x = x + 1</code> змінює значення надане <code>x</code>. Припустимо <code>x</code> початково має значення <code>10</code>, два послідовні обчислення виразу дають, відповідно, <code>11</code> і <code>12</code>. Звідси видно, що заміна <code>x = x + 1</code> на <code>11</code> або <code>12</code> надасть програмі іншого
В більшості мов
<code>today()</code> теж не прозора, бо видає різні значення кожного нового дня.
== Відмінність від [[Імперативне програмування|імперативного програмування]] ==
Якщо заміна виразу на його значення
Однак
Однією з переваг написання коду з прозорими посиланнями є те, що розумному компілятору легше виконувати [[статичний
Основним недоліком мов, що наполягають на прозорості посилань є те, що в них послідовність дій, яка природно може бути записана як покрокова послідовність в імперативному стилі,
У випадку прозорості посилань
== Примітки ==
{{reflist}}
== Посилання ==
{{Без джерел|дата=липень 2013}}
{{ВП-портали|Програмування}}
[[Категорія:Функціональне програмування]]
|