OS design...

Francois-Rene Rideau fare@tunes.org
Sat, 17 Oct 1998 15:01:17 +0200

>: Ray Dillinger, on lispos@math.gatech.edu

> No, not routines per se, but a way of saying "such and such
> service has been spawned as a process and is waiting for input
> in QQQ format on port XXX."
This is but a uselessly low-level special case for
"we have an object named X, of type Q->S".
If you hate types, understand "specification" instead.

> For example, let's say you want a wakeup call when some
> arbitrary condition becomes true and you have code that
> calculates the arbitrary condition.

> According to the exokernel,
> you would send the code itself to the process scheduler which
> would then link it in and call it whenever your timeslice came
> around and wake you up if it returned true.
That's fine, if only the admission control can check security.
In a low-level system, that's quite a costly feat.
In a high-level system, it's just a very particular case
of dynamic compilation.

> According to the system I envision, [lots of nitty-gritty low-level details]
I think it's a real bad idea to specify low-level details:
keep the interface as high-level as possible,
and add low-level details as compiler optimization techniques;
add a metaobject protocol to let the user help the compiler,
if useful (having strict high-level admission control
based on high-level criteria, unless the super-user was asking).

If I want a process to be waked up on a condition,
what I want is this process to be waked up on that condition;
what I want isn't lots of stupid low-level things to happen;
hell, I don't remotely give a *shit* about those low-level things!
The less I need to know about them, the happier I am.
If those things were "the only sensible thing to do",
then the system ought to do them, and I needn't specify them;
if those things weren't, then why overspecify,
and prevent the implementer to use completely different techniques,
that might better fit the completely different constraints of another day?

Fuck low-level systems! Translating high-level into low-level is
the compiler's job, not the programmer's job. As a compiler-writer,
I'm interested in it; as a programmer, I abhorre it.

## Faré | VN: Уng-Vû Bân   | Join the TUNES project!  http://www.tunes.org/ ##
## FR: François-René Rideau |    TUNES is a Useful, Not Expedient System     ##
## Reflection&Cybernethics  | Project for a Free Reflective Computing System ##
A programming language is low level when its programs require attention to
the irrelevant.
        -- Alan Perlis