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

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

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

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/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

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

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

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

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

BRAVO    Larry ! ! !

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

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