Reflection: a method or means to let a system maintain information about itself (meta-information), and to use such to alter its behavior, to change, adapt; something acting upon itself. This is higher-order behavior than strict imperative models. More concretely, reflection is also an ability (for users) to modify software (even system software) of the underlying system during runtime, without leaving that system. Most programs written today are not reflective. With non-reflective systems, if one modifies (edits) any source code, one must recompile, and then restart it, thus leaving the system. With a reflective system, one can modify code (even kernel code), recompile, and replace the running system code as the system runs, with no restarting, rebooting, or often even leaving the editor. This allows and promotes more dynamic, fluid, productive work style. Such runtime modifiability is similar to what an extensible operating system (OS) allows, which can be viewed as a limited type of (application-level) OS reflectivity. Reflection, where program = data, simplifies writing compilers, interpreters, optimizers, theorem provers, and defining higher order functions. Reflective OSs are those that take advantage of such traits and abilities, to various ends. Many exist. Some are used daily, in working systems, but they do not dominate, and are not mainstream, yet. They are a very interesting and promising class of program. Some are found in research, where they form a fascinating branch of computer science. Some experts say they will grow more important in the future as computer power rises, programs grow more complex, and artificial intelligence properties are grafted onto, or blended with, OSs. Or, like so many other technologies, they may remain more marginal, used only in certain areas and applications. On this page, OSs are arranged in three groups and levels: 1) Top group: types or classes of OSs. 2) Middle group: OSs for which there are more than one instance of an OS of this name/type, an OS family. 3) Bottom group: specific OSs, individual instances; there is only one OS of this name/type.
Last update:January 2, 2007 at 19:56:55 UTC