In principle two different types of user interfaces exist. Text-oriented commandline interfaces (like a telnet connection or an S-Plus session) and graphics-oriented "interactive" interfaces (like the MacOS). The following are a few thoughts about how to unify the advantages of both approaches.
You type commands (or edit a script with a texteditor), send them to the computer (usually you simply press enter at the end of your line) and the computer executes the commands. You usually are allowed to assign a name to the result to be able to refer to it later. For instance
model1 <- glm(y ~ x1 + x2 + x3, family=Poisson, data=MyData)
might assign a generalized linear model to "model1", and other functions - taking model1 as input - could retrieve residuals, goodness-of-fit, etc.
The effords for learning how to do even simple things are high. You have to remember the names of all the functions you expect to be useful. You have to watch your syntax when typing (even if professional hackers don't find it as tedious as other people do - even they have to force their thoughts into the correct syntax). You have to remember what your own abbreviations (like "model1" - not an overly descriptive name) mean. And usually you never get direct feedback of your actions - especially not when dealing with statistical graphics. For instance changing the binwidth of an histogram requires to process the same command that generated the histogram in the first place again - augmented with another parameter giving the desired binwidth). Moreover, commandlines are dealing with exact numbers. For instance for changing the binwidth of the histogram you have to pass the number of bins (or the binwidth). You can't say: "a little wider, please". You have to be exact. You can't "just try" something. You have to know in advance the exact description of what you are attempting to do.
It's exact and concise. Once you mastered the rookie's struggles, it's pretty powerful. You can do almost everything - it's up to you to implement a new function for whatever you want. The steep learning curve has the advantage of educating the user - you have to know what you want to do before being able to do it. No poking around at random (or -to be more polite- no exploratory stuff).
All objects of interest have a graphical representation. Your usual manipulation tool is not the keyboard (like in the commandlines) but the mouse. You're using left/right clicks, double-clicks and drag&drop to apply standard procedures to the objects. What can't be done this way, has to be done by menus.
The effords for learning how to do even things of moderate complexity are low. What you see is what you get. All your actions have direct visual feedback, and you can "touch" and interrogate objects to learn more about them. Changing the binwidth of a histogram is a matter of "grabbing" a bin separator line with the mouse and jiggling around until it has the desired width. The display of objects is self-explaining, so you instantaneously have a clue about what to do with these objects. Furthermore you are not forced to use a complicated syntax only because the computer wouldn't understand anything if you weren't. You can follow you thoughts without being hindered by technical details. You don't attempt to be perfect on the first try but instead reshape and redesign your resulting objects again and agein. You never have to repeat the whole procedure. You take the output and manipulate it directly.
Almost everything advantageous the commandlines have, can't be found in graphical interfaces. They are not exact (try to do a selection in a scatterplot that ranges from 0.336 to 0.873). The complexity of things that can be done is limited. For instance there is no easy way of modeling in a graphical interactive way (and that's what Omega is aiming at). Usually it's not possible to program you own extensions.
I suggest to use something like "graphically augmented text" as the main user interface, but a whole system would consist of several interfaces with different tasks.




