In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. The programming paradigm driven by reflection is called reflective programming.

PropertyValue
p:abstract
  • In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. The programming paradigm driven by reflection is called reflective programming. In most modern computer architectures, program instructions are stored as data - hence the distinction between instruction and data is merely a matter of how the information is treated by the computer and programming language. Normally, 'instructions' are 'executed' and 'data' is 'processed'; however, in some languages, programs can also treat instructions as data and therefore make reflective modifications. Reflection is most commonly used in high-level virtual machine programming languages like Smalltalk and scripting languages, and less commonly used in manifestly typed and/or statically typed programming languages such as Java and C, where it may not be possible at all. Reflection is also known as self-modifying code especially at the machine code and assembly language level. (en)
  • En informática, reflexión (o reflexión computacional) es la capacidad de un programa de ordenador para observar y opcionalmente modificar su estructura de alto nivel. Normalmente, la reflexión es dinámica o en tiempo de ejecución, aunque algunos lenguajes de programación permiten reflexión en tiempo de compilación o estática. Es más común en lenguajes de programación de alto nivel ejecutándose sobre una máquina virtual, como Smalltalk ó Java, y menos común en lenguajes de programación de bajo nivel como C. En un sentido más amplio, la reflexión es una actividad computacional que razona sobre su propia computación. Cuando el código fuente de un programa se compila, normalmente se pierde la información sobre la estructura del programa conforme se genera el código de bajo nivel (normalmente lenguaje ensamblador). Si un sistema permite reflexión, se preserva la estructura como metadatos en el código generado. Dependiendo de la implementación, el código con reflexión tiende a ser más lento que el que no lo tiene. En los lenguajes que no distiguen entre tiempo de ejecución y tiempo de compilación (como las distintas variantes de Lisp), no hay diferencia entre compilación o interpretación de código y reflexión. (es)
  • In der Programmierung bedeutet Reflexion (engl. reflection) bzw. Introspektion, dass ein Programm seine eigene Struktur kennt und diese, wenn nötig, modifizieren kann. Auf unterster Ebene kann Maschinencode im RAM, der von einem Mikroprozessor ausgeführt wird, als reflexiv bezeichnet werden. Ein solches Programm ist dazu in der Lage, seine Anweisungen wie Daten zu behandeln und kann deshalb seine Struktur analysieren und verändern. Reflexion wird häufig von Hochsprachen wie Java und Smalltalk unterstützt, die in einer virtuellen Maschine ausgeführt werden. Eine wichtige Rolle spielt Reflexion im Zusammenhang mit typensicherer Programmierung, aber auch in Fragen der Persistenz (persistente Datenhaltung von Objekten und deren Beziehungen). Reflexion ermöglicht es bei objektorientierter Programmierung beispielsweise, zur Laufzeit Informationen über Klassen oder deren Instanzen abzufragen. Bei einer Methode sind das unter anderem deren Sichtbarkeit, der Datentyp des Rückgabewertes oder der Typ der Übergabeparameter. Die Umsetzung der Abfragemöglichkeiten ist sprachspezifisch. Für die Realisierung der Reflexion ist das Speichern von Metainformation im Binärcode des Programms notwendig. Bei interpretierenden Programmiersprachen liegt zur Ausführungszeit der ursprüngliche Programmcode vor, was neben dem Zugriff auf die Strukturinformation (Methodendeklaration) auch den Zugriff auf die Implementierung ermöglicht. Beispiele dafür sind Lisp und Python. Aber auch Java und alle Sprachen für Verwendung mit dem .NET-Framework, wie z.B. C#, VB.NET oder IronPython, da das .NET Framework von sich aus Reflexion zur Verfügung stellt und alle Sprachen, die das .NET-Framework verwenden, laut CLS (Common language specification) die entsprechenden Informationen als Metadaten speichern müssen. Die Ausführungsgeschwindigkeit von Code per Reflexion ist langsamer als die von statischem Code. Dies liegt u.a. an den Stringvergleichen der entsprechenden Namen der gewünschten Methoden, Eigenschaften, usw. mit den Einträgen in den Metadaten. Jedoch bietet Reflexion eine sehr hohe Laufzeitflexibilität, da Code dynamisch aufgerufen werden kann, neue Instanzen erstellt oder sogar Typen und Objekte dynamisch neu strukturiert werden können. (de)
  • En programmation informatique, la réflexion est la capacité d'un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par exemple ses objets) lors de son exécution. (fr)
  • In informatica, la riflessione o reflection è la capacità di un programma di eseguire elaborazioni che hanno per oggetto il programma stesso, e in particolare la struttura del suo codice sorgente. Un programma Java in esecuzione, per esempio, può esaminare le classi da cui è costituito, i nomi e le signature dei loro metodi, e così via. Il supporto per la reflection costituisce una delle più notevoli innovazioni di Java, che deriva da una tradizione di linguaggi (C, C++) in cui tutte le informazioni di tipo vengono consumate dal compilatore, al punto che il programma in esecuzione non ha neppure nozione di come la propria memoria sia suddivisa in variabili. La riflessione in generale può anche consentire a un programma di modificare dinamicamente la propria struttura. Se il package Java "java.lang.reflect" è principalmente dedicato agli strumenti che consentono a un programma di estrarre informazioni sulla propria struttura, altri meccanismi del linguaggio (in particolare il classloading) consentono anche di esercitare un certo controllo su tale struttura. Per esempio, in Java è tecnicamente possibile costruire applicazioni che sono in grado di applicare a sé stesse pacchetti di aggiornamento durante l'esecuzione, sostituendo dinamicamente parti del proprio codice. (it)
  • 情報工学においてリフレクション (reflection) とは、プログラムの実行過程でプログラム自身の構造を読み取ったり書き換えたりする技術のことである。通常リフレクションというと動的(実行時)リフレクションのことを指すが、静的(コンパイル時)リフレクションをサポートするプログラミング言語もある。リフレクションはSmalltalk、Java、.NET Frameworkのような仮想機械やインタプリタ上で実行されることを想定した言語でサポートされることが多く、C言語のような機械語として出力されることを想定した言語でサポートされることは少ない。 一般に、リフレクションとはオブジェクトがそれ自身の構造や計算上の意味を取得することを可能にするものである。リフレクションによるプログラミングパラダイムをリフレクティブプログラミング (reflective programming) という。 通常、プログラムのソースコードがコンパイルされると、プログラムの構造などの情報は低レベルコード(アセンブリ言語など)に変換される過程で失われてしまう。リフレクションをサポートする場合、そのような情報は生成されるコードの中にメタデータとして保存される。 LISPやForthなど実行時とコンパイル時の区別のない言語では、コードの解釈とリフレクションとの間に違いはない。 (ja)
  • In de informatica is reflectie het proces waarbij een computerprogramma zijn eigen structuur en gedrag kan observeren en aanpassen. Programmeren via reflectie wordt reflectief programmeren genoemd. Op het laagste niveau kun je machinecode op een reflectieve manier behandelen omdat het onderscheid tussen instructies en data een kwestie is van hoe de computer deze gebruikt. Normaal worden instructies uitgevoerd en wordt data bewerkt, maar een programma kan instructies ook als data beschouwen en zo reflectieve aanpassingen maken. Reflectie komt het meeste voor in hogere programmeertalen zoals Smalltalk en in mindere mate in lagere programmeertalen. (nl)
  • W informatyce mechanizm refleksji to proces, dzięki któremu program komputerowy może być modyfikowany w trakcie działania w sposób zależny od własnego kodu oraz od zachowania w trakcie wykonania. Paradygmat programowania ściśle związany z mechanizmem refleksji to programowanie refleksyjne. Mechanizm ten jest częściej spotykany w językach wysokiego poziomu, zwykle opartych o maszynę wirtualną. (pl)
  • Reflexão computacional, ou simplesmente reflexão, no contexto da ciência da computação, é a capacidade de um programa de observar ou até mesmo modificar a sua estrutura ou comportamento. Tipicamente, o termo reflexão refere-se à reflexão dinâmica ou em tempo de execução, embora muitas linguagens suportem reflexão estática ou em tempo de compilação. A reflexão é mais comum em linguagens alto nível, como SmallTalk e menos comum em linguagens de mais baixo nível como o C. Geralmente, reflexão é a atividade numa computação que permite que um objeto obtenha informações sobre sua estrutura e sobre os motivos de sua computação. O paradigma de programação por trás dessa capacidade é chamado programação reflexiva. Quando o código fonte de um programa é compilado, a informação sobre sua estrutura normalmente se perde quando o código de baixo nível (tipicamente em assembly) é produzido. Já num sistema que suporta reflexão, essa informação é preservada como metadados, anexados ao código gerado. (pt)
  • Рефлекси́я (синоним интроспекция, ) — механизм языка программирования, позволяющий во время выполнения исследовать и изменять структуру программы.Категория:Концепции языков программирования (ru)
  • 在计算机科学中,反射是指一种特定类型的计算机程序能够在运行时以一种依赖于它的代码的抽象特性和它的运行时行为的方式被更改的特性。用比喻來說,那種程式能夠"觀察"並且修改自己的行為。 (zh)
p:hasPhotoCollection
p:package
  • java.lang.reflect (en)
p:reference
p:wikiPageUsesTemplate
p:wikipage-de
p:wikipage-es
p:wikipage-fr
p:wikipage-it
p:wikipage-ja
p:wikipage-nl
p:wikipage-pl
p:wikipage-pt
p:wikipage-ru
p:wikipage-zh
rdfs:comment
  • In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. The programming paradigm driven by reflection is called reflective programming. (en)
  • En informática, reflexión (o reflexión computacional) es la capacidad de un programa de ordenador para observar y opcionalmente modificar su estructura de alto nivel. (es)
  • In der Programmierung bedeutet Reflexion (engl. reflection) bzw. Introspektion, dass ein Programm seine eigene Struktur kennt und diese, wenn nötig, modifizieren kann. (de)
  • En programmation informatique, la réflexion est la capacité d'un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par exemple ses objets) lors de son exécution. (fr)
  • In informatica, la riflessione o reflection è la capacità di un programma di eseguire elaborazioni che hanno per oggetto il programma stesso, e in particolare la struttura del suo codice sorgente. (it)
  • 情報工学においてリフレクション (reflection) とは、プログラムの実行過程でプログラム自身の構造を読み取ったり書き換えたりする技術のことである。通常リフレクションというと動的(実行時)リフレクションのことを指すが、静的(コンパイル時)リフレクションをサポートするプログラミング言語もある。リフレクションはSmalltalk、Java、.NET Frameworkのような仮想機械やインタプリタ上で実行されることを想定した言語でサポートされることが多く、C言語のような機械語として出力されることを想定した言語でサポートされることは少ない。 (ja)
  • In de informatica is reflectie het proces waarbij een computerprogramma zijn eigen structuur en gedrag kan observeren en aanpassen. Programmeren via reflectie wordt reflectief programmeren genoemd. (nl)
  • W informatyce mechanizm refleksji to proces, dzięki któremu program komputerowy może być modyfikowany w trakcie działania w sposób zależny od własnego kodu oraz od zachowania w trakcie wykonania. Paradygmat programowania ściśle związany z mechanizmem refleksji to programowanie refleksyjne. (pl)
  • Reflexão computacional, ou simplesmente reflexão, no contexto da ciência da computação, é a capacidade de um programa de observar ou até mesmo modificar a sua estrutura ou comportamento. Tipicamente, o termo reflexão refere-se à reflexão dinâmica ou em tempo de execução, embora muitas linguagens suportem reflexão estática ou em tempo de compilação. A reflexão é mais comum em linguagens alto nível, como SmallTalk e menos comum em linguagens de mais baixo nível como o C. (pt)
  • Рефлекси́я (синоним интроспекция, ) — механизм языка программирования, позволяющий во время выполнения исследовать и изменять структуру программы.Категория:Концепции языков программирования (ru)
  • 在计算机科学中,反射是指一种特定类型的计算机程序能够在运行时以一种依赖于它的代码的抽象特性和它的运行时行为的方式被更改的特性。用比喻來說,那種程式能夠"觀察"並且修改自己的行為。 (zh)
rdfs:label
  • Reflection (computer science) (en)
  • Reflexión (informática) (es)
  • Reflexion (Programmierung) (de)
  • Réflexion (informatique) (fr)
  • Riflessione (informatica) (it)
  • リフレクション (情報工学) (ja)
  • Reflectie (informatica) (nl)
  • Mechanizm refleksji (pl)
  • Reflexão (programação) (pt)
  • Отражение (программирование) (ru)
  • 反射 (计算机科学) (zh)
skos:subject
foaf:page
p:disambiguates
p:paradigm
p:redirect
p:typing