E N D
1. SpokenProgramsorProgrammers saythe darndest things! Andrew Begel, Susan L. Graham
Computer Science Division, EECS
University of California, Berkeley
2. VL/HCC 2005 Motivation Programmers conventionally use keyboard
Long hours at keyboard leads to higher risk of RSI
Can a programmer code using speech?
Can a computer understand what the developer says? If the user can say anything, this makes it really difficult to understand.
Provide motivations for doing this work.
Learning about more natural modes of interaction
Put why programming by voice on this slide.
Introduce programming by voice as a solution.
We use conventionalized programmign languages bcause of training and tools.
Not the best way to do things, but too hard to change, so instead well modify the
Input to the programming language to make it easier for people.
(programming ambiguous because it makes the compielr and validation easier).
Already existing tools for adapting to programming languages (declaration before def)
Given the programming domain
Here are the problems we have with them.
If the user can say anything, this makes it really difficult to understand.
Provide motivations for doing this work.
Learning about more natural modes of interaction
Put why programming by voice on this slide.
Introduce programming by voice as a solution.
We use conventionalized programmign languages bcause of training and tools.
Not the best way to do things, but too hard to change, so instead well modify the
Input to the programming language to make it easier for people.
(programming ambiguous because it makes the compielr and validation easier).
Already existing tools for adapting to programming languages (declaration before def)
Given the programming domain
Here are the problems we have with them.
3. VL/HCC 2005 Programming by Voice Our Goal
Find out how developers use code verbally. Use this to develop a naturally verbalizable input form.
Build development environment that supports verbal authoring, navigation, modification.
Extend conventional compiler analyses to support ambiguities generated by speech.
Learn how developers can use voice-based programming, and iterate design. speak whole story, then say were going to talk about the first one.
What we want to do: comp, nav, edit
speak whole story, then say were going to talk about the first one.
What we want to do: comp, nav, edit
4. VL/HCC 2005 Programming by Voice Challenges Speech is inherently ambiguous.
Programming languages and tools were designed to be unambiguous.
Speech tools are poorly suited for programming tasks.
Programmers are not used to verbal software development. We use conventionalized programmign languages bcause of training and tools.
Already existing tools for adapting to programming languages (declaration before def)
(programming not ambiguous because it makes the compiler and validation easier).
Introduce programming by voice as a solution.
Not the best way to do things, but too hard to change, so instead well modify the input to the programming language to make it easier for people.We use conventionalized programmign languages bcause of training and tools.
Already existing tools for adapting to programming languages (declaration before def)
(programming not ambiguous because it makes the compiler and validation easier).
Introduce programming by voice as a solution.
Not the best way to do things, but too hard to change, so instead well modify the input to the programming language to make it easier for people.
5. VL/HCC 2005 Programming by Voice for (int i = 0; i < 10; i++ ) {
}
6. VL/HCC 2005 Current Tools are Awkward! for ( ; ; ) {
} Existing tools badly adapt VR to programming
(No compiler technology)
More explicitly list out loud what the awkwardness is.
Requires users to spell identifiers
VR finds small words hard to understand.
prescriptive way to enter the program
once code is in editor, it can no longer be edited by template.
code entry is over-stylized
no solution for nav and editing
Existing tools badly adapt VR to programming
(No compiler technology)
More explicitly list out loud what the awkwardness is.
Requires users to spell identifiers
VR finds small words hard to understand.
prescriptive way to enter the program
once code is in editor, it can no longer be edited by template.
code entry is over-stylized
no solution for nav and editing
7. VL/HCC 2005 for (int i = 0; ; ) {
} More explicitly list out loud what the awkwardness is.
More explicitly list out loud what the awkwardness is.
8. VL/HCC 2005 for (int i = 0; i < 10; ) {
} More explicitly list out loud what the awkwardness is.
More explicitly list out loud what the awkwardness is.
9. VL/HCC 2005 for (int i = 0; i < 10; i++ ) {
} More explicitly list out loud what the awkwardness is.
not the first person to worry about this stuff, heres what people have to live with now. More explicitly list out loud what the awkwardness is.
not the first person to worry about this stuff, heres what people have to live with now.
10. VL/HCC 2005 How do Programmers Speak Code? 10 programmers read Java code out loud (Begel 05)
Graduate students in Computer Science
Five knew Java, five did not
Five were native English speakers, five were not
Five were educated in U.S.A., five were not
Read pre-written code into tape recorder
As if speaking to a sophomore-level CS undergrad who knows Java, but does not know the program
Most programmers spoke the same way
11. VL/HCC 2005 for (int i = 0; i < 10; i++ ) {
} Natural Language Verbalization Didnt have to verbalize parens, semicolons, etc.
Didnt have to verbalize parens, semicolons, etc.
12. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
13. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
14. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
15. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
16. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
17. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
18. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
19. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
20. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
21. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
22. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
23. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
24. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
25. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
26. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
27. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
28. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
29. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
30. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
31. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
32. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
33. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
34. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
35. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
36. VL/HCC 2005 How Do Programmers Speak Code? Think about how to say this
Think about how to say this
37. VL/HCC 2005 Design Tradeoffs
38. VL/HCC 2005 Spoken Java Semantically identical to Java
Syntactically easier to say than Java
Design methodology generalizable to any computer language
39. VL/HCC 2005 A More Natural Way to Code public class Symbol implements Serializable {
} Didnt have to verbalize parens, semicolons, etc.
Didnt have to verbalize parens, semicolons, etc.
40. VL/HCC 2005 A More Natural Way to Code public class Symbol implements Serializable {
static HashMap hashtbl = new HashMap();
} All punctuation has English equivalents
Open Brace, End For Loop
Most punctuation is optional
Provide verbalization for all abbreviations
Relaxed phrasing for better fit with English
(int)foo ? cast foo to integer
foo = 6 ? set foo to 6
foo[i]++ ? increment the ith element of array foo
All punctuation has English equivalents
Open Brace, End For Loop
Most punctuation is optional
Provide verbalization for all abbreviations
Relaxed phrasing for better fit with English
(int)foo ? cast foo to integer
foo = 6 ? set foo to 6
foo[i]++ ? increment the ith element of array foo
41. VL/HCC 2005 A More Natural Way to Code public class Symbol implements Serializable {
static HashMap hashtbl = new HashMap();
}
All punctuation has English equivalents
Open Brace, End For Loop
Most punctuation is optional
Provide verbalization for all abbreviations
Relaxed phrasing for better fit with English
(int)foo ? cast foo to integer
foo = 6 ? set foo to 6
foo[i]++ ? increment the ith element of array foo
All punctuation has English equivalents
Open Brace, End For Loop
Most punctuation is optional
Provide verbalization for all abbreviations
Relaxed phrasing for better fit with English
(int)foo ? cast foo to integer
foo = 6 ? set foo to 6
foo[i]++ ? increment the ith element of array foo
42. VL/HCC 2005 A More Natural Way to Code for (int i = 0; i < 10; i++ ) {
} Didnt have to verbalize parens, semicolons, etc.
Didnt have to verbalize parens, semicolons, etc.
43. VL/HCC 2005 Too Many Ambiguities for (int i = 0; i < 10; i++ ) {
} A human could eyeball this.A human could eyeball this.
44. VL/HCC 2005 Sometimes Its Non-Obvious fore *= 8; file.tooLode.times = won
45. VL/HCC 2005 SPEED: Speech Editor Build an editor that supports naturally verbalized programs
SPEED: SPEech EDitor
Based on Dragon Naturally Speaking, Eclipse IDE, Harmonia
Spoken Java Language for Composition
Spoken Command language for Navigation, Editing, Template instantiation, Refactorings, Search
Visual feedback for training
46. VL/HCC 2005 Future Study - SPEED Usability Goal: Understand how SPEED can be used by expert programmers
Train expert Java programmers on SPEED
Author new code
Build a Linked List data structure with associated algorithms
Modify existing code
Change abstraction representation and update algorithms Say this is for expert java programmers.
Rephrase system understanding (everything else is about the person, but this is about the system).
Find some terminology from AI systems evaluations (false positive rate etc)
Say this is for expert java programmers.
Rephrase system understanding (everything else is about the person, but this is about the system).
Find some terminology from AI systems evaluations (false positive rate etc)
47. VL/HCC 2005 Metrics User Metrics
Task completion time
Vocabulary mistakes, Forgotten vocabulary
Grammatical mistakes, Grammatical substitutions
SPEED Metrics
Word tokenization errors
Disambiguation errors
Irresolvable ambiguities
48. VL/HCC 2005 Spoken Programs Learn how developers speak code out loud
Analyze speech and categorize ambiguities
Use study to design naturally verbalizable input for programming
Create programming tools designed for spoken interaction
Evaluate design and tools by studying programmers using voice for software development fix animation
fix animation
49. VL/HCC 2005 End of Talk