There’s one area of computing that I secretly love more than any other: interface design. Silicon, artificial intelligence, programming and other popular fields get more attention, but they mean naught if the interface is an unholy mess. I’ve seen more interface abuse than I care to imagine, which stems in part from the wholesale inappropriate reliance on a GUI as the be all and end all of user interfaces.
See, I’m a command line boy. I wouldn’t suggest that it’s easier to use; learning the rules and language of the command line has a steep learning curve, and like the GUI, it’s far from a complete solution. But, similarly it has its place, if not as an input mechanism, then as the foundation for future interfaces.
If we think about how we use a computer, we construct a top level order, and then give that to the application. If I want to see how many pages are waiting for me to edit on our fileserver, I simply think ‘how many pages are waiting in my editor’s folder?’. In a command line, it would be a one line translation of that into the command line language, which is simply the quickest, and for this particular action, most intuitive interface (provided you know the language).
To do so in a GUI, I would need to create more requests as I peel through the layers, like ‘go to My Computer’, ‘go to Network Places’, and so on until I hit my folder. Hotkeys and shortcuts can take some pain out of it, but they’re still trying to make me adapt to the rules of a GUI, which simply isn’t up to the task. In fact, it puts in extra steps, where each step must be learned. Where a GUI is necessary is in anything that requires a spatial representation. Browsing files, for example, is far better in a GUI. Games and graphics, too, are clearly better in a GUI. But for specific directives, it’s inappropriate and places unnecessary steps and restrictions to what users can do.
Watch a new user sit at a PC and you’ll hear them make statements like ‘how many emails did I get from John in the last week?’, or ‘what’s the weather going to be on Wednesday?’. It’s up to the user to translate them into meaningful steps that the GUI can understand. A command line, by its nature, can take the raw statement and produce the results from a single input -- that’s a real interface.
The problem is that such a command line interface doesn’t exist today. Regardless of the drawbacks to a GUI, it is still easier to use than learning the communication rules of a command line application. What we need is a natural language parser. Something that can take commands as close to the user’s language as possible, and then translate it into something a computer can understand. And when you have a natural language parser, you’re one step away from a full voice recognition system, which is the simplest way a human can communicate.
It’s not new -- think Star Trek. The crew would use voice commands for exactly the type of tasks that you’d use a command line for -- specific directives, based on pipes, greps, inputs and outputs -- all in natural language. The famed LCARS graphic interface on Star Trek: The Next Generation and onwards is used for tasks that require spatial representation, like plotting a course.
So, while Spielberg might reckon we’ll all be flapping around in front of a computer screen like Minority Report, I reckon that’ll just make our arms tired. The reliance on GUIs is an interim, and no amount of spinning, translucent 3D widows in Vista will drag it into the future. Keep the command line, focus on natural language, and throw some more weight behind voice recognition. That’s the future.
Vive la ligne de commande!
Icon taken from Tango Icon library