Почему отражение называется отражением, а не самоанализом?

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

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

Отражение:

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

person tvanfosson    schedule 09.12.2008    source источник
comment
на самом деле это интересный вопрос. я больше не уверен, я вижу разницу :p   -  person Johannes Schaub - litb    schedule 09.12.2008
comment
Добавлено определение, если вам не нравится, вы можете удалить его.   -  person mmcdole    schedule 09.12.2008
comment
По крайней мере, в TCL разницы нет.   -  person jk.    schedule 07.12.2009
comment
@JohannesSchaub-litb: это обязательный/отличный вопрос. Я был на грани публикации, если не нашел, что об этом спрашивали раньше. Он лишь показывает, как много мы делаем в жизни, не обращая внимания на малейшие детали вокруг.   -  person Veverke    schedule 31.03.2015


Ответы (6)


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

Рефлексию можно разложить на две части:

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

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

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

person Piotr Lesnicki    schedule 09.12.2008
comment
Читая статью во французской Википедии, я понял, что во французском языке термин «отражение» может быть более тесно связан, чем в английском, с идеей рефлексивности — чего-то, что действует само на себя. Кажется, это правильное понимание этого термина применительно к языкам программирования. - person Jan Hettich; 25.12.2010
comment
Я до сих пор не понимаю, как это отвечает на вопрос: действительно, википедия помогает в дифференциации интроспекции типов тем, что удовлетворяется только получением информации, не изменяя ее (хотя опять же, как это точно относится... сколько раз мы используем отражение для создания экземпляров типов на ходу - и так, где здесь произошло изменение? у нас не было вновь созданного объекта в первую очередь, никаких других изменений не произошло, если только вы не считаете возникновение изменением, хотя изменение не было на самом проверяемом предмете (тоже не имело бы особого смысла). - person Veverke; 31.03.2015
comment
Таким образом, рефлексия — это процесс, который включает в себя больше шагов, чем самоанализ. Где еще веский аргумент в пользу рефлексии?! Самоанализ как слово идет рука об руку с тем, что этот термин представляет в контексте программирования - тогда как отражение - каким образом акт отражения инструкции/типа ближе к модификации, чем самоанализ? - person Veverke; 31.03.2015

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

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

person tvanfosson    schedule 09.12.2008
comment
Вы вообще не ответили на его вопрос. Самоанализ: взгляд внутрь себя; в частности, акт или процесс самоанализа. - person mmcdole; 09.12.2008
comment
@ Simucal, извините, я не был более ясным. Я отредактировал ответ, чтобы указать, что это проверка с намерением действовать. - person tvanfosson; 09.12.2008
comment
Он сделал. Он утверждает, что термин «отражение» используется в соответствии со способностью программы отражать изменения, изменяя себя. - person Filip Dupanović; 09.12.2008
comment
@kRON, мой первоначальный ответ не был таким конкретным. - person tvanfosson; 09.12.2008
comment
Я до сих пор не понимаю, как это отвечает на вопрос: действительно, википедия помогает в дифференциации интроспекции типов тем, что удовлетворяется только получением информации, не изменяя ее (хотя опять же, как это точно относится... сколько раз мы используем отражение для создания экземпляров типов на ходу - и так, где здесь произошло изменение? у нас не было вновь созданного объекта в первую очередь, никаких других изменений не произошло, если только вы не считаете возникновение изменением, хотя изменение не было на самом проверяемом предмете (тоже не имело бы особого смысла). - person Veverke; 31.03.2015

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

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

person Ed Puckett    schedule 27.05.2013

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

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

person dancavallaro    schedule 09.12.2008

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

person Guge    schedule 07.12.2009

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

person Greg Graham    schedule 07.12.2009