The future of computer software is programs and applications that think for themselves--but don't write us off the screen.
by Phil Hughes
In the GOD (Good Old Days), we learned that computers do exactly what we ask them to do. Thus, Phil Hughes is not Phill Hughes, 012345 is not O12345 and so forth. For programmers, this meant they must write exactly what they want or things didn't happen right.
This situation is in contrast with natural languages, where meaning can be expressed without perfect words. For example, both "My car is blue" and "Me car is blue" will be understood by most people. I must say that living in a Spanish-speaking country has taught me the difference between saying something correctly and just being understood. If the people here applied computer-like rules to verbal communication, I would have starved long ago.
Once people got sick of saying "it's the computer's fault", it was time to see if a computer could do a better job than a human rather than just a faster job. An early example of this was Soundex. Although Soundex wasn't developed for computing--see the Wikipedia entry for more information--it was an early attempt to make computers do what you want rather than what you said.
Soundex maps a word into a sequence of one letter followed by three digits. It commonly was used with surnames, and it is why when you called up an airline and said your name was Smith, no one asked if that was spelled with an i or a y.
This form converts a surname to the corresponding soundex code, four characters, using the rules specified in the National Archives handbook.
Type the name in the Surname textbox and click the Calculate button. The Soundex code then is displayed in the Result textbox.
That was a good first step, but computers clearly can do more. I'm not talking about calculating pi to one million digits, as that is easy. It simply takes brute force using a fast machine. What I am talking about is computers being more intelligent; that is, doing things you want them to do rather than things you specify exactly.
Let's look at browser bookmarks. This is the ability to build a list of URLs that you want to access in an easier way than typing one in manually every time you want to visit it. Browsers let you create bookmarks, and they even allow you to organize your bookmarks into groups and label them. That certainly is useful, but once again, this situation is you telling the computer exactly what you want. You have to participate actively in saving and organizing the information for the computer.
Most browsers offer guesses as to what you are about to type when you start to type a URL. The most basic is guessing there is a "www." in front of what you are typing. Both guessing this and being willing to not force it is a good feature in browsers. In addition, if you leave off the protocol, browsers usually guess "http" but still allow you to specify one, such as "ftp", without complaining.
So far, so good, but a lot more can be done and is being
done. For example, if I type
tu in the URL field of
Konqueror on this system, I get a list of a few URLs, including
and http://www.turkishpress.com. If any of these choices is the URL I
want, I simply can click on it.
This automatic listing of options seems pretty useful, but the more important consideration is this new feature didn't get in my way. That is, if I wanted to go to http://www.turismobolivia.bo instead, and Konqueror didn't know anything about that site, I could keep typing what I wanted and ignore the other choices I was offered.
This last point is the challenge for the software designers of the future. The ability to make it easier to get your work done has to include not making some tasks harder. As the user interfaces of both desktop and application programs evolve, we all need to watch for smarter software that still doesn't get in our way. In the Linux environment, the good news is user feedback tends to be taken very seriously.
About the Author
Phil Hughes is Group Publisher for SSC Publishing, Ltd.