[net.cog-eng] expert-friendly: are long names

preece@uicsl.UUCP (11/30/83)

#R:watmath:-619600:uicsl:21500004:000:1103
uicsl!preece    Nov 29 09:38:00 1983

	If you are designing a command language that is supposed to have a
	precise meaning and work first time and every time, you can't use
	heuristics that change the meaning of commands.  Every command must
	have a unique interpretation, regardless of the current environment
	in which it is invoked.  You can't have "chmod 0666 0777" change
	meaning depending on whether the current directory contains a file
	named "0666" or "0777".
----------
One of the reasons for having heuristics is to allow the command interpreter
to make exactly that kind of change.  This should be perfectly reasonable
even to naive users.  I don't expect the command '!c' to do the same thing
every time -- I know it depends on the context.  I know that if I walk into
our secretary's office and say 'Call Linda' a call will be made to a
different person than if I walk into one of my colleague's office and
say the same thing.  One of the things naive users don't like about
computers is exactly that inability to interpret commands sensibly,
in the context in which they are offered.

scott preece
ihnp4!uiucdcs!uicsl!preece

preece@uicsl.UUCP (12/01/83)

#R:watmath:-620600:uicsl:21500005:000:1118
uicsl!preece    Nov 30 09:30:00 1983

Who says the only choice is between names with no mnemonic value and
long, hard-to-type names? What's the matter with having a simple
command mapping mechanism that turns those long names into short ones
(or vice versa). When I can't remember the command I want, I use apropos
to find it. This doesn't take long and usually gets me what I want
in one probe.  It would be better, though, if it did multi-term
searching, so that the result list would be shorter.

I can't believe multi-component commands would be any use. Who can
remember the order of the components (the trivial example of
'compile-pascal' implying 'debug-pascal' is too simple; few
commands come in neat families like that)? Worse, who can be sure
of the individual components or which ones are needed (is it
'change-file-mode' or just 'change-mode')?

Best of all would be a heuristic command matcher that would first
try the command you entered, then try it as an argument to a command-
dictionary-lookup procedure, then try mis-spellings, and ask for
confirmation if it couldn't get a single, hard answer.

scott preece
ihnp4!uiucdcs!uicsl!preece

tjt@kobold.UUCP (T.J.Teixeira) (12/02/83)

Reading Scott Preece's article jogged my memory on where I had run into
trouble with multi-component commands.  Both TOPS-20 (Tenex) and VMS
make heavy use of multi-component commands.  For example, in VMS there
are lots of commands of the form "SET ...".  To change your current
directory you use "SET DEFAULT device-name", to change modes on your terminal
you use "SET TERMINAL [:device-name]/qualifiers".  However, to set the
value of a logical name, you use "DEFINE logical-name equiv-name".
TOPS-20 uses a similar scheme, although "SET" is less ubiquitous.

The problem comes in when you aren't quite sure what command you need
to invoke next.  I agree with Scott that apropos is a good tool here,
although apropos is no better than the words used in the NAME line of
the manual page (try 'apropos delete' -- for 4.1BSD the only hit is the
dbm(3x) routines!).  The HELP command in VMS was not quite as good, but
was serviceable.  I no longer remember if it allowed wild cards in early
components such as "HELP * TERMINAL", but it wasn't too hard to
converge on things by the sequence "HELP", "HELP SET", "HELP SET
TERMINAL".

I found TOPS-20 *much* harder to deal with.  The HELP database on
TOPS-20 only seems to describe subsystems and not the commands built
into the command interpreter (EXEC).  Instead, you have to use a
combination of queries to the wildcard matcher and some inspired free
association.  Even then, the *only* help you get online are the
parenthesized guidewords.  You cannot find out about what choices are
available for component n without having specified components 1 to n-1.
In addition, far too many of the subsystems (and perhaps some of the
commands) have guidewords that only specify the *type* of the argument
(e.g. (FILE NAME)) and not the *use* of the argument (is it a source
file or a destination file).

Probably the object lesson here is: just as a "real programmer" can
write Fortran programs in *any* language, you can have deficiencies in
a command language no matter what model you follow.
-- 
	Tom Teixeira,  Massachusetts Computer Corporation.  Westford MA
	...!{ihnp4,harpo,decvax,ucbcad,tektronix}!masscomp!tjt   (617) 692-6200

franka@tekcad.UUCP (12/02/83)

#R:umcp-cs:-415100:tekcad:4200002:000:1192
tekcad!franka    Dec  2 07:57:00 1983

	Laura's view of the world too narrow!?!?!? Come on koved! I use a
computer for one purpose: TO GET THINGS DONE! If a stupid command language
makes me type out a fifty character command so that some brain-damaged man-
ager can remember it, I don't particularly find that system "user-friendly"
to me.
	All of this crap about long command names vs. short command names
is valid ONLY if you assume you must choose between one or the other. I
really can't call a system "user-friendly" unless either:

	1) it has enough different "modes" so that all levels of users have
	   the type of interaction they want (this means VERY large amounts
	   of software)

or	2) it is customizable, so that users can change the system to
	   provide a form of interaction that they are more comfortable
	   with

	So everyone out there that thinks that command languages operate in
an either/or mode, stop wasting my time. If you build customizable systems
or systems with more than one command language, you don't have this stupid
problem.

               				From the truly menacing,
   /- -\       				but usually underestimated,
    <->        				Frank Adrian
               				(tektronix!tekcad!franka)

andree@uokvax.UUCP (12/03/83)

#R:watmath:-620600:uokvax:1800006:000:424
uokvax!andree    Dec  1 18:06:00 1983

/***** uokvax:net.cog-eng / uicsl!preece /  9:30 am  Nov 30, 1983 */
Best of all would be a heuristic command matcher that would first
try the command you entered, then try it as an argument to a command-
dictionary-lookup procedure, then try mis-spellings, and ask for
confirmation if it couldn't get a single, hard answer.

scott preece
ihnp4!uiucdcs!uicsl!preece
/* ---------- */

Ah - what you want is INTERLISP!

	<mike

koved@umcp-cs.UUCP (12/06/83)

Frank,
You seem to have misinterpreted my comments.  I agree that there is 
a need to have short forms of commands for those people who consider
themselves to be experts, and do not want to type the whole (50 character)
command name.  And, yes, there are systems which allow you to have
more than one allowable version of a command name which can be recognized
by the system.  Let the computer work for you!  The computer can have
both the long name, and its abbreviations forms (such as the shortest
form of the command which will be recognized), and synonyms.  I leave
it up to the implementers as to which way to set up the synonyms (either
remove is a synonym of rm, or visa versa).  I am sure there are arguments
for both.

I am also a computer hack.  I am also a novice and an occasional user.
I can be in any of these categories depending upon the computer and
the software I am using!  If the systems are not flexible, I am not
likely to become an expert because it requires too much time to learn
all of the tricks to become an expert.  If a system allows room to learn
at my own speed (with long command names), I am more likely to use the
system because I do not need a reference manual open next to me to use
the system.  A really good system is one which allows both the expert
and the novice, as well as a whole range inbetween!

Now, to make such a system, you would need both the shortest (or an
abbreviation list) and the longest forms defined.  The abbreviation
and synonym (alias) recognition software then takes over.  The nicest
system that I can think of would be one which would let me enter
as much of the command name as I wanted...the system would fill in
the rest after I hit the space bar or return key.  Of course, I need
the ability to surpress the expansion of the command name (for the
experts who don't care what the whole name is).

There have been a variety of such descriptions of this nature.  Work
needs to be done to understand them better.  Anybody want to volunteer?

Larry Koved
U. Of Maryland, College Park