Рефлексивное программирование


В информатике рефлексивное программирование или рефлексия это способность процесса исследовать, самоанализировать и изменять свою собственную структуру и поведение. [1]

Самые ранние компьютеры были запрограммированы на их родных языках ассемблера , которые по своей сути были рефлексивными , поскольку эти оригинальные архитектуры можно было запрограммировать, определяя инструкции как данные и используя самомодифицирующийся код . Поскольку основная часть программирования переместилась на компилируемые языки более высокого уровня , такие как Algol , Cobol , Fortran , Pascal и C , эта способность к отражению в значительной степени исчезла, пока не появились новые языки программирования с отражением, встроенным в их системы типов. [ нужна ссылка ]

Докторская диссертация Брайана Кантуэлла Смита 1982 года ввела понятие вычислительного отражения в языки процедурного программирования и понятие метакругового интерпретатора как компонента 3-Lisp . [2] [3]

Reflection помогает программистам создавать универсальные программные библиотеки для отображения данных, обработки различных форматов данных, выполнения сериализации или десериализации данных для обмена данными, а также объединения и разделения данных для контейнеров или пакетов обмена данными.

Для эффективного использования отражения почти всегда требуется план: структура проекта, описание кодировки, библиотека объектов, карта базы данных или отношения сущностей.

Отражение делает язык более подходящим для сетевого кода. Например, он помогает таким языкам, как Java , хорошо работать в сетях, предоставляя библиотеки для сериализации, связывания и изменения форматов данных. Языки без отражения, такие как C , должны использовать вспомогательные компиляторы для таких задач, как абстрактная синтаксическая нотация , для создания кода для сериализации и объединения.