Почему отражение называется отражением, а не самоанализом? - PullRequest
77 голосов
/ 09 декабря 2008

Каково происхождение термина отражение? Это больше похоже на самоанализ. Почему это не называется?

Самоанализ : взгляд внутрь; в частности, акт или процесс самопроверки.

Отражение

  1. акт отражения или состояние отражения.
  2. изображение; представление; аналог
  3. закрепление мыслей на чем-либо; тщательное рассмотрение
  4. мысль, возникающая во время размышления или медитации.

Ответы [ 6 ]

60 голосов
/ 09 декабря 2008

Есть интересный ответ на французскую статью в Википедии для Reflection ( здесь )

Отражение можно разложить на две части:

  • самоанализ: программа может проверить себя.
  • ходатайство: программа может изменить свое состояние / значение.

Таким образом, рефлексия является «более сильным» свойством, чем самоанализ. Вот почему вы говорите самоанализ типа за способность знать типы во время выполнения (и их изменение - другое действие: преобразование / приведение).

РЕДАКТИРОВАТЬ: на самом деле я только что понял, что первый ответ говорил именно это ^^. Время отключить себя ...

27 голосов
/ 09 декабря 2008

Отражение происходит от идеи «самопроверки, самоизменения и самовоспроизведения», размышления о себе с целью изменения. В программировании вы используете отражение, чтобы исследовать структуру самой программы в контексте ее использования, а не просто исследовать ее. То, что вы получите, - это представление программы, которую вы можете использовать для ее изменения, а не данные, с которыми она работает.

Более подробную информацию можно найти в статье в Википедии. .

4 голосов
/ 27 мая 2013

Термин «отражение» взят из докторской диссертации Брайана Кэнтвелла Смита 1982 года, которую можно найти по адресу http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf

То, что стало называться рефлексией, часто является просто самоанализом, то есть доступом к метаданным. Требования Смита к рефлексии включали причинное соединение из метаданных и обратно, и это, как правило, недостающий компонент. Один из способов представить отражение - это доступ к реализации, а не просто реализация какого-то нового экземпляра вычисления, а доступ к его собственной реализации. Конечно, исходный Java-интерфейс отражения API был назван неправильно, так как он не был отражающим в этом смысле.

4 голосов
/ 09 декабря 2008

Существует еще одно понятие, называемое самоанализом типов, которое относится к возможности определять тип объекта во время выполнения.

edit: я понимаю, что ваш вопрос был задуман как не зависящий от языка, но в Java рефлексия используется для определения того, какие члены есть у объекта, тогда как самоанализ позволяет определить, какие свойства JavaBeans имеет объект, поэтому самоанализ класс находится в пакете java.beans. Я не уверен, какова будет точная разница между терминами в других языках,

1 голос
/ 07 декабря 2009

Отражение, в смысле определений 3 и 4, может быть интроспективным. То есть самоанализ - это отражение самого себя. Я думаю, что интроспекция - это лучшее слово для анализа кода, потому что это слово более конкретное, но я не думаю, что рефлексия совершенно неуместна.

1 голос
/ 07 декабря 2009

В .Net я думаю, что термин Reflection очень уместен, поскольку рассматривается не сам тип, а манифест кода, который является только описанием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...