Iconitis

Glenn L. Austin austing at Apple.COM
Thu Apr 13 02:59:11 AEST 1989


As a programmer who has worked on the IBM PC, VM/CMS, MVS, UN*X, Mac, ect, I
have to say that as a programmer, I had more control over what the user could
do under command line interfaces.  If a command wasn't appropriate at that
time, or was not typed correctly (how many times on the PC has anyone 
inadvertantly typed "DI<return>R"), or just wasn't recognized at that time.
Most of the time, I could get away with just a "simple error message" like
"Syntax Error."  I, as a programmer, had total control over what the user
could and couldn't do.

Now that graphic interfaces (like the Mac, Windows, GEM) are becoming the norm,
I have to take more care in writing code that doesn't know what order the user
normally works with.  I no longer am "in control of the user" in terms of what
the user can or cannot do, and in what order.  The user may want to open an
old document first, or start a new document, change between the documents,
close one before saving any changes, or any other thing that the interface
"allows."  I, as a programmer, don't know, and can't know, what order commands
are going to be called.

The user likes this because they have more control over how they use my
program.  Their boss likes it because the user can use more programs without
spending hundreds or thousands of dollars to send the user to training
seminars on each package they use, or spending hours of time attempting to
learn the program they are using (the hidden costs of CLI and non-standard-
ization).  The programmer generally doesn't like it because he has to cover
almost every eventuality in the order of commands.

(flame on)
I have written many programs under CLI and under graphic interfaces, and I
prefer the graphic interface.  Why?  Because (1) the user generally can be
productive with my programs without reading the manual, (2) the user can 
use the program in the way that suits him the best, (3) after writing a
shell program that implements the user interface, all I have to do after that
is *ONLY* write the specific code to create each program, a savings in time
over designing and implementing not only the meat of the program, but the
user interface as well, (4) it is a much more natural method for top-down
and modular/object-oriented programming styles.  It is not unusual to write
a *GOOD* program for the Mac in under a day (given that it is a small, but
useful program), where I can easily spend a week writing a similar program
for the PC where I am spending the time beyond the meat of the program in
tweaking the user interface.

I have found that most programmers care only about their programs.  In what
I find what I call the "mainframe mentality" in that many programs change the
environment that the program runs under without restoring the environment to
what the user specified on exit of the program.  This seems to be more
prevalent in the UN*X environment than anywhere else, this "I know better what
the user wants than the user does" attitude of programming.  Since graphic
interfaces challenge that belief, a lot of programmers are against them.
However, since most users are occasional users of programs (the exceptions are
word processors and secretaries), the "intuitive" interface is much better
than an interface where you have to remember not only the commands, but how
the programmer decided to spell the commands.  A good example of this is in
writing "KLOSE" to close the file, since C was already used in "COPY", or 
vice-versa.

(flame off)

If programmers do not provide what their users want, who will use their
programs, and more importantly, who will use computers?


-----------------------------------------------------------------------------
| Glenn L. Austin             | The nice thing about standards is that      | 
| Apple Computer, Inc.        | there are so many of them to choose from.   | 
| Internet: austing at apple.com |       -Andrew S. Tanenbaum                  |
-----------------------------------------------------------------------------
| All opinions stated above are mine -- who else would want them?           |
-----------------------------------------------------------------------------



More information about the Comp.lang.c mailing list