Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!umich!samsung!usc!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!ames!vsi1!zorch!xanthian From: xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) Newsgroups: comp.sys.amiga.tech Subject: Re: Pipes Message-ID: <1990Jun6.104643.15176@zorch.SF-Bay.ORG> Date: 6 Jun 90 10:46:43 GMT References: <2533@zipeecs.umich.edu> <136735@sun.Eng.Sun.COM> Organization: SF Bay Public-Access Unix Lines: 59 In article <136735@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes: >In article <2533@zipeecs.umich.edu> (Ralph Seguin) writes: >>Anybody got any idea when C= is going to get around to writing true pipes >>(ala UNIX)? I suppose that I'm probably going to get flamed all over >>the place for this one 8-) > >You wouldn't happen to be confusing pipes with the bit of syntactic >sugar (the vertical bar) that the UNIX shells offer would you? If >you can define "true pipe" it would help to answer the question, >if you want the syntax I would suggest WShell, a commercial shell from >Bill Hawes which offers this. I don't believe this is available in the >2.0 Amiga Shell (yet?, it's only beta). Anyway, looking forward to >the definition you give... > Bzzzzt! Wrong answer Chuck. From a user's viewpoint (You do remember users? They pay the bills.), the difference is far more than syntactic sugar. The difference is information overload and confusion. Under Unix, the user strings together a set of filters by a convenient and reasonably transparent mechanism, the one line set of piped commands. This hides from him/her the nastiness needed on the Amiga: 1) S/he has to remember to explicitly spawn a separate light weight process for all but the last command, via the "run" command, _or_ stop whatever is going on long enough to open separate cli windows in which to execute each separate command of the piped commands. Fail to do one or the other, and s/he is busy exploring the bugs in the responses of C:'s inhabitants to the BREAK command. 2) S/he has to create a distinct and explicit pipe: directory entry for each and every intermediate file. Mistype pipe:b as pipe:a and things are frozen up again; back to exploring BREAK. The Unix user is protected from all this by the _information_hiding_mechanism_, not "syntactic sugar", of the "|" implementation of pipes. In addition, "|" affords the Unix user the chance to push the whole set of commands in the background with two keystrokes, " &" at the end of the line, to recall the entire set of commands and repeat it as a single entity with "!!", and, if in one of the nicer shells that allows command line editing, to recall and edit as a single entity the entire set of commands comprising the piped set. Looking at the Amiga implementation, like looking at the choice of "#?" for the wildcard (that I for one use on over half my typed lines), rather than the single keystroke "*", brings to mind the same question: "Why did the Amiga developers go to the time, trouble, and expense to design and implement something poorly, when an example of how to do it much better was conveniently at hand?" If "not invented here" is that strong a paradigm of software development, perhaps it is high time for a paradigm shift. Kent, the man from xanth.