"Watch What I Do" Chapter 26


Demonstrational Interfaces:
A Step Beyond Direct Manipulation

Brad A. Myers


Most of the chapters in this book discuss systems that create programs by generalizing a recording of the actions that the user performs. In fact, the sub-title of this book is "Programming by Demonstration." However, there are a number of interesting systems that work from examples, but do not support full "programming." Also, many do not work from transcripts of the user's actions. I use the term Demonstrational Interfaces to include all systems that use examples, whether or not they can be classified as programmable. Thus demonstrational interfaces include demonstrational-programming, programming-by-example, instructible interfaces, etc. (see Appendix C). This chapter defines and surveys demonstrational interfaces.

In his classic 1983 article, Ben Shneiderman introduced the concept of a "direct manipulation" interface, in which objects on the screen can be pointed to and manipulated using a mouse and keyboard [Shneiderman 83]. This concept was further studied in other articles [Hutchins 86]. With the advent of the Apple Macintosh in 1984, this style of interface became more popular, and now is widely accepted. However, there are some well-recognized limitations of conventional direct manipulation interfaces. For example, it is common in Unix for users to write parameterized macros ("shell scripts") that perform common and repetitive tasks, but the current utilities that do this are quite limited in the Macintosh Finder and other "Visual Shells." Direct manipulation interfaces also do not provide convenient mechanisms for expressing abstractions and generalizations, such as "all the objects of type y" or "do command z if the disk is almost full." As a result, experienced users of direct manipulation interfaces find that complex, higher-level tasks that occur commonly are more difficult to perform than should be necessary.

Demonstrational interfaces allow the user to perform actions on concrete example objects (often, by direct manipulation), while constructing an abstract program. This can allow the user to create parameterized procedures and objects without requiring the user to learn a programming language. The term "demonstrational" is used because the user is demonstrating the desired result using example values.

For instance, suppose a user wants to delete all the ".ps" files from a directory. If the user dragged a file named "xyz.ps" to the trash can, and then a file named "abcd.ps", a demonstrational system might notice that a similar action was performed twice, and pop up a window asking if the system should go ahead and delete the rest of the files that end in ".ps".

In addition to providing programming features, demonstrational interfaces can also make direct manipulation interfaces easier to use. For example, if the system guesses the operation that the user is going to do next based on the previous actions, the user might not have to perform it.

back to ... Table of Contents Watch What I Do