Mechanizm refleksji: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
PG (dyskusja | edycje)
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]].