It is increasingly common for languages to treat programming concepts as “first class.” For example, reflection in Java and C# is a solution for making types first class. A type is not a black box, hard coded by a programmer that is only used to create objects. It is a value that can be inspected and manipulated. Functions are also commonly first class, in that they can be assigned to variables, constructed at run time, and be subjected to lambda calculus. Metaobjects are the abstraction of language features into representations that may be constructed, inspected, and manipulated by that same language.
The development environment includes metaobjects for:
within metaobjects for:
all of which can be
There are APIs for each of the items in the following (incomplete) table. The code tier, and the documentation feature (in the software tier), is also accessible through syntax.
|Code Tier||Software Tier||Build Tier|
See also: Strongly Connected Model Of Computation