Оглавление:
Определение - Что означает ссылочная прозрачность?
Ссылочная прозрачность - это свойство определенной части программы или языка программирования, особенно таких функциональных языков программирования, как Haskell и R. Выражение в программе называется ссылочно-прозрачным, если его можно заменить значением, а результирующее поведение так же, как до изменения. Это означает, что поведение программы не изменяется независимо от того, является ли используемый ввод ссылкой или фактическим значением, на которое указывает ссылка.
Техопедия объясняет ссылочную прозрачность
Ссылочная прозрачность имеет свои корни в аналитической философии, которая является отраслью философии, которая изучает конструкции, аргументы и утверждения естественного языка, основанные на методах математики и логики, и имеет мало общего с программированием, хотя она была принята учеными-программистами.
Понятие простое, «референт», то, на что ссылается выражение, может использоваться для замены «реферера» без изменения значения выражения. Например, утверждение «отец Люка - злой человек», «отец Люка» ссылается на «Дарта Вейдера» в «Звездных войнах». Таким образом, это утверждение является ссылочно-прозрачным, поскольку «отец Люка» может быть в любое время заменено на «Дарт Вейдер», и это значение не изменится. Тем не менее, в заявлении «публика не знала, пока« Империя наносит ответный удар », что отец Люка на самом деле Дарт Вейдер» не является ссылочно прозрачным выражением, поскольку, если «отца Люка» заменить на «Дарта Вейдера», выражение становится « Аудитория не знала, пока «Империя наносит ответный удар», что Дарт Вейдер на самом деле является Дартом Вейдером », что имеет совершенно иной смысл.
Что касается программирования, концепция, на первый взгляд, та же, но многие философы не согласны с тем, что эта концепция хорошо реализована или перенесена в языки программирования. Но в общем программировании это просто означает, что выражение может быть заменено его результирующим значением, не влияя на поведение программы. Например, функция plusOne (x) просто добавляет единицу к любому значению x, поэтому, если мы знаем, что x = 5, мы можем смело заменять функцию значением 6 в выражении, которое дает то же поведение при использовании plusOne (Икс). Но если в выражении есть внешняя переменная, которая управляется извне, скажем, в функции plusY (x), где Y внутри функции управляется извне, результирующее поведение может не совпадать - в этом случае это не является ссылочно прозрачным выражение.
