Abstraction

On this site the verb ‘abstract’ is taken in the sense of ‘hide’. This page especially so!

When we describe computer systems, especially software, we are always abstracting away various details in order to understand what our systems do. This is not a mere pedagogical trick, it is how we design and understand systems. In reality computers consist of wires and semiconductors, etc. Unless we abstract these details away we will never get to compilers, let alone computer games. Indeed we abstract over and over again; abstractions are nested. It is just a little like relativity which describes the same physical situation from different reference frames. It can be complex to understand that these two descriptions are of the same situation. Abstraction arises in other sciences but seldom with such intensity as in computers.

We say that we switch abstraction levels when we reveal details previously hidden. This may result in seemingly contradictory sentences on the same page. I try to keep them from being in the same paragraph but I often fail.

Another metaphor is when we look at something thru a microscope. As we adjust the focus we see different useful things which only with insight be unified into one whole thing depicted by the microscope.

Object based systems, especially capability systems, are especially deep into abstraction. Experts talk among themselves leaving the abstraction level implicit in their discourse. Newcomers are lost, with good reason. Making levels explicit can be even more distracting.

Here are some situations where we contradict ourselves on different pages:

Facets

Here are two ways to talk about objects:
  1. Sometimes we say that two objects may share behavior, but not state.
  2. Other places we say that an object (along with its state) may have facets (data bytes in Keykos keys) that yield different authority to sense and modify the object’s state.
In contexts adopting the first perspective we explain facets as front end filters, which are objects, to incoming messages for the real object that censor or rewrite requests. Real facets, such as Keykos data bytes, or badges in other systems, are not necessary, yet they are highly efficient and convenient. These are two incompatible ways of talking but each has contexts where it is convenient. Is anyone confused?

“Facet” refers to both:

Memory Objects

Some places we like to say that Keykos pages and segments are objects and that objects ‘serve’ by being invoked. Yet other places we describe invocation as happening when a domain obeys a program with a system call meaning invocation. We prevaricate. Keykos memory objects serve by appearing in the address space of a domain. No system calls are needed except to bring about this appearance. We can imagine messages but they would be virtual, hypothetical and other bad words. Still the prevarication seems useful in some situations.

Meter Invocation

We have failed to come up with a vaguely plausible description of a meter serving by being invoked.

There are other flexibilities in describing these systems. I should make a list.