Title: Programming by Example
1Programming by Example
- Henry Lieberman
- Media Laboratory
- Massachusetts Institute of Technology
- Cambridge, MA, USA
- lieber_at_media.mit.edu
- http//www.media.mit.edu/lieber
- PBE Web site http//www.media.mit.edu/lieber
/PBE/
2Your Wish is My CommandProgramming by Example
3Programming should be like teaching
- User plays the role of a teacher
- Computer plays the role of a student
4Programming by Example
- (Also called "Programming by Demonstration")
- Agent "watches what you do" in an interactive
interface - Records sequence of operations, data
- Generalizes program so that you can use an
analogous procedure in new examples - "Macros on Steroids"
5Programming in the User Interface
- The same interface used by end-users can be used
for programming - Empowers end-users to do programming
- No switching between user and programmer
interfaces - Empowers "visual thinkers"
6PBE and the "Intelligent Agent" movement
- There's been a recent movement toward
"intelligent agents" -- proactive, assistive,
(possibly anthropomorphic) interfaces - PBE can be used to make agents instructible
- Agent personalities
- Butler/Servant/Secretary
- Teacher/Student, Master/Apprentice
7Issues in Programming by Example
- The Generalization Problem ( Data Description)
- How do I describe actions and data?
- How similar do the actions/data have to be next
time? - Feedback
- How does the system show the user what it's
learned? - Advice
- How can the user influence or modify what the
system learns?
8Issues in Programming by Example
- How should we record the user's actions?
- At what granularity should things be recorded?
- Can the user interact with the agent during
recording? If so, how? - Do we represent the agent directly in the
interface? - Do we anthropomorphize the agent?
- Can users give advice during recording?
- Turning recording on and off
9Issues in Programming by Example
- How should the recorded program be represented?
- Should the user see the recorded program?
- What should it look like?
- Should the user interact directly with the
recorded program? If so, how? - How to represent examples?
- How to represent generalizations?
10Issues in Programming by Example
- How should the user edit an already-recorded
program? - How do we keep the representations consistent
during editing? - Can the user edit previous generalizations?
- How can users debug programs?
- Can users step/trace/break programs?
11Machine learning in Programming by Example
- Lots of work in machine learning
- Careful Watch for hidden assumptions
- Few examples, learns fast, explainable
- Explanation-based Generalization
- Case Based reasoning
- Lots of examples, slow but more robust
- Neural networks, PAC learning, data-mining
12Users of the world, unite!
- You have nothing to lose but your error messages!
- Almost "political" message of empowerment of
users - Users should not be at the mercy of software
providers - User procedures and data should not be held
hostage by software companies
13"Poor man's"Programming by Example
- Macro recorders in applications, AppleScript
- Emacs keyboard macros
- Interface builders / Scripting languages
- Quickeys / OneClick
14Hooking PBE systems to conventional applications
- PBE systems would like to use conventional
interfaces as tools rather than re-implement apps - Conventional interfaces aren't set up to be
operated by an external program - Issues Access to application data, sharing the
interface, parallelism - Article Lieberman, IUI 98 "Attaching Interface
Agents to Conventional Applications"
15Watch What I Do
- Allen Cypher, ed. MIT Press 1993
16A Small Matter of Programming
- Bonnie Nardi, MIT Press, 1994.
- End-User Programming
- Scripting languages
- Application-specific languages
- "Gardeners"
17Eager - Allen Cypher
- Programming by example for Hypercard
- Notices patterns in user actions
- Anticipation highlighting of predicted actions
- Anthropomorphization of learning agent
- Example Collect subject lines from messages
18Eager
19Mondrian An Instructible Graphical Editor
- Mondrian
- An object-oriented graphical editor
- An agent that records user interface actions
- Learning and generalization heuristics
20Mondrian An Instructible Graphical Editor
21Wizard of Oz Experiment
- Human simulates agent
- What kinds of communication between human and
agent are plausible? - What kind of knowledge does the agent need to
know to perform the task?
22Wizard of Oz experiment task
- Reformat a Bibliography
- Lieberman, H., The One True Path to Intelligent
Agents, International Conference on Buzzwords and
Hype, Tahiti, 1996. - Lieberman 96 The One True Path to Intelligent
Agents, Int. Conf. on Buzzwords and Hype, Tahiti,
(1996). - Oz, Wizard Of, Pay No Attention to the Man Behind
the Curtain, Journal of Smoke and Mirrors, August
1942, Emerald City, Oz.
23Wizard of Oz results
- Users can make mistakes
- Information can be incomplete
- Agents can ask the user if they encounter an
error situation - Agent could ask the user to supply missing
information - Agent could ask the user to edit the example
- Skip steps that don't work
24Wizard of Oz experiment method
- User performs task once
- Thinking aloud goals and methods
- Agent (secretly) constructs description of
actions - In terms of simple implementable operations
- Agent offers help
- Agent performs help according to action
description - Agent gives user feedback
- Agent accepts advice from user
25Survey of "Your Wish" systems
- Astonishingly wide variety of application
domains - Kids, Games, CAD, GIS, Text editing, Graphical
editing, Web browsing, Animation, Databases, etc. - Illustrates variety of design decisions in PBE
systems - Different reps for programs, agents, etc.
- How much inference, generalization, initiative?
26Stagecast Creator - Smith, Cypher
- Programming for kids, grid game world
- If you see this pattern of squares, replace it
with that pattern of squares - Viz rep of rules, editor/stepper
- Generalization on object types, introduce
variables - Commercially available, success with thousands of
users
27A Stagecast Creator Rule
28A Stagecast Creator Game
29Toontalk - Ken Kahn
- Programming language is a video game
- Most radical programming model
- Concurrent logic programming
- Abstraction by removing detail
- Commercially available, success with kids in
schools
30Toontalk's Visual Language
31Generalizing by Removing Detail
32Toontalk Sort program
33How much intelligence?- Brad Myers, Rich McDaniel
- CMU group one of most active and consistent in
PBE - Multitude of systems, "gems" of PBE
- Peridot, Lapidary, Jade, Gilt, Tourmaline, C32,
Pursuit, Gold, Marquise, Katie, Turquoise, Topaz,
Gamut - Experience with range of conservative to radical
PBE systems - "Spectrum of Instructibility"
- Tradeoff between conveience and control
34Pursuit's Visual Language
35Selecting Generalizations in Marquise
36Internet Scrapbook - Sugiura
- Everybody's favorite application area - the Web!
- Automates Browse Cut Paste applications
- How do you describe a Web page selection?
- Partial matching, Web design heuristics
- Commercially available - preloaded on NEC PCs
37Internet Scrapbook
38TriAS - Bauer, Meyer, Dengler, Paul
- Automating Browse Copy Paste, like Scrapbook
- Collaborative, mixed-initiative dialog
- At any time, agent or user can propose
selections, generalizations - What Next? Can I Stop?
- Integrates wrapper description language HyQL,
InfoBeans dynamic Web sources
39Collaborative Wrapper Definition
40PBE for GIS CSprl - Traynor, Williams
- Study of how end users use Geographical
Information Systems - "Gardeners", "Surrogate Users"
- Comic-strip PBE language
41A Geographical Info Systems PBE Program
42Visual Language for Geographic Information Systems
43PBE for Computer Aided Design -Girard, Pierra
- True "Industrial Strength" PBE, probably the
champ - CAD users are sophisticated in application
domain, willing to specify a lot - Provides complete editing and debugging
- Key issues Naming, Ambiguity in spec/solutions,
general control structures conditionals, loops
44Example-Based Programming in Computer-Aided
Design
45Demonstrating "Hidden Features" - McDaniel, Myers
- PBE for animated computer games
- WYSIWYG - "What you get is all you have"
- Demonstrate "hidden features" by reifying them
- Guides, e.g. Arrows for directions
- Sophisticated heuristics, lots of inference
- Stop This!
- Do Something!
46Demonstrating Hidden Features
47Report Generation - Masuishi
- Mundane, but hey, could save a lot of time
- Format generalization
- Application-specific iteration
- Distributed to wide user community
48Report Generation by Example
49Dynamic Macro - Masui
- Notices loops in text editing commands
- Simple, automatic No start/stop recording
- Wide community of users
- Also POBox predictive input for PDAs, phones,
etc.
50Dynamic Macro
51SmartEdit - Lau, Domingos, Wolfman, Weld
- Automates repetitive text-editing procedures
- Predictive, anticipatory, loop detection
- Uses version-space learning
52SmartEdit Version Space
53SmartEdit Screens
54Grammex "Grammars by Example"- Lieberman,
Nardi, Wright
- Pick out "needles" of structured information in
"haystack" of unstructured information - First direct-manipulation user interface to
powerful grammar and parsing technology - Show example strings, explain components
recursively - Iterative System parses, you explain
55Defining Recursive Grammars
56Visual representation of regular expressions -
Blackwell
- SWYN "See what you need"
- Representation of positive and negative examples
- Anticipation of selections updated dynamically
- Representation of grammars as Finite-State
machines - User study of understandability of
representations
57Visual representation of Regular Expressions
58APE PBE for Programming Environments - Ruvini,
Dony
- Combining predictive interfaces with PBE
- Conventional programming environment Smalltalk
- Automates coding, debugging procedures
- What-set, When-set use different learning
algorithms - C4.5, new algorithm IDHYS can learn
non-consecutive patterns
59Repetitive code in protocols
60Familiar - PBE across applications - Paynter
- PBE for Applescript
- Application-independent, no mods to applications,
uses commercial OS scripting language - Limited by shortcomings of Applescript and
application implementations
61Familiar arranging files
62Tatlin - Gaxiola, Lieberman
- Examinability Some applications will let you
look at their data even if you can't record them
or use API - PBE by comparing states and inducing
transformations rather than recording and
generalizing actions
63Tatlin - PBE via Examinability
64Demonstrating What vs. When- Wolber, Myers
- Saying "when" you want something to happen
- Stimulus-Response PBE
- Pavlov Animation scripting system like Macromind
Director
65Pavlov driving game
66Programming by Analogous Examples - Repenning,
Perrone
- Agentsheets - Grid world like Stagecast Creator
- If-then rules by example
- Make generalizations by analogy to
generalizations of previous examples
67Programming by Analogous Examples
68Visual Generalization - St. Amant, Zettlemoyer,
Lieberman, Potter
- Actually parse the screen!
- Simulate human user's visual system
- Finesses data access problem, hooking to
applications - Fragile - if viz rep changes, you're screwed
- Permits unique visual generalizations not
possible by accessing data
69Triggers - "Just the pixels, ma'am"
70Solitaire by "Parsing the screen"
71Short order programming exercise
- Task Add similarity-based learning to an
action-based learning system - Ingredients Graphical editor, action recording,
relation inference
72Things to think about
- How could we integrate the paradigms of Mondrian
and Eager? - What sort of information do we need to get from
the graphical editor? - What should the learning algorithm learn?
- How should the result of learning affect the
interface?