Definitions
Actor |
A threaded object that communicates asynchronously via messages. |
|---|---|
Annotation |
Annotations are attributes that are only useful in a limited context. Outside an annotation's context the annotation should not be visible. Consider an optimizing compiler: The compiler would like to mark every function as either pure functional, or has side effects. This marking would be in the form of a field to hold one of those two values. We do not want this field definition to be included in our function definition because it is not relevant to the programmer. Therefore the marking is an annotation, only visible to the optimizing compiler. In the DBOS, the annotation definition inherits from the base class definition. Annotation is then performed by multiple instantiation. This allows grouping of annotations into logical families. Technically, all inherited class definitions can be seen as annotations if we relax the "limited context" requirement. |
Aspect-Oriented Programming |
AOP is an attempt to make programming easier by enumerating the types of programming actions that can be done orthogonal to the others. See the AspectJ website for more information. AOP is one instance of meta programming. |
Attribute |
An attribute is an object that participates in the definition of a class. The attribute class is abstract, with fields and message handlers being the most common specializations. |
Bit Block |
A bit field of size 2^n. Note that Booleans, bytes, and words are all specializations of this datatype. Bit Blocks are a primitive logical structure for the DBOS. |
Bit Field |
An ordered set of bits. |
Context Variable |
The MSM definition requires that there is no stack, and only one register, called the context variable. |
Continuation |
A point in an executing program (more) |
Contravariant Rule |
With respect to the overriding, or redefinition of functions: If S1 |
Core Table |
One of Record, Table or Field tables |
Covariant Rule |
Like contravariant: If S1 |
Currying |
The process of defining a new program (called the residual) by providing an original program and some default parameters. (more) |
Directed Acyclic Graph (DAG) |
A directed graph without cycles. |
Distant Instance |
B is a distant instance of A if every path of inheritence and instantiation relations between the two consists of at least two instantiation relations. See the Inheritence and Instantiation document. |
Delta-Class |
The paradigm used to store objects in a database is such that only the new fields of an inheriting class are direct attributes of the inheriting class. This class definition, containing only the direct attributes, is referred to as the Delta-Class. E.g. A Customer inherits from Person. A Customer may have an attribute called "Member Since". The "Delta-Class" or "Delta-Customer" is a class that consists of only the "Member Since" attribute. |
Distant Instance |
Instances of instances are usually distant instances of the original object. In formal terms, given A, B
and C, where A |
Extension |
An extended object means that the object is an instance of more then one class. To extend an object is to make it an instance of yet another class. I extended the object class with the Print function instance. |
Field |
A field belongs to a class definition and defines the variables that exist for any instance of the class. |
Frame |
The space used by an executing function to store temporary variables. |
Function |
The description of what to do. Source code, the internal representation of the parse tree, and the compiled code are all forms of the same description. There are two specializations, handlers and instructions. |
Generic Function |
A generic function delegates to a set of simpler functions based on parameter type. Technically this can be implemented with a case statement testing the parameter types. Semantically it is easier to take advantage of intuitive covariant function specialization rules. |
Functor |
A function that maps a set of objects, and methods on those objects, to another set of objects and preserving method meaning (technically, perserving morphisms). C++ templates and generics can be seen as functors: mapping abstract objects and methods to concrete versions. |
Observable (attribute) |
If it can be measured, then it is observable. The few things that not observable are probably figments of our imagination. Things like souls, the number of angels on a pinhead, etc. The word observable does not preclude undescribable. There are many observables that are not describable yet. A persons face, to the level of uniqueness, is one of them. |
Handler |
Handlers are functions that are attributes, and define the actions that can be performed by objects. Commonly called methods. |
Hard |
"Hard" is used in reference to the concepts and programs outside the DBOS |
Hard Code |
Code that must exist outside the DBOS to support the DBOS |
Instruction |
An object that is a stand-alone function but is not a handler for an object. |
Lazy Evaluation |
Lazy Evaluation is a composite of both Normal Order Evaluation (delaying evaluation until the results, if ever, are needed) and Sharing (caching precomputed results). Normal Order Evaluation involves keeping/making a data structure (sometimes like a continuation called a "thunk") to represent the required evaluation instead of doing the calculation itself. (more) |
Long Path |
A simple path that is not a sub-path of any other simple path. |
Meta Object Protocol (MOP) |
A standard library or interface to view and/or change class decriptions. Java's MOP allows only viewing of classes. cLisp and Smalltalk's MOP are both interactive, but are obfusicated by implementation details. DBOS has a very clean MOP. |
Method |
see Handler |
Migration |
Migration is the act of moving a program (a contract) from one environment (another contract) to another. |
Mixin |
Mixins are any construct that use multiple inheritence concepts to implement annotation |
Multimethod |
A method consisting of many paramter sensitive implementations. (more) |
Object Code |
Code in the Object Layer has unique syntax and semantics compared to other languages. |
Object Layer |
The layer of abstraction where everything is an object. Object Code is used. |
Object Set |
A table that contains the keys of all objects. This table does not have to physically exist. |
Partial Evaluation |
The act of defining a new (hopefully faster) function given an original function and a set of constraints on parameters. (more) |
Primitive Table |
A table that has no fields when manipulated by the Table Layer, but stores strings, integers, Boolean or float data types. |
Procedure |
An Instruction that executes on a message with no parameters. The procedure's entire definition is within itself. |
Project |
Projects are also known as namespaces, domains, contexts or worlds. It tracks sets of objects that are relevant to the current human scope. A garbage collector acts on the Universal project to remove unused obects; the same GC can identify useless objects in your project. |
Prototype |
An object that specifically exists to be copied to create other objects. |
QuasiQuote |
Parametric quotation, or more specifically macros. A kind of generics on source code. A specialization of templates. |
Recursive Type |
A type that is defined in terms of itself, e.g. Tree := int || (Tree Tree) |
Refactoring |
Refactoring is the act of altering code without changing the functionality of the application. The primary use of refactoring is to make the code simpler and easier to understand. |
Reflective |
A thing is reflective if it describes itself. There are many different types of reflection: recursion, class reflection and code reflection to name a few. |
Template |
A parametric datastructure interface. See the Template document |