Principiile de bază ale programului de reflecție și introspecție

De multe ori în timpul programului, avem uneori nevoie de informații cu privire la datele - de exemplu, de tipul lor sau dacă sunt de exemplu a unei clase (OOP). Pe baza acestor cunoștințe, trebuie să-și petreacă pe datele, unele operații sau chiar să le schimbe - dar tipul necesar de date nu putem fi! Dacă nu înțelegeți, nu vă faceți griji - vom înțelege în detaliu pe tot parcursul. Tot ce am descris aici - este o ilustrare a obiectivelor celor două oportunități care sunt prezente în aproape orice limbaj de programare moderne: introspecție și reflecție.

introspecție

Introspecția - capacitatea programului de a explora tipul sau proprietățile unui obiect în timpul rulării. Așa cum am menționat, s-ar putea întreba ce tip de obiect, indiferent dacă acesta este un exemplu. Unii chiar vă permit să învețe limba ierarhiei moștenire a obiectului. Posibilitatea de introspectie sunt în limbi, cum ar fi Ruby, Java, PHP, Python, C ++ si altele. În general, instrospektsiya - este fenomen foarte simplu și foarte puternic. Iată câteva exemple de utilizare instrospektsii:

Cu toate acestea, introspecție - nu este o reflecție; Reflecție ne permite să folosim principiile cheie de introspecție și de a face lucrurile cu adevarat puternice cu codul nostru.

Din același motiv de reflecție este mai ușor de implementat într-un limbaj interpretat, pentru că atunci când funcțiile, obiectele și alte structuri de date sunt create și invocate în timpul rulării, utilizați un sistem de alocare de memorie. limbi Interpretat oferă de obicei un sistem implicit, și pentru compilare au nevoie de compilator suplimentare și interpret, care monitorizează corectitudinea reflexie.

Cred că am spus multe despre definiția de reflecție, dar sensul este încă poartă puțin. Să ne uităm la exemplele de cod de mai jos (cu și fără reflecție), fiecare dintre care creează un obiect al clasei Foo și invocă salut.