The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Dan Cross <crossd@gmail.com>
To: John Levine <johnl@taugh.com>
Cc: TUHS <tuhs@tuhs.org>, Marc Donner <marc.donner@gmail.com>
Subject: [TUHS] Re: Pipes (was Re: After 50 years, what has the Impact of Unix been?)
Date: Thu, 5 Dec 2024 10:19:15 -0500	[thread overview]
Message-ID: <CAEoi9W4Qyn4A=SQb9-_uOPR=K8mriFUqmwU9YQoy2-Kekb0VnQ@mail.gmail.com> (raw)
In-Reply-To: <20241205030843.8552FAB1EDA5@ary.qy>

On Wed, Dec 4, 2024 at 10:18 PM John Levine <johnl@taugh.com> wrote:
> It appears that Marc Donner <marc.donner@gmail.com> said:
> >With the notion of pipes it became possible to operate on data quickly and
> >flexibly.  There was nothing new from a fundamental capability point of
> >view, but the ease with which one could construct pipelines enabled rapid
> >experimentation and encouraged the development of pipe-able components to
> >add to the tool set.
>
> Pipes were invented at least three times I'm aware of, but what made them
> work so well in Unix is that they looked to the program the same as a file
> so any program could use them for input or output without special arrangements,
> and the shell made it easy to start two programs and pipe them together.

Once you have coroutines and queues for passing data between them, a
lot of things start to look like pipes.

> The Dartmouth Time-Sharing System in the late 1960s had communication files
> which were essentially two-way pipes, but they were asymmetrical. One end, the
> slave end, looked like a file, but the other end, the master end, was different
> and the program had to know it was a com file. They were mostly used to pass
> terminal I/O between user programs at the slave end and SIMON at the master end,
> the terminal monitor that talked to the front end computer than ran the TTYs.

Doug has written at some length on this list about communication files
and their homomorphism to the way Plan 9 presented and handled
resources.

> They were invented again at IBM in the 1970s and described in this paper.  I wrote
> them a letter, which they published, saying that Unix pipes did the same thing.
>
> https://dl.acm.org/doi/10.1147/sj.174.0383

Don't forget CMS pipelines, too!

Sadly, the Morrison paper cited above is not easily accessible, though
I acquired a copy from IEEE; perhaps a sucker's game as it was not
cheap. Your subsequent letter, and part of Morrison's response to you,
however, is available, gratis.

Reading through Morrison, one gets the impression that there are some
substantial differences with Unix pipelines; or rather, the way that
Unix pipelines are usually used. In particular, he describes his
linked streams in terms of a "network", by which he appears to mean an
arbitrary directed graph. Crucially, he describes combining nodes, for
merging data from multiple streams.

Unix pipelines, on the other hand, tend to be used in a manner that is
strictly linear, without the fan-out and fan-in capabilities described
by Morrison. Of course, nothing prevents one from building a
Morrison-style "network" from Unix processes and pipes, though it's
hard to see how that would work without something like `select`, which
didn't yet exist in 1978. Regardless, Unix still doesn't expose a
particularly convenient syntax for expressing these sorts of
constructions at the shell.

As an aside, Morrison has a web page dedicated to "flow-based
programming", that he claims to have invented in the late 1960s.  That
seems like a bit of a tall claim, and I'd wager Doug gives him a run
for his money on that.  https://jpaulm.github.io/fbp/

        - Dan C.

  reply	other threads:[~2024-12-05 15:20 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-04  3:17 [TUHS] After 50 years, what has the Impact of Unix been? sjenkin
2024-12-04 13:05 ` [TUHS] " Marc Donner
2024-12-04 13:40   ` William Cheswick
2024-12-04 15:02   ` Rich Salz
2024-12-05  3:08   ` John Levine
2024-12-05 15:19     ` Dan Cross [this message]
2024-12-05 16:00       ` [TUHS] Re: Pipes (was Re: After 50 years, what has the Impact of Unix been?) John R Levine
2024-12-05 16:17         ` Heinz Lycklama
2024-12-05 17:06           ` Marc Rochkind
2024-12-05 17:53             ` John Cowan
2024-12-05 18:05             ` John Levine
2024-12-05 17:22           ` Paul Winalski
2024-12-05 18:19         ` Ron Natalie
2024-12-06  2:29           ` Adam Thornton
2024-12-07 20:38             ` Ron Natalie
2024-12-05 16:55       ` Adam Thornton
2024-12-05 17:35       ` Chet Ramey via TUHS
2024-12-05 20:55         ` arnold
2024-12-05 21:12           ` Dan Cross
2024-12-05 21:50             ` Marc Rochkind
2024-12-05 22:03             ` Warner Losh
2024-12-05 22:19               ` Chet Ramey via TUHS
2024-12-05 23:07                 ` Marc Rochkind
2024-12-06  8:16                   ` Diomidis Spinellis
2024-12-06  0:46                 ` Alexis
2024-12-06 21:46                   ` Chet Ramey via TUHS
2024-12-05 23:07               ` arnold
2024-12-06  1:09                 ` G. Branden Robinson
2024-12-06  1:31                   ` Greg A. Woods
2024-12-06  2:05                     ` Steve Nickolas
2024-12-06 16:44                     ` arnold
2024-12-05 22:05             ` Bakul Shah via TUHS
2024-12-06  2:02             ` John Levine
2024-12-06  2:21               ` Dan Cross
2024-12-06 16:46                 ` arnold
2024-12-06  2:26 Douglas McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEoi9W4Qyn4A=SQb9-_uOPR=K8mriFUqmwU9YQoy2-Kekb0VnQ@mail.gmail.com' \
    --to=crossd@gmail.com \
    --cc=johnl@taugh.com \
    --cc=marc.donner@gmail.com \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).