Pools, pipes and filters or Stream Algebra
Mon Mar 24 16:11:01 CET 2003
Chris Pressey wrote:
>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.
As a user I don't want the layout and tools all predetermined. In an
email client I have a composer, folders and a browser. Sometimes
I want that and sometimes I want a different layout and different ways
of finding and organizing things. Why only folders? Often I want the
email data in my word processor or database or address book. Why
does the data have to be divided by application? Why can't the data
just be data and let me operate on it or view it in whatever fashion I
choose from among the set of tools that are available to me?
The real issue is that "applications" are goal oriented. They are designed
to achieve a specific goal that is presumably optimized to the most
commonly desired goals of general users of the application. Now that
we have more processing power, it should be possible to store data in
a general fashion and optimize it on the fly as the computer adapts to
the user's desire rather than the other way around. There are constraints
on the simple tools that I might use to manipulate the data, but there
shouldn't be constraints on when they are available and what I can do
to the data. Hints and suggestions for error situations maybe, but not
complete out-and-out prevention.
>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)?
Yes you are right. Applications were designed during the era of
time-shared computing and carried over to the single user disconnected
PC. As such they partitioned and restricted the user to best utilize the
limited resources. Today we have networked processors, stateless transactions
and dynamically assembled groups of computers performing peer-to-peer
tasks. A new paradigm is necessary to take advantage of today's reality.
The stream algebra is for me to develop a tool for the building of systems.
The purpose of the algebra is to be able to reason about and prove the
interchangeability of computational elements. The "plumber's tool" I referred
to is the system designer's tool -- a trained professional. What is
with this tool is an ecosystem of processes and data that the user can hook
together in many different ways dynamically as they interact with the system.
I want to receive email that I can excerpt and sort in a database that can
be reassembled into a document or HTML page, without having to deal with
three "applications" but by just manipulating the data on my computer. Cut
and paste shouldn't have to exist; when someone posts code on this email
list I would like to try it out while I am reading the email message.
Unfortunately, I blurred the distinction between designer tools and end user
tools since in this case I am performing both roles.
More information about the erlang-questions