Path: utzoo!mnetor!uunet!husc6!necntc!ames!ucbcad!ucbvax!hplabs!decwrl!labrea!glacier!jbn
From: jbn@glacier.STANFORD.EDU (John B. Nagle)
Newsgroups: comp.lang.modula2
Subject: Re: Language Sensitive Editors (was Re: M2Amiga, another bunch of answers)
Message-ID: <17244@glacier.STANFORD.EDU>
Date: 9 Dec 87 17:00:57 GMT
References: <1221@sugar.UUCP> <1336@saturn.ucsc.edu> <3476@aw.sei.cmu.edu> <373@apr.UUCP>
Reply-To: jbn@glacier.UUCP (John B. Nagle)
Organization: Stanford University
Lines: 33


      Syntax-sensitive editors have been around for a while, one of the first
being the Cornell Program Synthesizer running on a Terak in the mid 1970s.
One of the basic problems with systems of this type is that they 
interfere with continuous typing, and are more a nusance than a help to
fast typists.  

      About three years ago, this idea showed up at a venture capital show as
a "word processor for people who can't write", a mouse-driven system which,
using menus and submenus, allowed the user to create text by selecting words,
while restricting the user to valid English sentences.  The user was
restricted to a subset of English, but one broad enough to allow for most
business needs.  It was very slow and painful to use.  The authors were unable
to obtain funding.

      There are useful programming environments.  Rational Machines has gone
furthest in this direction.  Their system is designed to coordinate the work
of large teams of programmers developing integrated systems of Ada programs.
Version control has been carefully thought out, so that one can express
ideas such as development mainlines and sidelines, remerging divirgent
development paths, and intelligent automatic recompilation including
damping out of hidden changes.  (This last would work nicely for Modula,
too, with appropriate tools.  The notion is that if A uses B and B uses
C, and C changes, then B and C must be recompiled, but if the exported 
interface of B didn't change, then A need not be recompiled.  This is
non-trivial to implement, because if B imported a type from C and
mentioned that type in an exported definition, then A really would have
to be recompiled.  In huge Ada programs, the cost of a low-level change
can be very high without tools smart enough to do just the recompilations
really needed, high enough that people hesitate to make changes in
places where they should be made.)

					John Nagle