Pools, pipes and filters or Stream Algebra

Chris Pressey <>
Mon Mar 24 07:39:01 CET 2003

On Sun, 23 Mar 2003 11:45:34 -0800
Jay Nelson <> wrote:

> How can I accomplish a task?  This is what I really want to
> do rather than use an application.

False dilemma, isn't it?  An application is what you use to accomplish a
task, pretty much by definition.

> [...] The most powerful and flexible tool is useless to
> all but the trained professional, but a screwdriver can be used
> by nearly everyone.

In this case, the screwdriver is the "application" - the task is removing
or installing a screw.

In other words, I'm not sure if you want constraints on how things are
constructed, or not, as you've now given arguments for both sides.  I'm
assuming that you do, but you want looser constraints than are commonly
found at present.  I agree with the spirit of your approach, I think, but
I find I'm having more and more trouble grasping the letter of it.

> [...]
> Ultimately I would be interested in a Stream Algebra that encompasses
> streams and the operations that may occur on them, axioms and theories
> of computation equivalence using the algebra and an implementation of
> the operators inherent in such an algebra.  Given such an algebra it
> seems that graphical tools for developing a system would be much easier
> to use than that which OO promised to deliver.  I envision something
> that a plumber would feel very comfortable working with on screen.
> jay

As someone who *has* developed Rube-Goldbergesque programming languages
(cited in the Hacker's Dictionary, no less :) I think you are making an
error here.  You're merely substituting one skilled trade (computer
programming) for another skilled trade (plumbing.)  I don't think
computers will empower the *average* individual until AI & SR advance to a
point where a human can simply ask their computer, a la Star Trek,
"Computer, how did my lotto numbers do?"

To put it another way: say you develop a stream algebra.  Would it really
help you see problems in a holistic manner, or would it merely colour your
perceptions in a *different* subliminal way (not that that would
necessarily be a bad thing)?  I'm afraid there is no rule for how to break
rules, nor any formal system for analyzing things unsystematically...
if you try to put chaos in a box, it becomes order.

To put it yet another way, you said it yourself: the most powerful and
flexible tool is useless to all but the trained professional.  Packaging
functionalities into applications trades off power and flexibility for
usability in the hands of the average person.  How do you have your cake
and eat it too?

I could go on about this (probably for several pages) but you're a bright
person and you surely get the thrust of what I'm saying.

Specifically as it relates to a GUI: I agree that applications are not the
best abstraction for what to present in a UI.  Applications are behind the
scenes and the user shouldn't have to think about them - they will be more
productive if they can focus on *what* they are doing, not what *with*.

However that's not just the task itself - it is the current state of the
task - i.e. their work-in-progress.  A text document, rather than a text
editor or the activity of editing text; a web page, rather than a web
browser or the notion of surfing the 'net; a spreadsheet rather than Excel
or number-crunching, and so forth.  For that reason - because people deal
with objects so easily (even if it is often to their detriment), I
wouldn't dismiss object-orientation out of hand.


More information about the erlang-questions mailing list