Association

From Organic Design
Jump to: navigation, search
Glossary.svg This page describes a concept which is part of our glossary
An associative array (also map, hash, dictionary, finite map, lookup table, and in query-processing an index or index file) is an abstract data type composed of a collection of keys and a collection of values, where each key is associated with one value. The operation of finding the value associated with a key is called a lookup or indexing, and this is the most important operation supported by an associative array. The relationship between a key and its value is sometimes called a mapping or binding. For example, if the value associated with the key "bob" is 7, we say that our array maps "bob" to 7. Associative arrays are very closely related to the mathematical concept of a function with a finite domain. As a consequence, a common and important use of associative arrays is in memoization.

Nodal associations

From the perspective of a programmer using an associative array, it can be viewed as a generalization of an array: While a regular array maps integers to arbitrarily typed objects like integers, strings, pointers and objects, an associative array maps arbitrarily typed objects to arbitrarily typed objects.

In the nodal model, the node is the only kind of entity that exists, so all the keys and values contained by any node must both be node references. Nodes reside in a lower-level data structure called list space and uses a method called binary traversal which is what enables this associative-array-like functionality.

  • In the nodal model, associations are not ordered, ie there is no atomic process which can iterate through the associations
  • See example nodal structures for diagrams of various nodal structures.
  • It is possible for a number of keys to have the same value, effectively allowing the same instance to be in many places at the same time

The null association

Due to the way that list space works, there arrises the possibility of a so-called null-association which involves a zero-length traversal. There is however nothing inherently special about the null association apart from the fact that it involves the least processing time, so it makes sense that the most commonly used association be the null association.

The "root" association

The root node which receives all executional quanta for Nodal Reduction within any peer. Root has the GUID and internal runtime index of zero. There's been a lot of difficulty working out the conceptual (nodal) structure of this root layer, it currently consists of three abstraction layers, the beyond is what larger things this peer is currently part of and supporting with reduction energy. The within layer defines all the structure of the current dynamic state in terms of all the processes which make up each infinitesimal moment. The middle layer is the event model which consists of regular cycles of activity and spontaneous indeterminate events.

The main conceptual problem over the last few months involves tying the identity concept into this structure. Identity is as fundamental as events (storage & distribution, interface, schedule etc). If events is considered as the time aspect, then Identity fills the role of space, and the root node itself can be considered as the energy of change (Δ).

Although Identity is dealing with an abstract and potentially infinite resource (the field of integers), it is still a generic organisation like all the other event-based ones. Identity can be thought of as stock-management, where the stock being dealt with is the integer GUID's used by all nodes.

The "code" association

A pseudo node-value (one which is not used as a node reference). All values in list space must be integers, but they can be used as indexes for things other than referencing nodes. In this case the index is used to obtain a pointer to an executbale function which will be executed by the nodal reduction process instead of passing execution into the nodes focus.

The "init" association

Nodal processes work like services or daemon which are started or stopped as they're needed within various contexts. In the nodal model the "init" (initialise) association of a node is hooked in to nodal reduction within the context of where its needed. The "init" and "exit" nodes are hooked in by events such as schedule which determine the periods of time which roles are active for, and also when nodal workflows are passed from one role to another (ie the "exit" node of the current role and the "init" node of the next are hooked in to nodal reduction). Also the "main" association is a general concept representing the ongoing running system aspect of a role during its active periods.

The "up" association

The association maintained by nodal reduction to allow runtime access to a nodes class (father, yang parent). This association leads to the context in which the currently executing function resides along with all the other functionality available to the class.

The "down" association

In nodal reduction, a node's the "down" association leads to the context in which the node is currently working and which supplies the energy and resources the nodes needs to carry out its work. This can also be considered to be the node's current focus or current working directory. It is the Yin parent, or mother of the node, and is one of the fundamental nodal directions.

The "left" and "right" associations

Nodal loops and threads are linked lists composed of "left" and "right" associations, which give rise to order, sequence and time in the nodal model. The nodal reduction algorithm traverses this and the other nodal direction associations to organise the execution of nodal processes.

The "first" association

Nodes can have this optional association to point to the first item in their loop.

The "last" association

Nodes can have this optional association to point to the last item in their loop.

The "main" association

The "main" association is a general concept representing the ongoing running system aspect of a nodal role during its active periods as determined by the "init" and "exit" associations.

The "desktop" association

In the peer interface, a desktop node has the same properties as a normal layer, but is the root graphical item of an output device and so it contains other layers, but is not itself contained by one.

The overall structure of layers within a desktop defines a collection of widgets and can also be seen as a generic application to be extended to more specific applications based on requirements fed back from the field of use. An instance of a desktop is what a user interacts with in a peer environment exhibiting graphical capability.

Every frame buffer or client such as a browser or flash player has an associated desktop node as it's primary display surface. In the case where multiple displays are used, each display has it's own desktop. This does not prevent the desktops being arranged side by side to form a larger display. This kind of higher level arrangement is handled by the GUI.

The "make" association

If a node has a state or "code" (ie any local environment-specific representation of its nodal content) then it will need some process for initially making (building or compiling) the content. This process may be as simple as constructing a string from a nodal sequence of word and symbol nodes, or it may require many conditions and evaluations of the environment such as language, security and preferences. When the nodal content changes it must either update the non-nodal state or invalidate it so that it can be rebuilt again.

The "exit" association

Nodal processes work like services or daemon which are started or stopped as they're needed within various contexts. In the nodal model the "exit" association of a node is hooked in to nodal reduction when its work within a particular context is finished. The "exit" node is hooked in by schedule which determines the periods of time which roles are active for, and also when nodal workflows are passed from one role to another (ie the "exit" node of the current role and the "init" node of the "next" node are hooked in to nodal reduction). Also the "main" association is a general concept representing the ongoing running system aspect of a role during its active periods.