"Watch What I Do" Chapter 18
The AIDE Project:
An Application-Independent Demonstrational Environment
Philippe P. Piernot
Marc P. Yvon
The AIDE project intends to provide developers with a system substrate for
application-independent Programming By Demonstration (PBD). The AIDEWORKBENCH
allows a developer to add advanced macro capabilities to a Smalltalk-based
application (whatever it is) without re-implementing everything from scratch.
We first introduce the workbench by describing its general architecture and its
main components: high-level events, macros, and an "intelligent" event manager.
Then we present SPII, a general purpose graphical editor supporting PBD, which
has been implemented using the workbench. A major problem arising in the domain
of PBD is how to express users' intentions. Some features of the workbench,
particularly well suited to dealing with this problem, are also discussed.
Programming By Demonstration allows the end-user to create parameterized
procedures by demonstration in order to extend an application and eliminate
repetitive tasks [Myers 92d]. Many such systems have been implemented in
various domains [Piernot 91] including graphic drawing, text editing and
formatting, desktop manipulation, user interface creation, robotic assembly
tasks and general programming. Moreover, commercial products which include
demonstrational aspects, such as Excel 4.0 with its autofill feature or NewWave
4.0 with its agents, are emerging in the mass market.
Even though each PBD system has been written from scratch, requiring tedious
coding, most of these prototypes share common components among which we find
high-level events, a trace recording feature and a machine learning mechanism.
The AIDE project tries to provide the developer with an application-independent
Smalltalk-based environment for quickly implementing PBD-aware applications. In
the next section we describe the AIDEWORKBENCH. Then we provide an overview of
SPII, a general purpose object-oriented graphical editor built using this
workbench, and gives examples of macros that can be created by demonstration.
Finally, we discuss the way users can express their intentions in AIDE-based
Uses and Users
Application domain: application-independent
Intended users: non-programmers
How does the user create, execute and modify programs?
The user turns on recording and gives an example of the procedure. Each command is recorded and displayed in a VCR-like window (enabling unlimited-depth undo).
The user can specify data descriptions through a search dialog box.
The user can modify incorrect generalizations by giving additional examples. Undo can be applied to macros.
Macros can be selected from a menu or attached to a high-level event.
Aide tries to merge high-level events of the same class into a new event of the same class with generalized arguments. Loops are detected by finding a sequential pattern between two or more events.
Types of examples: Multiple examples
Program constructs: Parameterized procedures; loops, but no nested
loops; no conditionals.
Types and sources of information:
Aide has some knowledge about various sequences (textual, graphical, numerical) and about loop creation.
Machine, language, size, date: Smalltalk V on a Macintosh LC, 4000 lines
of documented code, 1992.
* An unlimited undo/redo capability (works for macros).
* Search dialog for specifying the user's intent.
* Can be easily extended to cope with various application domains thanks to object-orientedness.
* The current selection is used both as a macro argument list and as a return value.
back to ... Table of Contents Watch What I Do