Transparență referențială

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , referențial transparent este definit ca o funcție care nu are efecte secundare și că atunci când primește același parametru de intrare, returnează întotdeauna aceeași valoare.

Descriere

În timp ce în matematică toate funcțiile sunt referențial transparente, în programare nu este cazul. De exemplu, o funcție care nu ia parametri și returnează introducerea tastaturii oferă o valoare care se modifică întotdeauna în funcție de tasta apăsată și, prin urmare, apeluri multiple către aceeași funcție, cu exact aceeași listă de parametri (în acest caz o listă goală), pot oferi valori diferite.

Un alt exemplu, mai puțin evident, dar foarte semnificativ, este cel al unei funcții care utilizează o variabilă globală (adică accesibilă din întreaga aplicație) ca suport pentru a calcula valoarea care trebuie returnată. Deoarece această variabilă nu este transmisă ca parametru fix, ci poate fi schimbată în timpul apelului, valorile returnate de funcție pot fi diferite chiar dacă toți parametrii trecuți sunt aceiași. Trebuie remarcat, totuși, că atunci când este adoptat stilul de programare funcțională pură, chiar și o funcție care utilizează variabile globale poate fi transparentă referențial, întrucât în ​​acest tip de programare nu este permisă modificarea valorii acestor variabile.

Utilizarea transparenței referențiale are marele avantaj de a permite programatorului să poată conta pe un comportament unic al funcțiilor pe care le implementează, protejat de alte acțiuni externe, nu întotdeauna previzibile a priori. Acest lucru ajută foarte mult în procesul de testare și depanare , simplifică implementarea algoritmilor , face mai ușoară modificarea și optimizarea programelor fără a le schimba radical structura prin intermediul unui proces numit memoizare .

Unele limbaje de programare folosesc doar funcții de acest tip, cel puțin pentru tot ceea ce nu are nicio legătură cu intrarea / ieșirea.

Cu toate acestea, transparența referențială poate duce, ca o consecință nedorită, la faptul că nu este posibil, atunci când este aplicat, să se facă distincția între referința la o „entitate” și entitatea însăși, o distincție care, pe de altă parte, este ușor de obținut folosind tehnicile normale de programare.