Съдържание:
Определение - Какво означава референтна прозрачност?
Референтната прозрачност е свойство на определена част от програма или език за програмиране, особено на функционални езици за програмиране като Haskell и R. Казва се, че изразът в програмата е референтно прозрачен, ако може да бъде заменен със стойността му и произтичащото от него поведение същото като преди промяната. Това означава, че поведението на програмата не се променя дали използваният вход е референтен или действителна стойност, към която референтът сочи.
Техопедия обяснява референтната прозрачност
Референтната прозрачност има своите корени в аналитичната философия, която е клон на философията, който изучава естествените езикови конструкции, аргументи и твърдения, базирани на методите на математиката и логиката и няма много общо с програмирането, въпреки че е възприет от компютърните учени.
Концепцията е проста, "референтът", нещото, към което се отнася израз, може да се използва за заместване на "референт", без да се променя значението на израза. Например, изказването „Бащата на Лука е зъл човек“, „Бащата на Лука“ споменава „Дарт Вейдър“ в ерата на „Междузвездни войни“. Така че изявлението е сравнително прозрачно, тъй като „бащата на Лука“ може да бъде заменен по всяко време с „Дарт Вейдър“ и изказването няма да се промени по смисъла. Въпреки това, в изявлението "публиката не знае, докато" Империята отвръща ", че бащата на Лука всъщност е Дарт Вейдър" не е референтно прозрачен израз, тъй като ако "бащата на Лука" бъде заменен с "Дарт Вейдър", изразът става " публиката не знаеше, докато „Империята отвръща назад“, че Дарт Вейдър всъщност е Дарт Вейдър, „което има съвсем различно значение.
По отношение на програмирането концепцията на пръв поглед е една и съща, но много философи не са съгласни, че концепцията е приложена или пренесена добре в езиците за програмиране. Но в общото програмиране това просто означава, че един израз може да бъде заменен от получената му стойност, без да има ефект върху поведението на програмата. Например функцията plusOne (x) просто добавя една към каквато и да е стойността на x, така че ако знаем, че x = 5, можем спокойно да заменим функцията със стойността 6 в израз, който води до същото поведение при използване на plusOne (х). Но ако има външна променлива в израза, който се контролира външно, да речем във функцията плюсY (x), където Y в рамките на функцията е външно контролирана, полученото поведение може да не е същото - в този случай това не е референтно прозрачно изразяване.