Warum heißt Reflexion Reflexion statt Selbstbeobachtung?

79

Was ist der Ursprung des Begriffs Reflexion? Es scheint eher eine Selbstbeobachtung zu sein. Warum heißt es nicht so?

Selbstbeobachtung : Ein Blick nach innen; speziell die Handlung oder der Prozess der Selbstprüfung.

Reflexion :

  1. der Akt des Reflektierens oder der Zustand des Reflektierens.
  2. ein Bild; Darstellung; Gegenstück
  3. eine Fixierung der Gedanken auf etwas; sorgfältige Überlegung
  4. ein Gedanke, der in Betrachtung oder Meditation auftritt.
Tvanfosson
quelle
Eigentlich ist das eine interessante Frage. Ich bin mir nicht mehr sicher, ob ich einen Unterschied sehe: p
Johannes Schaub - litb
Definition hinzugefügt, wenn Sie nicht mögen, können Sie es entfernen.
mmcdole
1
Zumindest in TCL scheint es keinen Unterschied zu geben
jk.
@ JohannesSchaub-litb: Dies ist eine unverzichtbare Frage. Ich war kurz davor, es zu veröffentlichen, wenn ich es vorher nicht gefragt habe. Es zeigt nur, wie viel wir im Leben tun, ohne auf die kleinsten Details zu achten.
Veverke

Antworten:

63

Es gibt eine interessante Antwort auf den französischen Wikipedia-Artikel für Reflection ( hier )

Reflexion kann in zwei Teile zerlegt werden:

  • Selbstbeobachtung: Ein Programm kann sich selbst untersuchen.
  • Fürbitte: Ein Programm kann seinen Zustand / seine Bedeutung ändern.

Reflexion ist also eine „stärkere“ Eigenschaft als Selbstbeobachtung. Deshalb sagst du Typ Introspektion , um Typen zur Laufzeit zu kennen (und ihre Änderung ist eine weitere Aktion: Konvertierung / Casting).

EDIT: Eigentlich habe ich gerade gemerkt, dass die erste Antwort genau das war ^^. Zeit, mich vom Stromnetz zu trennen ...

Piotr Lesnicki
quelle
2
Als ich den französischen Wikipedia-Artikel las, wurde mir klar, dass der Begriff "Reflexion" auf Französisch enger mit der Idee der "Reflexivität" verbunden sein kann als auf Englisch - von etwas, das auf sich selbst wirkt. Dies scheint der richtige Weg zu sein, um den Begriff zu verstehen, der für Programmiersprachen gilt.
Jan Hettich
Ich kann immer noch nicht sehen, wie dies die Frage beantwortet: In der Tat hilft Wikipedia bei der Unterscheidung der Typ-Introspektion, indem es sich "damit zufrieden gibt", nur Informationen zu erhalten, ohne sie zu ändern (obwohl dies wiederum genau relevant ist ... wie Oft verwenden wir Reflexion, um Typen unterwegs zu instanziieren - und wo hat sich hier etwas geändert? Wir hatten das neu erstellte Objekt überhaupt nicht. Es ist keine andere Änderung eingetreten, es sei denn, Sie betrachten das "Entstehen" als eine Änderung Die Änderung
betraf
Reflexion ist also ein "Prozess", der mehr Schritte als "Selbstbeobachtung" umfasst. Wo ist das zwingende Argument für Reflexion noch ?! Introspektion als Wort geht Hand in Hand mit dem, was der Begriff in einem Programmierkontext darstellt - während "Reflexion" - auf welche Weise ist der Akt der Reflexion einer Anweisung / eines Typs näher an "Modifizieren" als "Introspektion"?
Veverke
27

Reflexion kommt von der Idee der "Selbstprüfung, Selbstmodifikation und Selbstreplikation", die sich selbst zum Zweck der Veränderung reflektiert. Bei der Programmierung verwenden Sie Reflection, um die Struktur des Programms selbst im Kontext der Verwendung zu untersuchen, anstatt es nur zu untersuchen. Was Sie zurückerhalten, ist eine Darstellung des Programms, mit dem Sie es ändern können, und nicht der Daten, mit denen es arbeitet.

Weitere Informationen finden Sie im Wikipedia-Artikel. .

Tvanfosson
quelle
Du hast seine Frage überhaupt nicht beantwortet. Selbstbeobachtung: Ein Blick nach innen; speziell die Handlung oder der Prozess der Selbstprüfung.
mmcdole
@ Simucal, sorry ich war nicht klarer. Ich habe die Antwort bearbeitet, um anzugeben, dass es sich um eine Prüfung mit Handlungsabsicht handelt.
Tvanfosson
Er hat. Er gibt an, dass der Begriff Reflexion entsprechend der Fähigkeit des Programms verwendet wird, Änderungen durch Modifikation selbst zu reflektieren.
Filip Dupanović
1
@ KRON, meine erste Antwort war nicht so spezifisch.
Tvanfosson
Ich kann immer noch nicht sehen, wie dies die Frage beantwortet: In der Tat hilft Wikipedia bei der Unterscheidung der Typ-Introspektion, indem es sich "damit zufrieden gibt", nur Informationen zu erhalten, ohne sie zu ändern (obwohl dies wiederum genau relevant ist ... wie Oft verwenden wir Reflexion, um Typen unterwegs zu instanziieren - und wo hat sich hier etwas geändert? Wir hatten das neu erstellte Objekt überhaupt nicht. Es ist keine andere Änderung eingetreten, es sei denn, Sie betrachten das "Entstehen" als eine Änderung Die Änderung
betraf
4

Es gibt ein anderes Konzept namens Typ-Introspektion, das sich auf die Fähigkeit bezieht, den Typ eines Objekts zur Laufzeit zu bestimmen.

Bearbeiten: Mir ist klar, dass Ihre Frage sprachunabhängig sein sollte, aber in Java wird Reflexion verwendet, um zu identifizieren, welche Mitglieder ein Objekt hat, während Introspection es Ihnen ermöglicht, zu identifizieren, welche JavaBeans-Eigenschaften ein Objekt hat, weshalb sich die Introspection-Klasse befindet das java.beans-Paket. Ich bin mir nicht sicher, was der genaue Unterschied zwischen den Begriffen in anderen Sprachen sein würde.

Dancavallaro
quelle
4

Der Begriff Reflexion stammt aus Brian Cantwell Smiths Dissertation von 1982, die unter http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf zu finden ist

Was als Reflexion bezeichnet wird, ist oft nur Selbstbeobachtung, dh Zugang zu Metadaten. Smiths Anforderungen an die Reflexion beinhalteten einen Kausalzusammenhang von Metadaten zurück, und dies ist normalerweise die fehlende Komponente. Eine Möglichkeit, sich Reflexion vorzustellen, ist der Zugriff auf die Implementierung und nicht nur die Implementierung einer neuen Instanz einer Berechnung, sondern auch der Zugriff einer Berechnung auf ihre eigene Implementierung. Sicherlich wurde Javas ursprüngliche Reflexions-API falsch benannt, da sie in diesem Sinne nicht reflektierend war.

Ed Puckett
quelle
1

In .Net halte ich den Begriff Reflection für sehr angemessen, da nicht der Typ selbst untersucht wird, sondern das Manifest des Codes, das nur eine Beschreibung ist.

Guge
quelle
1

Reflexion im Sinne der Definitionen 3 und 4 kann introspektiv sein. Das heißt, Selbstbeobachtung ist Reflexion über sich selbst. Ich denke, dass Selbstbeobachtung das bessere Wort für die Code-Analyse ist, weil das Wort spezifischer ist, aber ich denke nicht, dass Reflexion völlig unangemessen ist.

Greg Graham
quelle