Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!ut-sally!utah-cs!utah-orion!shebs From: shebs@utah-orion.UUCP (Stanley T. Shebs) Newsgroups: comp.lang.lisp Subject: Re: A Decent Environment. Where is it? (some flame, some advice) Message-ID: <178@utah-orion.UUCP> Date: Mon, 9-Nov-87 19:33:12 EST Article-I.D.: utah-ori.178 Posted: Mon Nov 9 19:33:12 1987 Date-Received: Wed, 11-Nov-87 20:45:39 EST References: <21493@ucbvax.BERKELEY.EDU> <2630001@hpfcmp.HP.COM> <177@utah-orion.UUCP> <12076@beta.UUCP> Reply-To: shebs@orion.utah.edu.UUCP (Stanley T. Shebs) Organization: PASS Research Group Lines: 44 In article <12076@beta.UUCP> dzzr@beta.UUCP (Douglas J Roberts) writes: >HA! The 15 or so of us in my group who have experimented with Knowledge >Engineering Environment (KEE) and LISP running on a SUN would *swear* >that UNIX folks had never heard of software development tools! This is a very puzzling remark. Unix systems were the first to exploit the idea of using tools instead of big, fancy, and inflexible systems (recent years have seen a proliferation of such systems in Unix, though). Perhaps there's a misconception - when I say "tool", I have in mind the software equivalents of hammers and screwdrivers and bench saws. Sure, three-story-high milling machines are amazing creations, but everything they do has to be cast in terms of milling (for instance, cutting = engraving a channel so deep it goes all the way through), and they are totally useless for anything that the milling machine designers did not think of already. Getting back to software, there is *no* programming environment designer clever enough to anticipate what I want to do. They're better off supplying a set of simpler tools that can fit together in different ways. In Unix, the interface is a character stream, which is good for text and general file processing, but bad for Lisp. A tool-oriented Lisp environment would presumably use S-expressions as the basic interface, although one would probably need some sort of lazy version, so that heap space isn't exhausted by the creation of one intermediate object. Useful operations include many already in Common Lisp, such as sorting, set operations, and reversing, but extended to operate on incompletely-defined things. Generalization of streams is a good thing as well. (For some more ideas like this, see the Fraser/Hanson paper on the EZ programming environment in POPL 85.) A classic example of tool usage in Unix is the one-line spelling checker; I have yet to see any Lisp programming environment support anything quite as elegant and useful. There is actually an interesting research question here: integration vs tools. Both approaches have their advantages and disadvantages, and nobody really knows enough about programming environments to say which is better, and under what conditions. Unfortunately, doing believable experiments on this sort of question involves a horrendous amount of work... > Doug Roberts > dzzr@lanl.gov stan shebs shebs@cs.utah.edu