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. :-}