Cuprins:
Definiție - Ce înseamnă transparența referențială?
Transparența referențială este o proprietate a unei părți specifice a unui program sau a unui limbaj de programare, în special limbaje de programare funcționale precum Haskell și R. Se spune că o expresie într-un program este referențială transparentă dacă poate fi înlocuită cu valoarea sa și comportamentul rezultat este la fel ca înainte de schimbare. Aceasta înseamnă că comportamentul programului nu este modificat dacă intrarea utilizată este o referință sau o valoare reală la care se referă referința.
Techopedia explică transparența referențială
Transparența referențială își are rădăcinile în filosofia analitică, care este o ramură a filozofiei care studiază construcțiile, argumentele și enunțările limbajului natural bazate pe metodele matematicii și logicii și nu are prea multe legături cu programarea, deși a fost adoptată de informaticieni.
Conceptul este simplu, „referentul”, lucru la care se referă o expresie, poate fi folosit pentru a substitui „referitorul” fără a schimba sensul expresiei. De exemplu, afirmația „Tatăl lui Luke este un om rău”, „Tatăl lui Luke” face referire la „Darth Vader” în Star Wars. Deci, afirmația este transparentă referențial, deoarece „tatăl lui Luke” poate fi înlocuit în orice moment cu „Darth Vader”, iar afirmația nu s-ar schimba în sens. Cu toate acestea, în afirmația „publicul nu știa până când„ Imperiul lovește înapoi ”că tatăl lui Luke este de fapt Darth Vader” nu este o expresie referențial transparentă, deoarece dacă „tatăl lui Luke” este înlocuit cu „Darth Vader”, expresia devine „cea audiența nu știa până la „The Empire Strikes Back” că Darth Vader este de fapt Darth Vader ”, care are un sens cu totul diferit.
În ceea ce privește programarea, conceptul este la prima vedere același, dar mulți filosofi nu sunt de acord cu faptul că conceptul este implementat sau transferat bine în limbajele de programare. Dar, în programarea generală, aceasta înseamnă pur și simplu că o expresie poate fi înlocuită cu valoarea sa rezultată fără a avea un efect asupra comportamentului programului. De exemplu, funcția plusOne (x) adaugă pur și simplu una la orice valoare a lui x, deci dacă știm că x = 5 atunci putem înlocui în mod sigur funcția cu valoarea 6 într-o expresie care dă același comportament atunci când folosim plusOne (X). Dar dacă există o variabilă externă în expresia care este controlată extern, spuneți în funcția plusY (x) unde Y în cadrul funcției este controlată extern, comportamentul rezultat poate să nu fie același - în acest caz acesta nu este unul referențial transparent expresie.