Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site masscomp.UUCP Path: utzoo!watmath!clyde!masscomp!trb From: trb@masscomp.UUCP Newsgroups: net.unix Subject: Re: Least We Forget: Multics Message-ID: <473@masscomp.UUCP> Date: Tue, 10-Jul-84 14:50:06 EDT Article-I.D.: masscomp.473 Posted: Tue Jul 10 14:50:06 1984 Date-Received: Wed, 11-Jul-84 01:15:40 EDT References: <1611@sri-arpa.UUCP> <2336@mit-eddie.UUCP> Organization: MASSCOMP, Littleton, MA Lines: 33 mit-eddie!barmar: > You might be interested to know that I don't consider pipes to be one > of them; pipes are a kludge to get around the fact that dynamic linking > was hard to implement, so instead of making it easy to call lots of > subroutines, you start up a process and read its output. Dynamic linking doesn't give you the toolkit versatility that the pipe system call (and its use in interactive shell pipes) gives you. My favorite simple example is the rhyming dictionary (I don't remember where I first saw this example). Given the v7 programs: sort: sort lines lexically rev: reverse order of characters in each line Then % rev < input-dictionary | sort | rev > rhyming-dictionary produces a (lexical) rhyming dictionary. Another simple example would be a spelling checker, using the v7 tools tr, uniq, and comm, along with a dictionary of correctly spelled words. I don't see how pipes are a kludge, they seem pretty elegant to me. The pipe system call and the shell pipe interface seems like an ideal way to provide a co-routine interface to naive users. How could dynamic links do this better (more simply)? (Oh no, I envision all the object oriented purists coming through the windows.) Andy Tannenbaum Masscomp Inc Westford MA (617) 692-6200 x274