Abstraction: language as a tool for making tools

Oct 02, 2008 00:41

When we say that a tool is "easy to use", we could mean a few different things. We could mean "knowing nothing beforehand, I can pick up this tool and figure out quickly how to make it do what I want". Let's call that kind of ease "discoverability". We could also mean "if you know what you're doing, accomplishing what you want is made much easier with this tool." Let's call that kind of ease "usability".

The meaning that people most often have in mind with software is that of discoverability. I just opened this program, and I have something in mind that I want to accomplish, but I don't know anything about the program- does the program make it easy for me to figure out how to do what I want to do?

--------------

You can give an ape a board with a bunch of pictures on it (we'll call them "icons") and it can point to the icons that represent what it wants. Pointing to pictures is very easy in the sense of discoverability. But if you have a particular idea in mind, and it is assumed that you already know how to communicate using a method of your choice, you would not likely communicate by picking up a board and pointing to pictures. There's a reason this post is in the form of a stream of words and not a Youtube video of me pointing at a succession of icons. Reading or writing an introspective novel as an icon-stream would be very difficult. Verbal language is more usable than boards of icons.

---------------

Following the pattern of "something happened X Y ago" where X is a number and Y is a time unit, I would like to define a new word "tempolocal", which is used as "something happened X Y tempolocal", and means "something happened (or will happen) within X Y of now". It was very easy to write that sentence; thanks to the huge set of possibilities in recombining letters I can define a new word and enhance my expressive power. Note also that "tempolocal", like "ago", isn't used on its own; its meaning in a sentence can be manipulated with those changeable parameters X and Y. I can make reference to events that occurred 5 years ago, 5 minutes ago, 20 seconds tempolocal or 1 week tempolocal. It was clear when I was defining the symbol that X and Y were free to take on whatever value the speaker wanted, and that the remainder of the definition was to remain unchanging. Inventing new concepts, and giving them changeable and unchangeable aspects, is easy with words; I'm not sure whether anyone has figured out how to do this with icons*.

----------------

At the computer lab today, I was faced with the task of editing a program, compiling it, running 9 different tests on it (each requiring 3 commands), and editing some more (taking into account what the tests told me). This cycle- edit, compile, test- was to be repeated until every test passed.

This would have been pretty excruciating if I had to point at icons, because it's hard to define new words with icons, and that makes it hard to get rid of repetition. Thankfully, because I was using a command line, I could make batch files, which served as "new words". One batch file was to run test X (for whatever value of X one wanted). The other was to compile the program and invoke the first batch file for each test that had to be run. Then, after editing I could just run the second batch file. This gave me the results of my edits, so I could edit again right away. By getting rid of manual repetition, the command line tightened my feedback loop- that's a big deal in any creative work. Compare this to graphically selecting each of the steps every time I made an edit- it would have taken (to be generous) a minimum of 28 clicks per cycle.

----------------

A long time ago, I saw my brother using some 3d modeling software. He was clicking about on a GUI, but at the bottom of the window, out of the way, textual equivalents of the GUI commands were echoed with every click. I pointed this out. He said that if one wanted, one could type those equivalents in the command window and get the same results as if you'd been clicking around. I thought this was remarkable, but didn't really consciously know why.

Here's why- such an interface can be both discoverable and usable. While you're still learning, you can click on icons because you recognize the pictures- but if you find some repetition that needs to be automated away, you can figure out how the text commands work, because you see the correspondence between text and its result all the time as you do your graphical work.

*Note Photoshop's "Actions", which fill a need, but somewhat awkwardly. Because there's no way to specify which of your commands form the unchanging part, and which aspects of commands should be "substitutable" or "pluggable", every command given must be an unchanging part of the definition of the Action. This makes Actions inflexible. I can't make an Action that says "Duplicate the current layer, move it down once in the stack, gaussian blur it by X, and offset it by Y, where X and Y will be set when I run the action". The Action must simply repeat every command given.

This is not to say that graphical scripting is impossible; I just haven't seen it yet and imagine it would be more difficult than textual scripting.
Previous post Next post
Up