GUI - An interface for issuing commands to a computer utilizing a pointing device, such as a mouse, that manipulates and activates graphical images on a monitor.
Graphical user interfaces (GUIs), used alone without supplementing them with a command line, make computers "easier" to use. This is true, just as reducing the number of blocks in a leggo set from 200 to two makes it "easier" to use. Creative computing demands fluency that command scripting and programming provide, and that a graphical user interface deliberately works against. The entire culture and industry of "usability engineering" is a dreadful misapplication of Occam's Razor, and makes accomplishing any sort of goal beyond that which is expressly predicted by software engineers an impossibility. In this sense, GUIs and usability design make a computer less usable, as they strip away its potential and the potential of the user.
It's important to remember that using computers isn't "easy," in the sense that it's not as easy as breathing, looking around at things, and simply opening your perceptions to reality. To use a computer, one has to think in a translational, procedural, minutiae-oriented way to get it to follow instructions and make the jump from the user's thought process to its own. The degree to which this translation is natural for users varies, and difficulty with it contributes to reluctance to use computers for both necessity and pleasure.
Eager for consumers to buy their products, the software and hardware industries try to solve this fundamental problem of translating human thought into computer instructions with graphical user interfaces and simplified commands. Unfortunately, facilitating the translation of what the user wants into the rigid languages of "simplification" devices would be impossible simply because there doesn't exist a hard drive big enough to hold the software that would be necessary to present a graphical option for every command combination. The only option industry is left with is to limit the number of things a user can do, presenting whatever options that are deemed necessary in a "simple" interface.
Often, complaints are made that computers are not "intuitive," and that a GUI needs to be built around more fundamental system functions in order to make a computer "intuitive." There is nothing inherently intuitive about, for instance, the graphical "start" menu and its various options, such as "turn off computer." Would you have figured this out if no-one had expressly shown you? What people think of as an intuitive interface is merely an interface that has been so thoroughly bludgeoned into our collective computer-consciousness that we've been artificially made to feel more comfortable with it. In fact, arguments can be made for text commands and programming tools being intuitive -- at least more so than GUI abstractions.
For instance, in UNIX, if one is familiar with the "finger" command (which lists users currently logged on to a machine) and the "less" command (which displays a file on the screen in increments), then it might dawn on one to output the "finger" command into "less," so that a long list of users can be more easily read. This is a simple, trivial example, but the same principle holds true for more complex commands. With an operating system like UNIX or a programming language, commands, syntax and semantics can be combined to form a grammar that will become, with attained fluency, a near-pure expression of computing thought. With programming and language-like operating systems, one can do almost anything conceivable, and attain fluency in a way that can only be described as intuitive. Once you know the language and its grammar, you can come up with sentences that have never been spoken before, and don't need to be shown every possible sentence.
The fact that we don't think to use the computer for any other purposes than those that are expressly laid out for us in our guis is indicative of the GUI's detrimental effect on creative computing, at least when it is the only interface option (Mac OS X has a GUI, but also a command prompt with which one can access the BSD kernel of OSX, and enjoy all the fluency of shell programming).
If our minds are trained from the very beginning to think of a computer as a static thing, something with which we can only accomplish a task if we're expressly shown that it can be accomplished by a button-and-label, then the real power of computers will always be hidden from us. This situation occurs much to the delight of the consumer computing industry, which wants to sell the powerful hardware needed to run the complex software that this over-abstraction and rigid "simplification'"creates.
Microsoft and Apple are guilty of eclipsing what's "really going on" in a computer with layer upon layer of abstractions, until something like dragging a file into the "recycle bin" is equated with removing a flag on certain areas of the hard disk (which may or may not be in a single place) that prevents these areas from being over-written. Of course, some layers of abstraction are nice to have, such as a lower-case "a" in place of "01100001."
But the fact is that computers don't think the way people do, and people are going to have an easier time thinking like computers than computers will have thinking like people, simply because people are infinitely smarter. Generating "usability" standards that make things "simpler" for people ultimately and inevitably narrows options and decreases the number of things a user is able to tell a computer to do.
For instance, it's possible for this computer I’m sitting behind ("this computer" taken to mean purely its hardware) to automate the process of reversing the "Rush" song I’m listening to ("Workin' Man"), taking out every note higher than the 655mHz, and then sending the result to every person in my email address book who has at least one "J" in their first name.
However, I don't see a check box or menu option that says "reverse current song," "remove notes higher/lower than ___mhz," "send song to people with [number] of [letter] in their first/last name," etc. Ultimately, any GUI with even a relatively small number of possible commands and options translated into abstraction for the user is going to take up an enormous amount of memory and be extremely complex.
Of course, it's impossible to achieve complete freedom of expression with a computer, unless one uses a neural link like the one Reg Barclay built on an episode of "Star Trek," but certain operating systems and their native programs do come a lot closer to this ideal of perfect fluency than others. With these, the system for communicating with a computer is fluid and dynamic. In other words, commands and arguments can be combined in almost every conceivable way, and the user can do things that the author of the system kernel never conceived of. Essentially, this amounts to the power of programming -- being able to tell a computer exactly what you want it to do, and not being at the mercy of a deliberately crippling graphical interface.
Programming is somewhat difficult to learn, but no more difficult than human language, which our brains have the ready capacity to absorb. Microsoft's (and apple's, pre-OSX) motivation for making their computers "easy" to use (and essentially non-functional) is not only to ensure that everyone feels that they are competent computer users, encouraged to drop $1,500 on computing power they only need to deal with the immense GUI bloat of most software, but also because with programming comes tremendous power over a computer, a power that computer industry executives most certainly don't want the average user to have, because it would mean an end to dependency on software and hardware bloat.
As our society becomes more dependant on computers, the basics of programming and computer engineering should be taught to children when they are toddlers, along with the rudiments of their native spoken language. Many "wizards," in any field, have been stunted because of improperly administered early childhood education. Kids are exponentially smarter than they are given credit for being, and there's nothing in particular about, say, the rudiments of calculus that differentiates it from the "ABC's"; it's simply an abstraction that fewer people are accustomed to. But children absorb each abstraction as readily as the next, regardless of an adult's inability to maneuver his or her stiff and lazy neurons around new or unfamiliar ideas.
Thinking about computers should inspire excitement at the immeasurable creative possibilities associated with their use, and not dread at the prospect of having to slog through some GUI architect's mindless sheep-farm to accomplish the few computing tasks that have been sanctioned by industry. Elimination of dependency on GUI represents a revolution for the end user, just as the implementation of GUI represented a revolution for industry.