Mechanizm refleksji: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
Anulowanie wersji 63598152 autorstwa Benedykt Gierosławski (dyskusja) nie należy mnożyć przykładów, Wikipedia nie służy do tego Znacznik: Anulowanie edycji |
m wikizacja, drobne merytoryczne |
||
Linia 2:
Refleksja pozwala w łatwy sposób zarządzać kodem tak, jakby był danymi. Używa się jej najczęściej do zmieniania standardowego zachowania już zdefiniowanych metod lub funkcji, a także do tworzenia własnych konstrukcji semantycznych modyfikujących język. Z drugiej strony kod wykorzystujący '''refleksję''' jest mniej czytelny i nie pozwala na sprawdzenie poprawności składniowej i semantycznej w trakcie kompilacji (niewygodne śledzenie błędów).
Ciekawym przykładem mechanizmu refleksji są języki programowania, w których każdy element kodu źródłowego reprezentowany jest strukturami danych dostępnymi dla programisty. Nazywamy je językami [[Homoikoniczność|homoikonicznymi]], a kod źródłowy ich programów jest w istocie danymi. Od decyzji programisty zależy, które jego fragmenty będą wartościowane, a które traktowane jak wartości stałe niewymagające obliczeń. Proces ten może być wielokierunkowy, np. część kodu źródłowego może zostać potraktowana jak dane, przekształcona, a następnie znów wartościowana – w ten sposób działają tzw. makra składniowe w dialektach języka [[Lisp]].
Mechanizm ten jest częściej spotykany w [[język wysokiego poziomu|językach wysokiego poziomu]], zwykle opartych na [[maszyna wirtualna|maszynie wirtualnej]].
|