Transparență referențială
Transparența referențială este o caracteristică a unor părți ale programelor de calculator. O parte a unui program se numește "transparentă din punct de vedere referențial" dacă poate fi înlocuită cu valoarea pe care o redă fără a schimba comportamentul programului. O funcție transparentă din punct de vedere referențial trebuie să fie pură - trebuie să dea întotdeauna aceeași ieșire dacă primește aceeași intrare și nu trebuie să aibă efecte secundare - părți ale programului care efectuează o altă acțiune decât returnarea unei valori. Opusul transparenței referențiale este opacitatea referențială.
În matematică, toate funcțiile sunt transparente din punct de vedere referențial, deoarece o funcție matematică poate doar să primească valori și să dea o valoare. În programare, acest lucru nu este întotdeauna adevărat - o funcție poate afla, de asemenea, ce zi a anului este sau poate imprima un mesaj pe ecran. Din cauza acestei diferențe, unii oameni folosesc alte denumiri pentru funcții în programare, cum ar fi proceduri.
Transparența referențială permite programatorilor și compilatorilor să se gândească la cod ca la un sistem de rescriere - ceva care ia o expresie și o înlocuiește cu altceva. Acest lucru poate fi de ajutor în mai multe sarcini, cum ar fi:
- Demonstrarea faptului că programul sau codul este corect - că face exact ceea ce trebuie să facă, indiferent de situație.
- Simplificarea unui algoritm.
- Facilitarea modificării codului, asigurându-vă în același timp că acesta face ceea ce trebuie să facă.
- Efectuarea unei execuții mai rapide a codului sau într-un mod care să utilizeze mai puțină memorie.
Există mai multe modalități de a îndeplini ultima sarcină - cele mai cunoscute sunt memoizarea (salvarea răspunsurilor după prima dată), eliminarea subexpresiilor comune (determinarea dacă merită să combinăm două părți ale codului care sunt identice), evaluarea leneșă (găsirea răspunsului doar atunci când codul are cu adevărat nevoie de el) și paralelizarea (lucrul la mai multe probleme în același timp).
Întrebări și răspunsuri
Î: Ce este transparența referențială?
R: Transparența referențială este o caracteristică a unor părți de programe de calculator în care o parte a programului poate fi înlocuită cu valoarea pe care o redă fără a schimba comportamentul programului.
Î: Care este opusul transparenței referențiale?
R: Opusul transparenței referențiale este opacitatea referențială.
Î: Sunt toate funcțiile din matematică transparente din punct de vedere referențial?
R: Da, toate funcțiile din matematică sunt transparente din punct de vedere referențial, deoarece o funcție matematică nu poate decât să primească valori și să dea o valoare.
Î: Cum ajută transparența referențială programatorii și compilatorii?
R: Transparența referențială le permite programatorilor și compilatorilor să se gândească la cod ca la un sistem de rescriere - ceva care ia o expresie și o înlocuiește cu altceva. Acest lucru ajută la sarcini precum demonstrarea corectitudinii programului sau a codului, simplificarea unui algoritm, facilitarea modificării codului, asigurându-se în același timp că acesta face ceea ce trebuie să facă, precum și accelerarea execuției codului sau utilizarea unei cantități mai mici de memorie.
Î: Care sunt unele tehnici utilizate pentru a face codul să ruleze mai repede sau să utilizeze mai puțină memorie?
R: Printre tehnicile utilizate pentru a face codul să ruleze mai repede sau să utilizeze mai puțină memorie se numără memoizarea (salvarea răspunsurilor după prima dată), eliminarea subexpresiilor comune (determinarea dacă merită să combinăm două părți ale codului care sunt identice), evaluarea leneșă (găsirea răspunsului doar atunci când codul are cu adevărat nevoie de el) și paralelizarea (lucrul la mai multe probleme în același timp).
Î: Există vreo diferență între funcțiile din programare în comparație cu cele din matematică?
R: Da, există o diferență între funcțiile din programare în comparație cu cele din matematică -În programare, o funcție ar putea, de asemenea, să afle ce zi a anului este sau să tipărească un mesaj pe ecran, în timp ce acest lucru nu este posibil cu funcțiile matematice.