[net.cog-eng] name=value or -n value? -- a different approach

ralph@utcsrgv.UUCP (ralph hill) (03/22/84)

I was thinking about Gary Perlman's recent submission about command line
consistency, etc..  One of the key things for me is his mentioning the
command line parser that he has been working on (but the world never got).
Such tools are very important to getting good and consistent interfaces.
(It is important to note that the Waterloo command line syntax is supported
with a very nice command line parser).

While this is much better than having every body cut their own parser from
scratch each time round, there are problems.  Some problems are cause by
having part of the user interface (UI) bound in the program (through the
command line parser) and part in the shell (variable and file name expansion,
etc.).  These two parts of the UI can fight each other (parser confused
by file name expansion, ...).  Also, one part is easily (sort of) and
frequently changed (I know of at least 4 different shells), while the other
is very unlikely to change (when was the last time someone re-wrote
the command line parser for a non-trivial number of programs?).

I think all user interfaces should be handled by the same system (a shell
analogue) so they can be easily changed en masse, and so they consistency
can be enforced.  This starts getting us into user interface management
systems (see the proceedings of December's SIGCHI conference, SIGGRAPH'83
proceedings and Computer Graphics V17 N1).  Traditionally, they have
only used to develop interfaces to a single system, but some people at
CMU (see references) have been applying one to UNIX.  What they do is
define a standard (machine friendly) interface that all applications
adhere to, and then use a UIMS system to build semi-decent interfaces.

This still leaves the problem of shell scripts, but the "machine friendly"
interface could probably be used to advantage here (possibly making
a readable shell language).

To summarize, I want to say that consistency and standards are necessary.
Command line parsers as a library routine instantiated in each program are
a big help (as suggested by Gary and demonstrated by Waterloo).
I think that another, possibly better approach, is to use a UIMS to do
a centralized UI to machine friendly programs.  This allows the UI to be
changed easily and ensures that consistency is enforced (hence 
"value=blat vs. -v blat?" is an irrelevant question -- you can do both
(consistently) and see which one you like).

References:

Ball, J.E.          A Test-Bed for User Interface Designs.
Hayes, P.J.         Proceedings, Conference on Human Factors in
Mar 1982            Computer Systems: pp. 85-88.  March 15-17,
                    1982, Gaithersburg, Maryland.

Hayes, P.J.         Graceful Interaction through the Cousin
Szekely, P.A.       Command Interface.  Tech. Rep. CMU-CS-83-102.
Jan 1983            Pittsburg: Department of Computer Science,
                    Carnegie-Mellon University.

------------------
        Ralph Hill   CSRG   University of Toronto

UUCP    cornell ihnp4 ubc-vision linus floyd allegra uw-beaver >!utcsrgv!ralph 
ARPA    ralph.toronto@csnet-relay
CSNET   ralph@toronto


P.S.: That's right, I think machine friendly systems have a future -- in
their own way. :-}