« My Best Fiend, Neverwhere, All the Queen's Men, The Stuff and Transylvania 6-5000 | Main | Timfoolery »

November 11, 2004

GUI

This is in response to Schlake’s entry, which read:

What You See Is All You Get

It means that GUI’s are primitive ways to deal with a computer.

I disagree completely. GUIs are a more evolved way to deal with a computer, and it must be so for two reasons:

  1. They have all-but extinguished the linguistic interface, and
  2. They came after the linguistic interface.

It seems obvious to me that this is evolution in progress. :) However, what he means is, the linguistic interface is more powerful than the GUI interface. And that, I agree with.

During the day, I program for the Mac. Now, I am the second-least comfortable with GUI programming in the firm, and of the four programmers I do probably the second least work with GUIs. Michael is very much a human interface geek, and is very well aware of the Aqua Human Interface Guidelines, to which Mac apps should be written for maximum consistency. It’s also not stretching to say that this accounts for more than half the code in whatever we do, regardless of how complex it is. It probably accounts for 75 or 90% of the code. Our next product, Spamfire 2.0, is just a spam filter; it shows a list of messages and lets you press buttons to affect them, and it has a preferences system. Yet, the code for managing just that is huge compared to the rest (though less so since Michael and I cooked up MFModel).

Now, as a programmer, I desire the maximum configurability, minimum wasted time and minimum loss of information. I prefer a linguistic environment to a GUI one in general, but then again, I’m typing this into a browser rather than Emacs, and I have Thunderbird instead of Emacs mail. So it seems that there are some projects for which the GUI is simply more effective, due to the visual nature, especially in areas where programmability is less important.

The main win of the GUI is to bring the computer to people without linguistic interest. I happen to know that my folks would be so much more effective using the computer if they would use Unix and program it to help with the data they need to keep straight. But they find that much more difficult than doing things the rote way. If I installed Unix, they’d just use OpenOffice.org, and continue to keep their data in the mail app and the “word” documents, because that’s the only system that adds up for them.

The GUI was developed for them, by us. We developed it for them because they can’t handle (for whatever reason) the linguistic interface. The only reason it’s less powerful than the linguistic interface is because we intended it to be less powerful, because it was developed second. We assume that there will always be language there in the background for us to use, at least to implement their tools. Few programmers write elaborate GUIs for themselves; we mostly write them for other people.

But what makes a GUI anyway? Pointing and clicking, and a geometric system for displaying information. You know, part of what makes the GUI code so complex is because there are so many cases. Your app has to appear stateless and stateful at the same time—you want as little as possible to require attention immediately; hence, the form or wizard is a one-time setup operation. Modality is not permitted. By contrast, in Mutt, it’s perfectly acceptable to say something like “Subject: ” and wait for me to type it in. Because I can’t do anything else: everything is at the behest of the program, rather than the program being this great servant of the user.

If you think about it for a moment though, the GUI is just a stream of input to the program, much like text is to a linguistic program. The program parses the input somehow and performs actions based on the input, generating output. There’s no reason for GUIs to be dumbed-down. Good GUI programs respond the way you expect, don’t give you any lip, and do what you mean. Any program has sufficient linguistic properties in my opinion if the authors of the program couldn’t forsee every possible use of the program. I can think of precious few GUI programs which meet this criteria—Emacs really being the only one. But there’s nothing forbidding it.

You should check out some of the IDEs out there today. With intelligent, context-sensitive completions and helpful remarks as you’re coding, they can be pretty awe-inspiring.

Posted by FusionGyro at November 11, 2004 09:09 PM

Trackback Pings

TrackBack URL for this entry:
http://www.clanspum.net/~fusion/blog/admin/mt-tb.cgi/44

Comments

Post a comment




Remember Me?

(you may use HTML tags for style)

Want HTML? Use Textile instead.