В информатике, отражение или рефлексия (синоним интроспекция, англ. reflection) означает процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения. Парадигма программирования, положенная в основу отражения, называется рефлексивным программированием. Это один из видов метапрограммирования [1].
В большинстве современных компьютерных архитектур программные инструкции (код) хранятся как данные. Разница между кодом и данными в том, что выполняя код, компьютеры обрабатывают данные. То есть, 'инструкции' 'выполняются', а 'данные' 'обрабатываются' так, как предписано этими инструкциями. Однако, программы, написанные с помощью некоторых языков, способны обрабатывать собственные инструкции как данные и, таким образом, выполнять рефлексивные модификации. Такие самомодифицирующиеся программы в основном создаются с помощью высокоуровневых языков программирования, использующих виртуальные машины (например, Smalltalk, скриптовые языки). Также рефлексия используется в языках с объявляемыми и/или статическими типами (например, Java, Си, ML, Haskell).
Источник: http://progopedia.ru/ |