Чому рефлексію називають рефлексією, а не самоаналізом?


79

Яке походження терміна рефлексія? Це більше схоже на самоаналіз. Чому це не так називається?

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

Відображення :

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

насправді це цікаве питання. я вже не впевнений, бачу якусь різницю: p
Йоганнес Шауб - litb

Додано визначення, якщо вам не подобається, ви можете його видалити.
mmcdole

1
Принаймні в TCL, здається, немає різниці
jk.

@ JohannesSchaub-litb: це питання, яке потрібно задати / відмінне. Я просто був на межі опублікувати його, якщо не знайшов, про що просили раніше. Це лише показує, наскільки ми робимо щось у житті, не звертаючи уваги на найменші деталі навколо.
Веверке

Відповіді:


63

Існує цікава відповідь у французькій статті Вікіпедії для роздумів ( тут )

Відображення можна розкласти на дві частини:

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

Отже, відображення - це «сильніша» властивість, ніж самоаналіз. Ось чому ви кажете самоаналіз типу для можливості знати типи під час виконання (а їх зміна - це інша дія: перетворення / кастинг).

EDIT: насправді я щойно зрозумів, що першою відповіддю було сказати саме те ^^. Час відключити себе від мережі ...


2
Читаючи статтю у французькій Вікіпедії, я зрозумів, що у французькій мові термін "відображення" може бути більш тісно пов'язаний, ніж в англійській мові, з ідеєю "рефлексивності" - чогось, що діє на себе. Здається, це правильний спосіб зрозуміти цей термін, оскільки він застосовується до мов програмування.
Ян Хеттіч,

Я досі не можу зрозуміти, як це відповідає на запитання: справді, wikipedia допомагає у диференціації самоаналізу типу тим, що вона "задовольняється" лише отриманням інформації, не змінюючи її (хоча знову ж таки, як це саме актуально ... як багато разів ми використовуємо рефлексію, щоб створювати типи на ходу - і отже, де тут відбулися зміни? у нас спочатку не було новоствореного об'єкта, жодна інша зміна не відбулася, якщо ви не вважаєте зміну "появою", хоча зміни не
стосувались

Отже, рефлексія - це "процес", який включає більше етапів, ніж "самоаналіз". Де все-таки переконливий аргумент на користь роздумів?! Самоаналіз як слово поєднується з тим, що цей термін представляє в контексті програмування - тоді як "відображення" - яким чином акт відображення інструкції / типу наближається до "модифікації", ніж "самоаналіз"?
Веверке

27

Рефлексія походить від ідеї "самоперевірки, самомодифікації та самореплікації", рефлексії над своїм я з метою змін. У програмуванні ви використовуєте рефлексію, щоб дослідити структуру самої програми в контексті її використання, а не просто вивчити. Що ви повертаєте, це подання програми, яку ви можете використовувати для її модифікації, а не дані, на яких вона працює.

Більше інформації можна знайти в статті Вікіпедії. .


Ви взагалі не відповіли на його запитання. Самоаналіз: погляд всередину; зокрема, акт або процес самоперевірки.
mmcdole

@Simucal, вибачте, я не був більш чітким. Я відредагував відповідь, вказавши, що це експертиза з наміром дії.
tvanfosson

Він зробив. Він заявляє, що термін "відображення" використовується відповідно до здатності програми відображати зміни, змінюючи себе.
Філіп Дупанович

1
@kRON, моя початкова відповідь була не такою конкретною.
tvanfosson

Я досі не можу зрозуміти, як це відповідає на запитання: справді, wikipedia допомагає у диференціації самоаналізу типу тим, що вона "задовольняється" лише отриманням інформації, не змінюючи її (хоча знову ж таки, як це саме актуально ... як багато разів ми використовуємо рефлексію, щоб створювати типи на ходу - і отже, де тут відбулися зміни? у нас спочатку не було новоствореного об'єкта, жодна інша зміна не відбулася, якщо ви не вважаєте зміну "появою", хоча зміна не стосується самого обстежуваного суб’єкта (також не мало б сенсу)
Веверке

4

Існує ще одне поняття, що називається самоаналізами типів, яке стосується здатності визначати тип об’єкта під час виконання.

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


4

Цей термін відображається в дисертації Брайана Кантвелла Сміта 1982 р., Яку можна знайти за посиланням http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf

Те, що стали називати рефлексією, часто є просто самоаналізом, тобто доступом до метаданих. Вимоги Сміта до роздумів включали причинно-наслідковий зв'язок із метаданими назад, і це, як правило, відсутній компонент. Одним із способів уявити собі відображення є доступ до реалізації, причому не просто реалізація якогось нового екземпляра обчислення, а доступ обчислення до його власної реалізації. Звичайно, оригінальний api-файл для відображення Java був неправильно названий, оскільки в цьому сенсі він не відображав.


1

У .Net я думаю, що термін Reflection дуже доречний, оскільки досліджується не сам тип, це маніфест коду, який є лише описом.


1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.