[net.cog-eng] expert-friendly: are long names a waste of time?

idallen@watmath.UUCP (10/23/83)

But most short names are abbreviations for long names.  RM is an abbreviation
for REMOVE FILE, RMDIR is an abbreviation for REMOVE DIRECTORY.

If you claim that nobody will remember a long name, then I claim
you make it worse by forcing people to remember the abbreviation too.

If you want to argue about what people will remember, then we should
talk about ways to minimize the amount of stuff that has to be remembered.
I don't know if memorizing arbitrary abbreviations is easier than
remembering whole words, but I do know that memorizing fewer things is
better than memorizing a lot of things.

Teach me command names in a cross-product approach, where I only need
to remember a few verbs and objects.  Allow me synonyms for each.
(Let DATASET be synonymous with FILE; let DELETE be synonymous with
REMOVE.)  Then, I can build most of my commands using the verbs and
objects I know.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

tim@minn-ua.UUCP (Tim Giebelhaus) (10/26/83)

  I wasn't thinking of UNIX so much.  I think that their names are a little
overly short.  I would just assume type in "pascal" as "pc".  PC is harder
for me to remember.  On the other hand, I would not like to type in:
compile_pascal_program.  On Multics there are long commands like that, but
luckly, they have abrevs.  It is a nice way to do it, that is, have both
long and short names be reconized.
  stolaf!umn-cs!minn-ua!tim

idallen@watmath.UUCP (11/02/83)

This is why I prefer "compile_pascal_program" over "pascal":

Question: If the name of the pascal compiler is "pascal",
          what is the pascal debugger called?

Answer: Well, um, uh....  Maybe "debug_pascal" or "pascal_debug" or
        "debug", or...  Well, who knows, really.

Question: If the name of the pascal compiler is "compile_pascal_program",
          what is the pascal debugger called?

Answer: debug_pascal_program!

Once I know the long names for things, I can find out the system
abbreviations if I need them.  Maybe I know the system-wide abbreviation
rule, and can figure out the abbreviation myself.  But I don't have to
remember arbitrary names right from the start.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

laura@utcsstat.UUCP (Laura Creighton) (11/02/83)

"compile pascal program" and "debug pascal program" only are reasonable
ways of doing things because of the structure of English. I find
English highly unsatifactory as a language to express day to day
thoughts in, so I am not sure that it is going to be a wonderful
computer language. The most annoying thing that I see about English, is
that grammar teachers to the contrary, there is a pretty strict sense
of word order. You need a <subject and subject modifiers and their
modifiers> followed by a <verb and verb modifiers and their modifiers>
followed by a <subjective completion or object and subjective
completion or object modifiers and their modifiers>.

You can forget about the object or the subj. comp. if it is an
intransitive verb, but often in English the object is the most
important thing. Sometimes the adverb modifiers are -- and often they
are stuck out on the end of the sentence!

A while ago I said "Are we going to go to the Chelsea Inn soon?". Now
the crucial part of this message is "Chelsea Inn" and "soon". I am
hungry and want to get eating. But I had to say 7 useless words before
I could get into the 2 important ones! It is a measure of how useless
word order is in determining meaning in that we have to use STRESS so
much in this language. "Are WE going to the Chelsea Inn soon?" and "Are
we going to THE CHELSEA INN soon?" and "Are we going to the Chelsea Inn
SOON" all mean quite different things.

Pity the new speaker of English!

This is also why certain technical writing in the passive voice goes
over so badly -- English needs a subject so people use "one" or
"people" or maybe even "you" until everyone is tired of it, and then
switches to the passive voice.  However, it is not the voice that
matters, but how quickly you get to the "good stuff". People tend to
say that the passive voice "drags on and on" because in general it
*does* add extra noise words to the sentence, and unless you offset
this disadvantage by getting to the most intersting part of the
sentence faster you will make things *worse*, not better!

I think that "debug pascal program" works because you get into the meat
of the matter "debug". This is not perfectly extensible however. How
many times have you thought?

	Is it "adb program coredump" or "adb coredump program"?
	How about "chmod mode file" or "chmod file mode"?

Clearly, what will sound better to you is going to vary. I always think
that "chmod mode file" is backwards. I think that the file is much more
important than the mode. There are hundreds of files which I own, I
might forget the name, but there are only ~300 modes, only 6 of which I
use with any frequency. However, I meet people who disqagree.

I do not think making the commands any longer is going to help.

"change the mode of file foo to mode" and "change the mode to this of
file foo" are still going to be a problem.

Laura Creighton
utzoo!utcsstat!laura

mmt@dciem.UUCP (Martin Taylor) (11/03/83)

Laura (in net.cog-eng) points out that English uses a lot of
"useless words" that often occur before "you get to the good stuff".
This is a consequence of the fact that the real world contains
many possible contexts within which statements, questions and
other interactions can be framed. There is a concept in psycholinguistics
called the "Given-new contract", which, roughly stated, says that
the partners in a dialogue agree to present something new in each
element of the dialogue, with enough prior material (the given) to
show where the new stuff belongs. In Laura's example: "Are we going
to the Chelsea Inn soon?" the early words are NOT useless unless
she assumes that the context of going out to the Chelsea Inn was
previously established in the minds of all participants. If
the dialogue had been:
  Where are we going?
  Chelsea Inn.
  Soon?
Each of the dialogue elements would have contained almost exclusively "new"
items, and there would be no wasted words. (Only "are we going" in the
first unit would be "given" material.)

Now consider this in the context of long computer commands. If the
computer had an intelligent interface that permitted the use of prior
context, then most of the time it would be possible to use very short
commands, analogous to "Soon?". But this facility would have to be balanced
by the need for long specification when the context was switched,
in a way precisely analogous to what has to be done in natural language.

Laura also brings up the point that the order of arguments is not
necessarily natural in multi-argument commands, and that this problem
might not be alleviated by increased command length. In English,
the relation between verbs and their arguments can be signalled
both by word order and by the addition of cue words ("function
words") that indicate special relationships or relationships that
differ from what the word order suggests.

If a command has many arguments, they can easily be signalled by
function words (chmod files=foo,bar,grunch mode=755; chmod 755 foo bar grunch).
The problem is the same as in natural language, that of remembering
the proper word order. Since a command is in the imperative, it is
natural to put the verb first, and the subject is usually the computer.
A problem arises in that there may be many arguments, not just the
three to which English verbs are limited in the absence of function
words. When there are many, it is difficult to remember their order.

In English there are general rules about the orders of direct objects,
indirect objects, and so forth (one says "put that there", not
"*put there that"). Similarly, in UNIX, commands relating two files
usually have "oldfile newfile" as the accepted order. Novices may
not know that, and it would be useful to allow function words: "mv old to new".
Where the arguments are of different semantic types, English usually
permits one to interpret correctly the meaning even when the order
is wrong. So should the computer command language. "chmod foo bar 755"
should be interpretable if foo and bar are files, and 755 is a legitimate
mode known to the chmod command. In fact, that kind of syntax could
permit a useful extension to such commands: chmod foo bar 755 grunch 644,
for example (This would be identical in effect to:
chmod 755 foo bar 644 grunch, since the slots requiring mode arguments
would be filled in the same order in both cases).

This line of argument is quite independent of the mnemonic argument
that started the discussion on this topic, and should perhaps be
continued in net.nlang rather than net.cog-eng.

Martin Taylor

idallen@watmath.UUCP (11/04/83)

I do not like, and am not suggesting, English as a computer language.

"Compile_pascal_program" and "debug_pascal_program" as command names are
only coincidentally reasonable because of the structure of English.
We only need to use the actions and objects of English, not the
ambiguities of English structure, emphasis, and syntax.

Even if you told me that the command to compile a Pascal program was

    program_pascal_compile

I could still tell you what the command to debug it was.  I could also tell
you how to compile FORTRAN or COBOL programs, or how to delete such programs.
(Just substitute the obvious word in the reasonable place in the template.)

Making the command names longer does help; I have to remember fewer things.
Just knowing the above command name and the new words "debug", "delete",
"FORTRAN" and "COBOL" gives me nine working commands.  If I learn a word
for another language (e.g. MODULA), I instantly know twelve working commands.
If I then learn a new verb (e.g. edit), I instantly know sixteen commands.

This cross-product command naming scheme saves me from memorizing arbitrary
names for every combination of verb and object.  Saves brain space.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

idallen@watmath.UUCP (11/04/83)

I agree with Martin Taylor when he says remembering the order of
arguments is difficult.  I don't think his answer, have the computer
try to interpret the order, will work well.  Continuing his example:

    echo hi >755  ;  echo ho >644  ;  chmod 644 755

The computer can't figure out which argument order I mean in this
(contrived) case.  Nor can it figure out if I replace CHMOD with CP.

If two (or more) different things have to be given as command arguments,
then the order of two things can get confused.  Some way is needed
to flag which kind is which.  The easiest thing on the brain is:

    ***************************************************************
    ***> Don't allow more than one kind of unflagged argument. <***
    ***************************************************************

I would rewrite CHMOD as follows (the order of arguments doesn't matter):

    change_file_mode [mode=]755 [filename=]/u/idallen/myfile

where either "mode=" or "filename=" *must* be present to tell the
command which kind of argument is which.  A repaired example:

    change_file_mode 644 mode=755             /*OKAY*/
    change_file_mode filename=644 755         /*OKAY*/
    change_file_mode m=755 f=644              /*OKAY*/
    change_file_mode 644 755                  /*NO GOOD*/

Never rely on position (first, second, last, etc.) to determine what
will be done with an argument.  Require the user to make explicit which
types of arguments are which, and then order doesn't matter.  The
arguments can be flagged and typed in as the user sees fit, and the
user's perception of which argument "should" come first doesn't matter.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

phil@amd70.UUCP (Phil Ngai) (11/04/83)

Re Laura's question about "chmod 755 file" or "chmod file 755", it's
more logical if you remember you could have "chmod 755 file1 file2".
If you had "chmod file1 file2 755" the program would have to read until
the end to find out what mode to use. When it gets the mode first, it
can just grab new file names and change them. Please don't make suggestions
that prevent me from having files with numbers as names.

Now, who can explain:

clri filesystem i-number vs
ncheck -i numbers filesystem
-- 
Phil Ngai (408) 988-7777 {ucbvax|decwrl|ihnp4|allegra}!amd70!phil

speaker@umcp-cs.UUCP (11/05/83)

	Once I know the long names for things, I can find out the system
	abbreviations if I need them.  But I don't have to
	remember arbitrary names right from the start.

Hmmmm... I find just the opposite is true.  That is, long names
confuse and cloud the issue.  Consider what you might call the
program that lists your directories...

"list_directories"
"show_directories"
"directory"
"list"
"catalog"
"directory_list"
"files"
"list_files"
"show_files"

etc, etc.  Who knows WHAT it might be!  The Unix 'ls' is
much easier to remember because I associate 'ls' with
listing my directories.  I don't have to go through the
intermediate step of figuring out what the abbreviation is for.
'ls' seems to be a word or entity all to itself and I associate
it immediately with seeing my directories.

The same is true with a seemingly meaningless word like 'grep'.
Sometimes I feel I could use this in everyday conversation,
the meaning is so well defined in my head.  And in fact...
I and some of my friends DO use it as such.

To each his own.
-- 

					- Speaker-To-Stuffed-Animals
					speaker@umcp-cs
					speaker.umcp-cs@CSnet-Relay

judd@umcp-cs.UUCP (11/06/83)

I disagree (some what) with Ian.  The use of parameter names can
be as confusing as the use of shart command names(opinion).  I
find it much more natural to use english connectives to make clear
what is what. {this was the point of an earlyer article}

For chmod how about:

	chmod <myfile> to <mode>
	chmod to <mode> <myfile>
	chmod <file1> to <mode1> <file2> to <mode2>

all as legitimate?  This is "natural" and very flexible and very precise.
It may be harder on the program but who cares - cpu time is cheap.

thomas@utah-gr.UUCP (Spencer W. Thomas) (11/06/83)

I would rather see 'compile' and 'debug' for ALL languages.  I mean,
why should YOU have to tell the computer what kind of language you
are using.  Really, talk about *useless information*.  Since, for
example, cc will only accept files ending in '.c' as C programs (it
passes '.s' files off to the assembler, '.o' files to the loader, etc.),
it comes pretty close to such a 'compile' command.  I should only have
to tell the computer ONCE what type of file I've got, it should remember
from then on.

=Spencer

thomas@utah-gr.UUCP (Spencer W. Thomas) (11/06/83)

There was an article in a recent CACM which 'demonstrated' that it
didn't matter *what* you called the commands in an editor - the command
names could be totally meaningless - when people learned any set
of commands they were equally proficient.

=Spencer

crl@pur-phy.UUCP (Charles LaBrec) (11/06/83)

It seems to me that what a lot of people are talking about has already
been implemented on TOPS-20 (yes, another former DECsystem-20 user speaks
up).  I will use as an example the TOPS-20 equivalent of chmod.  The
full verbose syntax was:

@SET FILE PROTECTION (OF FILES) FILE.EXT (TO) 777752

However, the guide words (in parentheses) were not necessary to type
in, and command completion and least ambiguous recognition were done
on each field.  So the expert would learn to say:

@set fil prot foo.bar 777752

For the novice, typing a '?' at various points would tell him/her what
was expected next--after 'set' would say what keywords were valid, after
the 'f' of 'file' would say what keywords began with 'f', after 'prot'
it would say "FILE NAME", and after the file, "Octal number protection
value" (or some such).  If an escape was typed in the middle of any
keyword/file name, it would complete it, if not ambiguous, and print
the guide words that followed.  

I've always liked the user interface on TOPS-20.  Not as concise as UNIX,
but verbose enough for novices.  If it only had pipes, redirection,
C, and more UNIX tools . . .

Charles LaBrec
UUCP:		pur-ee!Physics:crl, purdue!Physics:crl
INTERNET:	crl @ pur-phy.UUCP

idallen@watmath.UUCP (11/08/83)

I, too, don't care about CPU power needed to parse something; but,
I don't want to mislead people into thinking the command interpreter
understands English.  Too much flexibility and the use of English
connectives might do this.  If you make the interpreter respond to
some English syntax, but not all, you may not be able to tell your
users precisely what your command interpreter can understand.

Even the simple "chmod x to y" could read "chmod of x to y", and
perhaps "ch_the_mode of x to y" or "Change the mode of file x to mode y.".
In settling on "chmod x to y", you have already dropped many of the
components of the English sentence; how does the user know which words
to drop?  Many people have implicitly dropped the "of" when they say
"chmod mode file"; on the other hand, some people think they drop the
"to", and mistakenly say "chmod file mode".

English is not a concise command language, even between people.  I
don't think you can keep the English connectives without misleading
people about the power of the command interface.

Have you seen the October SIGCHI Bulletin, "Constrained Languages Need
not Constrain Person/Computer Interaction"?  A real study of people.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

chuqui@cae780.UUCP (Chuq Von Rospach) (11/10/83)

Phil brought up an interesting point about chmod: the reason its the way it
is is because it was easier for the programmer to write it that way. This
may have been appropriate when resources were scanty and users were experts
(and I doubt if the latter was ever REALLY true. technically oriented,
maybe) but now it seems like pure laziness to me. 

As far as chmod is concerned, you don't need to worry about reading all of
the files before getting to the mode... When you start parsing parameters
you pull off the last one for the mode and then use the rest for filenames.
Presto - no worry about numeric files, and parameter parsing is not changed
significantly, yet chmod now works as some people say it should (I have
fallen into 'chmod file mode' more than once, but I don't know if that is a
preferable syntax or not. Personally, most of Unix's syntax is painful...).

Now, to take chmod one step further, to properly implement it the command
should look something like this:

chmod <file> <file ...> <mode> <file> <file ...> <mode> ...

where you can change modes in midstream. I can't tell you how many times I
have wanted to do a group of somethings to files and have had to invoke
chmod multiple times in a row.... 


-- 
From the dungeons of the warlock:			amd70!cae780!chuqui
		Chuqui the Plaid			*pif*

idallen@watmath.UUCP (11/13/83)

    From thomas@utah-gr.UUCP (Spencer W. Thomas) Wed Dec 31 19:00:00 1969

    There was an article in a recent CACM which 'demonstrated' that it
    didn't matter *what* you called the commands in an editor - the
    command names could be totally meaningless - when people learned
    any set of commands they were equally proficient.

...which means we should worry about how to name commands so people
learn them most easily.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

thomas@utah-gr.UUCP (Spencer W. Thomas) (11/14/83)

Let me clarify.  I quote from "Natural Command Names and Initial
Learning: A Study of Text-Editing Terms", CACM 26,7 (July 1983), 495. 
First, from the abstract:
	... computer-naive typists spent two hours learning minimal
	text-editing systmes that varied in several ways.  Lexical
	naturalness [e.g. "natural" command names] ... made little
	difference in their performance. ... having different, rather
	than the same names for operations requiring different syntax
	greatly reduced difficulty.  It is concluded that the design
	of user-compatible commands involves deeper issues than are
	captured by the slogan "naturalness".  ... Only initial learning
	of a small set of commands was at issue ...  generalization ...
	will require further testing.

The article is actually in two parts, the first was a study which asked
people what they would call certain text editing operations.  Not
surprisingly, there was a VERY large amount of variation.

The editor command sets they used were
	Old		New		Random
	---		---		------
	Delete		Omit		Allege
	Append		Add		Cipher
	Substitute	Change		Deliberate
Where the "new" names were supposedly more natural, based on the results
of part 1.

>From the conclusion, talking about choosing command names:
	We began our investigations with the hypothesis that commonly
	used words for similar operations in the noncomputer
	environment would be best.  Such words are familiar and have
	at least approximately correct known meanings, so they should
	demand minimal new learning.  This line of reasoning has a wide
	following .... It now appears to be a somewhat naively
	undifferentiated view.  ... popular [words] [are] the ones less
	consistently applied .... Clearly, constructing a command set of
	words whose natural meanings tend to lead to misuse is not
	desirable. .... The finial conclusion ... is clear: rational
	design of commands and command names for usability requires
	deeper understanding than is captured in the slogan "make the
	language natural."
	
=Spencer

daemon@decwrl.UUCP (11/14/83)

From: Ed Featherston  HL01-1/P06  225-5241 <roll::featherston>

 Begin Forwarded Message:
              -------------------------------------------

Newsgroup : net.cog-eng
>From : KRYPTN::TS1::BURROWS
Organization : Digital Equipment Corp.
Subject: Re: expert-friendly: are long names a waste of time?

-------------
    From thomas@utah-gr.UUCP (Spencer W. Thomas) Wed Dec 31 19:00:00 1969

    There was an article in a recent CACM which 'demonstrated' that it
    didn't matter *what* you called the commands in an editor - the
    command names could be totally meaningless - when people learned
    any set of commands they were equally proficient.

Actually, that's not what they demonstrated, although it's not hard to see
why one might get that impression. (In fact, a friend who reviewed the article
warned one of the authors that it might be so construed. Ah, well...)
Their actual conclusions were:

     1) Novices and system designers use different language to describe
        text editing.
     2) That people in general describe the operations differently, and
        inconsistantly.
     3) That guessing what is "natural" or "common" rather than observing
        and analysing real users is unlikely work
     4) That although familiar words are easy to learn as command names,
        there is a danger that the imprecision of a number of the most
        common words will cause them to be misused.
     5) That a reasonable compromise might be to use words that were
        only moderately common, so that they are recognisable, and thus
        more easily remembered than totally unfamiliar words, but don't
        suggest so many different and possibly conflicting means as to
        lead to misuse.
     6) That it is more important that the commands be unambiguous and
        precise than familiar and memorable.
     7) That 'rational design of commands and command names for usability
        requires deeper understanding than is captured in the slogan
        "make the language natural."'

What leads to the misinterpretation is that they point out that they have
no direct evidence that the approach of taking moderately familiar words
which they suggest in #5 above will work. It is merely a conjecture they
have drawn. The confusing passage is:

    "We have no direct evidence of this conjecture. In fact, the results
    of Experiment 2 give little support to the belief that word choice
    is of much importance at all. However, as stated previously, we are
    reluctant to conclude that word choice would not be influential in
    larger command sets used for longer periods."

Given that subjects in the study only learned the Unix (tm) ED editor's
APPEND, DELETE, and SUBSTITUTE commands in addition to the command to start
an exercise (START n), and how to abort the entry of a line (with @), and
terminate input for an insert (with .) virtually *ANY EDITOR* would have
a significantly larger command set! So that warning at the end is very
important. Also, note that although they say their experiment gives little
support to the notion, they do not say that it disproves it. It is very
important in logic, math, and research to remember that there is a big
difference between failing to prove something and disproving it.

So, although it may not matter whether your editor's entire command set
consists of DELETE, APPEND and SUBSTITUTE; or OMIT, ADD and CHANGE; or
ALLEGE, CIPHER and DELIBERATE; if you use have a larger command set it may
make a difference what you chose as command names. Also, they did find that
command syntax could be important.

		Mail address : ...decvax!decwrl!rhea!kryptn!ts1!burrows

              -------------------------------------------
 End Forwarded Message

idallen@watmath.UUCP (11/14/83)

If some people think CHMOD should be "chmod mode file" and others think
"chmod file mode", then either choice will have a bunch of people making
argument-order mistakes.  You wouldn't have this problem if you were
allowed to flag the type of one or both parameters:

   chmod a b c d mode=0777
   chmod m=077 a b c d
   chmod a b m=0777 c d
   chmod 0777 file=a
   chmod f=a 0777

This way, neither you nor the command has to remember the order at all.

Of course, the idea of "chmod mode file file file mode file file file"
can't work, since UNIX files can look just like modes.  Even if they
didn't look like modes, the argument order problem is still there.  Is it

    chmod mode file file mode file file
       or
    chmod file file mode file file mode   ?
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

israel@umcp-cs.UUCP (11/22/83)

	From: idallen@watmath.UUCP
	
	Of course, the idea of "chmod mode file file file mode file
	file file" can't work, since UNIX files can look just like
	modes.  Even if they didn't look like modes, the argument order
	problem is still there.  Is it
	
	    chmod mode file file mode file file
	       or
	    chmod file file mode file file mode   ?

Of course it can work!  After all, are the two above cases ambiguous
from a human point of view?  All you need is a recognition procedure
for a validly constructed mode definition, and also a couple of
heuristics to use, such as:

1) if it starts with something that could be a mode, it is in
   mode-first format.

2) if it ends with a mode, then it's in mode-last format.

3) if its in both formats, or neither, then error.

4) if a mode is also the name of a file in the current directory, and
   could be either a mode or a file (in other words, not in either the
   first or last position), then ambiguity; print out a message and do
   something (continue or exit).

Note that #4 is a new problem (not currently in 'chmod' now) brought
about by the extended paramter parsing.  This is equivalent to the
problem 'rm' (and other processes) have of files beginning with
dashes (i.e. 'rm -f' meaning (to the user) 'rm ./-f').
-- 

^-^ Bruce ^-^

University of Maryland, Computer Science
{rlgvax,seismo}!umcp-cs!israel (Usenet)    israel.umcp-cs@CSNet-Relay (Arpanet)

idallen@watmath.UUCP (11/27/83)

=======================================================================
    From: israel@umcp-cs.UUCP   Mon, 21-Nov-83 17:24:50 EST

    Of course it can work!  After all, are the two above cases ambiguous
    from a human point of view?  All you need is a recognition procedure
    for a validly constructed mode definition, and also a couple of
    heuristics to use...

The problem with heuristics is that they don't always work.  If you
can tolerate a command language that will sometimes come back to you
and say "what do you really mean?", heuristics are wonderful.  You
can then engage in a dialogue with the command interpreter to sort
out what you really mean to say.  If you carry the idea to extremes,
you eventually end up with a menu-driven interpreter that always asks
what you mean right from sign-on.  I have no objection to this.

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".
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

mmt@dciem.UUCP (Martin Taylor) (11/28/83)

============
  From Ian Allen:
  The problem with heuristics is that they don't always work.  If you
  can tolerate a command language that will sometimes come back to you
  and say "what do you really mean?", heuristics are wonderful.  You
  can then engage in a dialogue with the command interpreter to sort
  out what you really mean to say.  If you carry the idea to extremes,
  you eventually end up with a menu-driven interpreter that always asks
  what you mean right from sign-on.  I have no objection to this.
========

I have an objection to carrying such ideas to extremes. If a dialogue
is designed in such a way that ambiguities are few (cp 0666 0777 is
the example given), then most of the time the command interpreter need
not query every command. The problem is elsewhere: the command interpreter
must know what kinds of arguments are needed for any program that could
be called, so that it can tell whether there is an ambiguity. This is
contrary to the UNIX philosophy, but it is in line with the human user's
idea that the other side of the dialogue is "the computer", rather
than "the current shell" or "the cp program".

One cannot tolerate a command language that asks for ambiguity correction
when it is supposed to be running in background. This is why I suggested
in my original article on this theme that there should be a formal and
exact command language for background commands and a more flexible
command language for interactive commands, in an exact analogy with
the formal language used in writing (non-interactive) as compared with
the informal and flexible syntax used in conversation.

=========
  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".
============
You never will find a command language that works first time and
every time, if only because the users make mistakes. The language
specification may be precise, but the overall result may be better
if an imprecise language, easier for humans, can be used. I don't
think the objective is to design "a command language that is supposed
to have a precise meaning" but to provide ways of interacting with
the machine that get the job done easily and without frustration
on the part of users. There may well be circumstances that demand
a precise specification, but common situations may benefit from
the application of a little tolerance on the part of the command
interpreter.
-- 

Martin Taylor
{allegra,linus,ihnp4,uw-beaver,floyd,ubc-vision}!utcsrgv!dciem!mmt

laura@utcsstat.UUCP (Laura Creighton) (11/28/83)

I have been thinking about those long names. They will be a pain to type,
right? So I will either have a shorter-to-type private version in my bin,
or the command interpreter will understand abbreviations (perhaps like
TOPS-20). So the question is "who are the long commands for"?

there are people who like Ian Allen, find them aesthetically pleasing.
this is all any very good for them, but if this is the primary reason
then we can just ask Ian Allen to put long forms in *his* bin...

there are novice users. Now, we never settled this the last time, but I
still think that novice users have a very short lifetime. Give them a
week or a month and they can learn to use "grep" and "cat" like the
rest of us. It is possible to design systems for them, but this is
(in my opinion) silly. They will be experts too quickly and will have
the same complaints about the long names that the rest of us have --
they take too long to type. Thus it is only the marketing types that
have "novice users" as their primary concern, since all they have to
do is SELL the product -- once they have sold it it becomes the problem
of the 'support staff' or some other group...

there are casual users. I define casual users to be users that never
will use the system often enough to become an expert -- or who use the
system infrequently enough that they have to relearn the system every time
as if "from scratch". Shoppers using a computerised store directory are
the first sort, and professors who use the system once a year to put in
a grant request and their latest paper are the second sort.

I have come to the conclusion that these people are the primary 
beneficiaries of the 'long name' command syntaxes. But now that I
have isolated (what I perceive as) the problem, I have come to the
astonishing conclusion that THESE FOLK DON'T WANT LONG NAMES.
These are the people who want menus. They want a pop-up menu with the
answer to every possible mess they could get themselves into. 

Now, what is it that the long words have over the menus...

THE MENUS TAKE TOO LONG TO GET DRAWN ON THE SCREENS.

(we will assume that you have solved the 'from leaf to leaf I'm
want to leap, across the branches I'm forced to creep' problem. It is
hard, but not unsurrmountable.) The menus take forever to come up
and get drawn. this problem is exacerbated by people who want to make
it clear to the user that they knew every feature that the vt100 has,
and thus play multiple bells and draw funny pictures in inverse video and
play with the scrolling regions. It looks spiff-o but it *takes too
long*. The problem with a menu system is that I can type faster than
it will give me the menus, so I get pissed off with the whole thing.

But this is not an inherant problem with menus. IT JUST MEANS THAT THE
HARDWARE WAS NOT DESIGNED FOR MENUS. So if you had real slick fast
hardware that didn't think that it was an ascii typewriter you could get
a blindingly fast menu system. What if you  had multiple windows
(a la blits) and if the menu maintaining stuff lived in your terminal...

I dunno folks. I think that the idea has merit, but then I haven't
heard *anybody* talking about "hardware that thinks that it is a
typewriter being user-hostile". I have yet to see the HARDWARE DESIGN
raked over the coals as I just did...and there are a fair number of
vociferous coal-rakers in the field of human factors...

Maybe bitmapped displays are too new, or maybe I have been reading the
wrong articles. What do other people think? I have just killed the
pro-"long command names" group by assuming that long commands are
menu-replacements that are useful only because menus take too long
to draw on the screen -- probably that is unfair. But, for the life of
me, I can't see what else they are for...

Laura (puzzled) Creighton
utzoo!utcsstat!laura

idallen@watmath.UUCP (11/29/83)

=======================================================================
    From laura@utcsstat.UUCP (Laura Creighton) Sun Nov 27 23:53:45 1983

    I have been thinking about those long names. They will be a pain to
    type, right?

Right, but what good is a command name that is easy to type, if you can't
remember it?  Remember the name first, abbreviate it only when you use
it often enough to need an abbreviation.  The abbreviation might even
be a system alias for the long name.  Or, it can be a personal alias
chosen when you find yourself using the command a lot.  I wonder which
is easier to remember, an abbreviation I choose myself, or one someone
else chooses for me?  With long names at least no one is *forcing* me to
remember their abbreviations.  And, if I forget my own abbreviation I
can still use the full name...

    there are people who like Ian Allen, find them aesthetically pleasing.

Wasn't me that said this.  I like them because they are easier to
learn and remember than abbreviations.  Less brain work.

    there are novice users.  They will be experts too quickly and will have
    the same complaints about the long names that the rest of us have --
    they take too long to type.
    
Quickly?  How will nonsense names help them learn?  If you want names that
are easy to type, then do the job properly and assign your favourite 26
commands to letters of the alphabet (very favourite eight to the home
row of the keyboard, of course).  Novice users are either going to
remain novices, in which case you shouldn't expect them to use a
command language at all, or else they are going to become.......
    
    ... casual users. I define casual users to be users that never
    will use the system often enough to become an expert -- or who use
    the system infrequently enough that they have to relearn the system
    every time as if "from scratch".

Every user who has ever forgotten or had to look up the name of a command
is in this category.  There are no "experts"; only experts in some area. 
Even our local UNIX gurus don't know all the INGRES database commands that
are in /usr/bin.  Any time you go scrambling for the name of a command,
you aren't an expert.  You are in need of mnemonic aid for a command name.
You don't need a cryptic abbreviation, you need something you can remember.
Something that works in with all the other command names you know.

    I have come to the astonishing conclusion that THESE FOLK DON'T WANT
    LONG NAMES.
    
Research report number?
    
    These are the people who want menus.  They want a pop-up menu with
    the answer to every possible mess they could get themselves into. 

Hey, you forgot to interview me.  When I need to do something, I don't
want to have to call for a menu of all possible moves (especially at UNIX
shell command level -- at last count WATMATH had 400 command names out there).  
I'd rather that the command names were structured so that I could build
on what I already knew (like deriving debug_pascal from compile_pascal).

    I have just killed the pro-"long command names" group by assuming
    that long commands are menu-replacements that are useful only because
    menus take too long to draw on the screen -- probably that is unfair.

Not unfair, just not true.  You can't replace the mental step between
"compile_pascal" and "debug_pascal" with a menu of 400 commands.
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo

laura@utcsstat.UUCP (Laura Creighton) (11/30/83)

Okay, I have 2 problems. First of all, i thought that the names were
supposed to be easier to remember because they were aethetically pleasing.
Why are they eaiser to rememeber then?

I actually have 14 one letter commands in my bin, so speed of typing
is very important to me. All the commands in the editor I know are
one letter commands as well. Somehow I seem to remember them.

What does the long commnds give you that a really fast menu wouldn't?
i thought that the long commnds and the menus were designed for the
same group of people. If they aren't then you have isolated a group
of people whom I do not recognise. Note, that I do not think that
novices become casual users, but that I think that they are two very
different groups of people. I also do not think that being an 'expert'
is some boolean function like "being alive" where you either are one
or are not. What I know about ingres right now could fit on a 
postage stamp -- but I bet if i had to learn how to use it it would
take me a week, after which I would start wanting to have shorter
names for things...

But I am perfectly willing to admit that my whole problems with "too
much typing" would go away if I could get a menu system that went
fast enough and was not organised heirarchially (or strictly
heirarchially). It is just that the menus take to long to get drawn,
so they are more of a pain than the typing.

What have I missed here? I still don't know what it is.

Laura Creighton
utzoo!utcsstat!laura

thomas@utah-gr.UUCP (Spencer W. Thomas) (11/30/83)

I once used a system which had long names with several components,
separated by hyphens (don't use underscore, you have to shift to get to
that on most keyboards).  You could abbreviate any component of the
command (as long as the whole thing was unique).  This seemed to me to
be a pretty good compromise.  Thus, I don't have to type compile-p (to
distinguish it from compile-c), I can type c-p (which is probably not
unique, but you get the idea).  But, I can also type out the full name
if necessary.  This goes together pretty well with the "cross product"
theory of command composition.

(Of course, it's not clear to me why I really need different commands to
compile C and Pascal - the C compiler will only work on files whose
names end in .c anyway.  So why can't I just have a "compile" command
which figures out for itself which compiler to invoke. (Sorry for this
nit, it just bugs me sometimes.))

=Spencer

henry@utzoo.UUCP (Henry Spencer) (11/30/83)

I'm afraid I have to go along with Laura.  A user who does not know
how to do what he wants does not *want* to have to guess whether he
should type "list", "print", or "output" (to say nothing of "lpr"!)
to get a printout on the line printer.  He wants a menu which says,
among other things:

	list	list contents of current directory
	print	print a file on the line printer

I hope this example clearly indicates the perils of requiring users
to guess command names, be those names long or short.

Ian! comments "novice users are either going to remain novices...or
become casual users".  Wrong, this was just Laura's point:  either
they will become casual (i.e., once-a-month) users, or they will
become experienced users.  No way will they remain novices (in the
precise sense being used here).  "Experienced" does not necessarily
mean "expert" or "knowledgable"; it means "I know how to do the things
I do frequently".  This is exactly the right condition for abbreviations
and short commands.  When dealing with things she does not do often,
the experienced user (that includes you and me, folks!) is effectively
a casual user, i.e. has no idea how to obtain function "foo".  This is
exactly the right condition for menus.  Why do you think summary cards
are so popular?

Ian! further observes that he doesn't want to call up a 400-item menu.
This is so ridiculous that I can only class it as a deliberate attempt
to obscure the issue, like the twits who still refuse to install Unix
because "its file system isn't crashproof".  Nobody in his right mind
is going to set up a 400-item menu; it's going to be tree-structured,
with a top level set up by general areas of activity.  With a fast display
and a mouse, getting to (say) Pascal compilation from there is click,
click, click.  Faster than typing "compile_pascal", and no memory needed.

I agree with Ian! that if one *must* guess the name of a command, life
is simpler if names are formed systematically so that guessing is easy
and reliable.  The point is that the system should not require me to
guess command names at all!
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

tugs@utcsrgv.UUCP (Stephen Hull) (11/30/83)

Interesting thought:
	Ian! said that you can't have the command "chmod 0666 0777" change
meaning on the basis of whether or not there's a file "0666" in the directory.
	However, it's perfectly acceptable for UNIX people to have the command
"chmod 0666 0777" change meaning on the basis of whether or not there's a file
"chmod" in the directory.

    steve hull
-- 
UUCP	{ linus ihnp4 allegra utzoo decwrl cornell
		floyd watmath uw-beaver ubc-vision }!utcsrgv!tugs
	{ decvax cwruecmp duke research floyd }!utzoo!utcsrgv!tugs

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

Laura, 
Your view of the world is too narrow to see over the top of your keyboard.
When you go out of the computer room at your school, you may run into 
many computer users who are not interested in learning about computers...
they just want to get their work done.

Of course there are the novice users and those executives or secretaries
who could benefit from menus.  Menus could possibly solve 90-100% of their
problems.  This is being used in the *real* world.  Long command names
for commands are not necessary for them since they do not need commands
at all.

The infrequent users need a way of remembering the commands (which may 
be the full command name rather than the abbreviated form).  Some of the
systems I have seen contain several levels of abbreviations and synonyms
for the commonly used commands plus personally tailored versions which
are automatically added to the system (global) versions.  This seems to
work rather well when the synonyms and abbreviations are used.  In general,
a user can use the whole command name (or its synonyn) or its abbreviation.

There is a set of users of computers who must contend with multiple sets
of operating systems, editors, mail systems, etc. which are operating
on different brands of hardware and software.  If they must become experts
to remember the abberviated forms of all of the commands which they need
to commonly use, nothing would ever get accomplished.  I find myself lucky
that I only use 3 computer systems (with completely different command
formats and different names)!  I know of people who use more than 3
systems during a week (although I use all 3 almost every day)!  This
may become more common with the proliferation of small cheap machines.
These people want to get work done, but having to learn all of the 
abbreviations for each of the systems on which the person is working
is too much of a burden.

From experience, once the salesman has sold the software, the fun just
begins!  Many places do not have *experienced* staff to install the software
and maintain it.  If the commands are not spelled out completely, the
installer-user becomes confused and frustrated.  This is one of the
reasons that computers and software have bad reputations (ie: the computer
made an error.... not that the person using the computer made an error
while using a program).  Some of the people using the software are very
bright, but are not familiar enough with the computer to understand all
of the abbreviations and computer jargon.  I constantly deal with people
who are non-experts who are trying to install and use software.  These
problems repeat themselves often.

This is not to say that I am against short command names and abbreviations
and synonyms... On the contrary!  However, they have their place, and
must be taken in perspective.

Larry

jack@rlgvax.UUCP (12/02/83)

How about taking  this  discussion  off  of  net.nlang?   It
really should just be in net.cog-eng.

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

.
I think that you missed the point that I was trying to make.

The problem lies when people have to use more than one system at
a time (ie: more than one computer, or more than one software system
on a computer system).  If each such system has its own abbreviations
and synonyms for the desired functions, a person would have to constantly
have to consult reference manuals and other sources just to be able to
use each of the systems.  This becomes confusting when each such system
has its own editor, text formatter, mail system, file system directory
command, etc.  If each such system tends (notice that I have not REQUIRED
each system to be the SAME) to have similar command names (the full name),
it is easier to move between environments.

For example, I may use a computer during the day to do the following
activities:

Document preparation (reports, presentation materials, memos, etc.)
Mail
Database retrieval
Write programs (including writing, compiling and debugging)
Read the news and bulletin boards


If each system had the same command to do a particular activity (such as
print the current information on the terminal) such as the "print" command.
If each system had a different abbreviation, changing contexts (moving from
system to system) would become mentally taxing!  How could you remember
what the *correct* abbreviation currently is if you must know which
system you are currently in?  If the set of abbreviations is  
{p, pr, pri, print, prt, pt}, you would have to do a mental context
swap every time you entered (or popped back into) a different software
environment!  I run into this problem frequently when I am using 4 or
5 different editors/text processing applications concurrently.

There is no doubt that there is a need for abbreviations and synonyms,
or menus, or some other time saving devices, but that is no excuse to
reduce commands to 1-3 letter/number abbreviations which can only be
remembered by experts!   Remember, as systems become more complex
and sophisticated, the number of experts who know EVERYTHING about  
the system becomes smaller.  The remainder of the people have to look
up the commands and syntax when they want to tread in new areas,   
or areas which are not their area of expertise.

Larry Koved
U. of Maryland

speaker@umcp-cs.UUCP (12/02/83)

	With long names at least no one is *forcing* me to remember
	their abbreviations.

With long names, you're forcing everyone who likes short names to use
aliases.

	How will nonsense names help them learn?

Some people need long names to keep the meaning associated with
the command name itself.  Some people have no problem associating
the command's meaning with a terse name... even a nonsense name.
I like the idea of keeping names terse (for ease of typing) yet
descriptive.  Better naming conventions are probably what you
want... not just longer names.  This problem isn't easily resolved
since we all need one nomenclature to work with and no one likes
the same one.

For novices who need help, lists of commands in menus don't
quite cut it.

Instead of menus of commands and their descriptions it might be
nice to have a shell expert-system that interacted with the novice.
This could work with pop-up windows for terminals fast enough to
handle windows, or in the style of 'write' when used with slower
terminals.  VMESS has a help facility similar in concept to this,
but incredibly primitive.

For more advanced users, lists of commands or a terse help
facility like that in EMACS would be appropriate.

I agree with Laura that a non-hierarchical menu system would
be appropriate, the bottleneck is speed and the intelligence
of your terminal.
-- 

					- Bessie the Hellcow
					speaker@umcp-cs
					speaker.umcp-cs@CSnet-Relay

billp@azure.UUCP (Bill Pfeifer) (12/02/83)

Larry,
You accuse Laura of a narrow view of the world; let me accuse you of the same!
All advocates of long command names seem to overlook one thing:
Many, if not most novice users can't touch-type!
I have been using a keyboard for many years now, but an abortion like
"compile_debug" still takes me close to 7 seconds to type with my hunt-and-peck
method.  Yes, I know that I should learn to touch-type, but I just don't seem
to have the knack for it.

I have observed many absolute novices struggling with the insane arrangement of
the keys on a standard keyboard, doing almost a linear scan of the entire
layout to find each key.  I can almost feel their frustration, if after finally
typing "compile-pascal" the system wouldn't take it, and they wouldn't know
where to get help that told them that the "-" should have been a "_".
Personally, I find "pc" much easier to remember than "compile_pascal"
(or was it "pascal.compile" or "compile_my_program_which_is_written_in_pascal"
or "!@#*&%?/_$^>/@$!").

Did you ever see the original calculator-style keyboard of the PET computer?
It cannot be used for touch-typing at all.  The explanation that I heard
for that thing was that throughout the entire design and evaluation cycle
not a single touch-typist saw it.

A novice has to struggle with learning and memorizing a lot more than just
command names.  I remember how I was baffled at first with the idea of the
directory structure of UNIX*.  There were so many new concepts to learn along
with a new set of commands.  It doesn't really matter if the new command
now is "ls" or "directory", if I'm used to "PFLIST" and "DIR" and "CAT" on
the 3 other systems I am using.  If I have to memorize a new command anyway,
let it be short.

Bill Pfeifer
Tektronix
-----------------------
* UNIX is a Trademark of Bell Laboratories.

liz@umcp-cs.UUCP (12/02/83)

What do you folks think of systems that use long names, but allow
you to type something like <space> or <esc> when you've typed enough
of the beginning?  When you type <space> and you haven't typed a
unique prefix, it fills in what it can and (maybe) rings a bell to
tell you there's more to type.  Such systems usually give you a
command to ask what all the possible commands are at any given time
allowing you to find out what your options are.

I haven't had an opportunity to use such systems much -- the two
I can think of right away are emacs when you're typing commands
out if full and RIG (Rochester Intelligent Gateway).  It seems to
me a nice compromise, but I've hardly used emacs (I prefer vi for
other reasons) and RIG has a relatively small command set -- just
used to connect you out to other machines.

I have used ncsh which fills in UNIX commands, but UNIX comands
are too short and it takes too long for them to fill out -- and
it doesn't know about aliases...  I do use ncsh to fill out file
names, and I like that feature immensely.

Comments?

				-Liz Allen
-- 
Univ of Maryland, College Park MD	
Usenet:   ...!seismo!umcp-cs!liz
Arpanet:  liz%umcp-cs@CSNet-Relay

davidson@sdcsvax.UUCP (12/03/83)

Continuing in the context of Laura's analysis, we have (1) novices,
(2) experts and (3) casual users to please with our command languages.

All but the rankest novices will know at least some commands, and all
but the most expert will not know a great many others, especially in a
system like UNIX, where a command is any program and there are hundreds
of them.  If a user knows a command, they will want to enter it in as
abbreviated fashion as possible, and aside from the question of how
they learned it, they will be better off with short names.  Both command
completion systems and regular expression abbreviation systems require
more keystrokes than short names. 

Let us suppose that the purpose of large names is to enable users to
guess at the names of commands they are not very familiar with.  Now
the name of a command, even when mnemonic, is fairly difficult to
guess, especially when there is a choice of several hundreds of
commands.  This is a common problem in EMACS, where there are hundreds
of commands with long names like case-paragraph-raise (initially
capitalize the words in the paragraph), which are similar to other
commands like case-paragraph-upper (capitalize all of the letters in
the words in the paragraph).  The response to this is that if you don't
know an EMACS command, you use apropos to find its name.  The long
names simply become a clumsy way to specify keywords.

In UNIX, we have a similar situation, but we have the advantage of
short command names and a (slightly) more sophisticated keyword based
help system (also called apropos).  If you know a command, you want its
name and options to be first, short, and second, mnemonic, in that
order of priority.  If you don't know the command name, you find out
with apropos.  If you don't know a particular option, you find out with
man.  Both the command lookup facility and the option descriptions in
the manual could stand improvement, but the division of labor is quite
efficient.

Given the choice to make command and option names as short as possible,
it is still important to make them both mnemonic (easy to guess and
recognize) and iconic (easy to associate with their meaning).  The
biggest help here is to have some regularities.  For example, the
regularity among the compiler names cc, cp, and ct help casual and
expert users guess the names.  A second big help is option consistency
across commands, e.g., l for long, R for recursive, etc.  Existing
conventions like this need to be documented and stressed, so that new
commands will tend to be consistent.

As for menu systems, I have used some excellent ones on the MIT and
Xerox Lisp and Smalltalk systems.  I've used some passable ones on more
affordable systems, including the SUN workstation.  Window oriented
menu systems can be great, as long as one of the windows is a command
window!  Being trapped in a menu system, or having only one line of
historic context in a command window is simply not worth the advantages
of menus.

-Greg

twh@mb2c.UUCP (Darth Hitchcock) (12/04/83)

BRAVO    Larry ! ! !

bbanerje@sjuvax.UUCP (12/05/83)

I'll keep this short.

a)  Menu systems would be preferable only in a situation where
  1) The menus came up VERY quickly.
  2) Are easily assimiliable.
  3) Individual items can be easily selected. ( Never having used
     a mouse, I don't know how easy it is to point with one).
  4) Its possible to escape from the menu hierarchy easily.

b)  Due to the tremendous resources tied up in hardware that won't
  support these wonderful overlapping windows, etc.  We have to 
  make the most of the glass teletype environment.  In this context
  short command names make life far easier.

Perhaps the UNIX community doesn't know how good it has it.  I've
just been using UNIX for about 2 months, and am quite delighted by
the consistency, ease of use, and indeed the elegance of the command,
file structure.  Next time you feel like complaining about something
as minor as an abbreviated command, try UNIVAC 1100 Exec-8 or a 
UNIVAC 90 running VS-9.  Tends to make one count their blessings.

-- 


				Binayak Banerjee
			{astrovax | bpa | burdvax}!sjuvax!bbanerje

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

..................

The consensus I see is to have several command interpreters.  The user
uses whichever HE finds convenient.

The especialy nice thing about this is that command interpreters must then
*compete* for users!  May the best shell win!!!!!

-- 
Spoken: Judd Rogers
Arpa:   judd.umcp-cs@CSNet-relay
Uucp:...{allegra,seismo}!umcp-cs!judd

laura@utcsstat.UUCP (Laura Creighton) (12/06/83)

I think that what umcp!koved wants is Software Tools. You can port the
Software tools editor to a dead whale and it will run, which will give
you the same editor everywhere. For those of you who *don't* like
line editors, I was told at Toronto USENIX that somebody was working
on a Software Tools vi.

I think that you missed my point again, though. I am not saying that
menus are good because they have one letter abbreviations. All the
menu systems that i have seen so far are too slow, so they lose no
matter how long the abbreviations. What I think is that long names are
an attempt to address the same user group that menus adress *faster*
than the menus can. Thus they are a good idea given the currently availaible
hardware. But that means that the next innovation should not be software,
since we have already beaten that horse for a long while, but real
fast menu hardware. 


laura creighton
utzoo!utcsstat!laura

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

I will agree that if you want to become an expert on a system, then you
will probably prefer the short version.  It should be available, and I
support that 100%.  There must be a way for the novice or casual user
to also use the system and gradually become an expert of they so desire.
That is a problem of how to recognize the command and its operands
through synonyms and abbreviations.  If you think about it, the commands
which are currently used are abbreviations of english words.  Let
the computer figure out your intent.  You can use the very short form
if you are an expert, or a longer form if you are a casual user, or the
long form if you are a novice.  If you can't type, maybe there should be
menus to guide you through the system.  That would be much faster than
trying to type.

Larry

neal@denelcor.UUCP (Neal Weidenhofer) (12/06/83)

**************************************************************************

	Has anyone else used a console on a CDC-6XXX or Cyber?  They use
an interesting and useful (in my opinion) algorithm.  For each letter you
type:

1.	If the letter doesn't fit a known command, it is ignored and NOT
	echoed to the screen.
	
2.	If the letter does fit, it is echoed, accumulated and either:

2.1.	If more than one letter can immediately follow the given letter,
	the system waits for more to be typed.

2.2.	If the next letter (or the next n letters) can be inferred from
	what has already been typed it is (they are) displayed and assumed
	to have been typed.  Similar to some ideas already suggested but
	WITHOUT needing ESC or whatever to ask the system to look.
	
2.3.	If the letter (including any letters inserted by 2.2.) completes
	the command, the command is displayed in "flash mode" and waits
	for a new-line or parameters.

	This would also take some intelligence in the terminal--probably
comparable to a menu system, but it's an interesting alternative to
consider.

			Regards,
				Neal Weidenhofer
				Denelcor, Inc.
				<hao|csu-cs|brl-bmd>!denelcor!neal

israel@umcp-cs.UUCP (12/07/83)

	From: neal@denelcor.UUCP

		Has anyone else used a console on a CDC-6XXX or Cyber?
	They use an interesting and useful (in my opinion) algorithm.
	For each letter you type:
	
	[ Algorithm paraphrased for brevity ]

	Complete as much as can be completed automatically, on a
	character by character basis, and ignore any illegal chars.

I don't know if I like this scheme (though I've never used it, and
that's the real test of whether I would like it!) because of the
following situation.

Basic assumption: command names are long (if they weren't this'd be
a pretty ridiculous algorithm to bother using).

Say I'm a casual or even expert user and I know the commands.  I want
to compile my pascal program with 'compile_pascal_program'.  I would be
more likely as a reasonably fast touch typist to try typing the whole
command.  So I type the 'c'.  Since the only commands beginning with
'c' are 'compile_*', it fills in the 'ompile_' and waits for me to
continue.  I type the 'o' which it ignores, and then when I type the
'm', it automatically completes out to 'compile_modula_program'.

A possible habit to build to fix this situation (while retaining fast
command typing) might be for expert users to remember where it
automatically completes and type the exact string which completes to
what they want.  For example, an expert might type in 'CPA' with the
command looking something like 'Compile_PAscal_program'.

This case is no better than the short mnemonics, since it is 
obviously equivalent.  Also, I think you end up remembering two
commands (the long version and the short version) instead of
one.  Another point is that any time a new command gets added to
the system the completion map changes.

I think that this scheme can be very handy for novice users (but still
does not really answer the problem being discussed, since the novices
don't know the command names to begin with, unless the naming convention
is extremely regular), but not very comfortable for casual or expert
users.

It could become useful for experts only if the system was so fast that
it had effectively instaneous completion time.  If the user ever has
to wait more than the time it takes him to type the next key, it would
probably be more bothersome than anything else.

How about some feedback?  Did you use it much and what level user were
you?  Any people out there who have used the above systems on an
expert level?  (By the way, the above opinions on the effects of such
a system are totally my own and are not meant to represent my
department, the University of Maryland, the state of Md, the USA, North
America, the Earth, this Solar system, this universe, or any other
entities of which I may be a part :-) )
-- 

^-^ Bruce ^-^

University of Maryland, Computer Science
{rlgvax,seismo}!umcp-cs!israel (Usenet)    israel.umcp-cs@CSNet-Relay (Arpanet)

kjm@ut-ngp.UUCP (kjm) (12/07/83)

  This is in regard to the Cyber console command fillout technique
quoted by denelcor!neal (immediate interactive fillout of commands
as far as possible and rejection of unidentifiable characters).

  The Cyber program which does this (Dynamic System Display) is able
to fill out commands in real time because it is resident in one of
the twenty PP's (Peripheral Processors -- sort of a programmable,
very intelligent I/O channel controller). This capability would
likely raise load averages into orbit on computers with only one
processor, because a hash table of all built-in commands and all
executable files in the search path would have have to be scanned
in processing the first character, all entries starting with that
character would have to be scanned in processing the second, and
so forth. Better yet, the technique used to handle a backspace
is to delete the last character from the input buffer and restart
the command scanner (overhead!). Finally, to do this at all, this
shell would have to run in CBREAK mode (yuck!).


        Shredder-Of-Hapless-Smurfs
        (or) Ken Montgomery
        ...!{ihnp4,ctvax,seismo}!ut-sally!ut-ngp!kjm

ellis@flairvax.UUCP (Michael Ellis) (12/07/83)

Why is all this cog-eng crap in the `natural language' newsgroup?
It really belongs in net.religion, if you ask me...

-michael