[net.cog-eng] expert/novice interface in one program

lgondor@utcsrgv.UUCP (Les Gondor) (08/18/83)

Here at the University of Toronto's Structured Sound Synthesis Project
(a research group devoted to computer music) we have faced the problem
of both experienced and novice users using the same program.  Unix, with
option flags and other command line arguments makes for a good interface
for expert users but is usually intimidating and confusing for a novice.
Hence, we have adopted the practice of writing software with graduated
front ends.  If a novice user (typically a musician/composer with absolutely
no computer programming experience and sometimes no computer experience
as well) types in the name of a command alone, he or she receives prompts
for the relevant data (name of the music file, name of output file, etc.).
On the other hand, an expert user would tend to incorporate all of the
required information in the command line.  This practice is used only in
the basically non-interactive programs, menu-driven programs present
uniform interfaces to the outside world.

The question is, how many other people out there have used the same
approach in serving a user community of widely varying competence?
What other approaches have you tried?

Interesting thoughts to the net or reply by mail and I will summarize
to this group.

From the idle port of:
Les Gondor, U of Toronto CSRG
{linus,floyd,allegra,ihnp4,mhtsa,uw-beaver,decvax!utzoo}!utcsrgv!lgondor
ARPAddress: utcsrgv!lgondor@UW-BEAVER

rcj@burl.UUCP (08/25/83)

I like to use the following approach for a program called (for example)
auas (Arithmetic Unit microcode ASsembler):

$ auas

auas [-B bfile] [-D dfile] [-d] [-e] [-L lfile] [-l] [-m] [-p] [-y] infile

(For verbose description of switches, type "auas -e")

$ auas -e

auas [-B bfile] [-D dfile] [-d] [-e] [-L lfile] [-l] [-m] [-p] [-y] infile

-B bfile	optional MICA output file name, default is au.<infile>.b
-D dfile	put microcode debug information in <dfile>
-d		put microcode debug information in au.<infile>.d
-e		explanation of switches
-L lfile	save (normally temporary) listing file in <lfile>
-l		save (normally temporary) listing file in au.<infile>.l
-m		save (normally temporary) MICA input file in au.<infile>.m
-p		run only preprocessor; do not run MICA
-y		YACC debug option

+++++++++++++++++++++++++++++++++++

Another thing that I would like to see more of is SCCS's help feature.
If you do something wrong, it will give you a reference to a verbose
help text, thusly:

$ get -e s.pds_insert

ERROR [s.pds_insert]: writable `pds_insert' exists (ge4)

$ help ge4

ge4:
"writable `...' exists"
For safety's sake, SCCS won't overwrite an existing g-file if it's writable.
If you don't need the g-file, remove it and rerun the get command.

+++++++++++++++++++++++++++++

That's enough suggestions for one article,
-- 

The MAD Programmer -- 919-228-3814 (Cornet 291)
alias: Curtis Jackson	...![ floyd sb1 mhuxv ]!burl!rcj