SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
Programming as collaborative reference (full presentation)
Oleg Kiselyov and Chung-chieh Shan
We argue that programming-language theory should face the pragmatic fact that humans
develop software by interacting with computers in real time. This interaction not only relies
on but also bears on the core design and tools of programming languages, so it should not be
left to Eclipse plug-ins and StackOverflow. We further illustrate how this interaction could
be improved by drawing from existing research on natural-language dialogue, specifically on
collaborative reference.
The users and implementations of modern programming
languages are stymied by a communication bottleneck:
Programs are so long that the need to express them in full
detail imposes a heavy cognitive and physical burden even
if one already understands the exact algorithm intended.
Whenever you’re programming and struggle to enter an
expression even though it would be obvious to another
programmer looking over your shoulder what you mean,
that’s an instance of this bottleneck in the human-to-
computer direction.
It would be excusable if the reason the program we
want takes n bits to express is that there are 2n
− 1 other
programs that we might want. But the vast majority of
well-formed programs in today’s programming languages
are undesirable, and many desirable programs are equiv-
alent. If only we can just input a desired program by
entering the number of lexicographically preceding de-
sired programs! But that’s intractable for humans and
computers alike. Abstractions and types may reduce this
communication burden somewhat, but the boilerplate
necessary to access highly parametrized abstractions and
the annotations necessary to help type inference along
contribute to the problem themselves.
We face a similar problem when talking to fellow human
beings. Most of the meanings we intend to convey using
natural-language utterances would be excruciating to spell
out fully in any language. For example, pronouns (such
as “him”) and descriptions (“the president”) are on one
hand much more ambiguous than proper names (“Barack
Obama”) and explicit variable names (“x”), but on the
other hand more concise as well as easier to process for
speakers and hearers alike. To take another example, the
familiar question “Can everyone hear me?” is typically
spoken to ask about everyone in the room rather than
everyone in the world [4]. It scantly helps to rephrase
the question to “Can everyone in the room hear me?”—
Which room? (Do you mean the city of Philadelphia or
the movie Philadelphia?)
Despite such odds, humans manage to communicate all
the time—whether to name a room, a proof, or a program.
Key to this feat are
• our use of context, which narrows down the mean-
ings that make sense to convey, and
• our exchange of feedback, which makes it unneces-
sary to get an utterance right the first time or to
ever give a complete explicit description.
Programming languages today already use some context
to lessen the burden of communication; examples include
scope, type inference, and overloading resolution. De-
velopment environments today also provide feedback in
rudimentary forms such as continuous compilation and
identifier completion. Comparing these facilities against
human communication shows that it is possible for us
to program more concisely, especially if the language is
designed with context and feedback in mind. And pro-
gram more concisely we must, as we build larger systems
and check stronger properties, which might be expressed
today in fancy type systems that require many (often
“obvious”) annotations.
For example, whenever you want to talk to me about
something or somebody, maybe someone you spot across
the stadium, we usually manage to agree on the same
person pretty quickly, even though we haven’t agreed on a
numbering of all objects ahead of time. The psychologists
Clark and Wilkes-Gibbs [2] point out that this task is
very interactive—not at all like taking one shot to write
out a clear noun phrase.
A: the guy reading with, holding his book to the left.
B: Okay, kind of standing up?
A: Yeah.
B: Okay.
Clark and Wilkes-Gibbs study this collaborative reference
task by asking experiment subjects to perform a matching
task in pairs. Part of their study classified the moves
people tend to make and identified how they signal and
anticipate these moves.
Programming is a human-computer collaboration whose
goal is also reference. We are not alone to suggest easing
this daunting goal by making the object of reference
not just the raw code but also what it does and why it
works. A flexible interaction can take advantage of how
few programs make sense to relieve humans from reading
and writing most boilerplate and annotations. Perhaps,
what a program does would be expressed roughly by a
type, and why it works would be expressed by a type
derivation; like Conor McBride, we “think of types as
warping our gravity, so that the direction we need to
travel becomes ‘downhill’.”
What’s tricky is that the intended program is seldom
the exact minimum. For example, given a signature like
Haskell’s Show or Ord, sometimes the implementation you
want is not the default instance that type classes give you,
2
but almost! So close, yet so far to have to compose all
the functor invocations by hand! So the ideal trip to the
desired program is like
• Marble Madness;
• filling in holes in Agda;
• IntelliSense, not only constrained by types, but also
liberated by completing complex expressions;
• input method editors; and
• pair programming or code review, which goes faster
and more smoothly as participants develop a shared
vocabulary like between Clark and Wilkes-Gibbs’s
director and matcher.
It is crucial to allow decisions to be made (facets to be
specified) in many different ways during the collaboration.
That’s not all. We wouldn’t be here if we just wanted to
suggest that HCI researchers and IDE builders take more
context into account in the interfaces they are already
building. Neither do we want to program computers using
an existing natural language [1].
It turns out that implementing collaborative reference,
whether in natural languages or in programming lan-
guages, requires some tools familiar to you such as seman-
tics and logic:
• Participants in collaborative reference maintain
their discourse context by updating a virtual score-
board with constraints, or logical statements about
the intended referent.
• The task often spawns sub/meta-tasks to clear up
collateral ambiguity, whether about a constituent
subroutine, a constraint predicate, or a discourse
move.
• Previously established referents are added to a vo-
cabulary that, unsurprisingly, looks a lot like a type
environment.
• The pervasive uncertainty can be expressed using
nondeterministic programming and managed using
compositional heuristics for search through proba-
bility distributions with the programmer’s guidance.
DeVault’s COREF dialogue agent [3] can play both
the director role and the matcher role in a task like
Clark and Wilkes-Gibbs’s experiment task. To show
concretely that the approach is viable, we will play a
one-minute video of COREF in action (http://www.
cs.rutgers.edu/~ccshan/devault-contribution/
example-coref-matches.mp4).
An initial attempt at programming by collaborative
reference may target the problem of (overlapping) over-
loading resolution or (undecidable) type inference. The
key is to identify a space of possible discourse moves,
including the space of programs that make sense and
a variety of strategies that both the director and the
matcher can use to describe a candidate they have in
mind and distinguish it telegraphically from competitors
in play. For example, instead of insisting that all overload-
ing be unambiguous, a programming language can resolve
overloading interactively if there is enough doubt as to
which referent the programmer intends. The referent that
results from this collaboration would then become part
of the program text (in particular, part of the indexical
content [5] that any copy-and-paste operation would op-
erate on), so meta-theorems such as type safety would
still hold.
[1] Allen, James F., Nathanael Chambers, George Ferguson,
Lucian Galescu, Hyuckchul Jung, Mary D. Swift, and
William Taysom. 2007. PLOW: A collaborative task learn-
ing agent. In AAAI-2007: Proceedings of the 22nd national
conference on artificial intelligence, 1514–1519. The Ameri-
can Association for Artificial Intelligence, Menlo Park, CA:
AAAI Press.
[2] Clark, Herbert H., and Deanna Wilkes-Gibbs. 1986. Refer-
ring as a collaborative process. Cognition 22(1):1–39.
[3] DeVault, David. 2008. Contribution tracking: Participating
in task-oriented dialogue under uncertainty. Ph.D. thesis,
Rutgers University.
[4] von Fintel, Kai. 1994. Restrictions on quantifier domains.
Ph.D. thesis, Department of Linguistics, University of
Massachusetts.
[5] Kaplan, David. 1989. Demonstratives: An essay on the
semantics, logic, metaphysics, and epistemology of demon-
stratives and other indexicals. In Themes from Kaplan,
ed. Joseph Almog, John Perry, and Howard Wettstein,
chap. 17, 481–563. New York: Oxford University Press.

Contenu connexe

En vedette

Χριστουεγεννιάτικη διακόσμηση
Χριστουεγεννιάτικη διακόσμησηΧριστουεγεννιάτικη διακόσμηση
Χριστουεγεννιάτικη διακόσμησηmathitesdim
 
Χριστουγεννιάτικα Τραγούδια
Χριστουγεννιάτικα ΤραγούδιαΧριστουγεννιάτικα Τραγούδια
Χριστουγεννιάτικα Τραγούδιαmathitesdim
 
Ράνια-Γεωργία
Ράνια-ΓεωργίαΡάνια-Γεωργία
Ράνια-Γεωργίαmathitesdim
 
Sociology Project - What's Up World
Sociology Project - What's Up World Sociology Project - What's Up World
Sociology Project - What's Up World Mariske Myeke Tampi
 
Mkscript sh
Mkscript shMkscript sh
Mkscript shBen Pope
 
Getfilestruct zbksh(1)
Getfilestruct zbksh(1)Getfilestruct zbksh(1)
Getfilestruct zbksh(1)Ben Pope
 
Getfilestruct zbksh
Getfilestruct zbkshGetfilestruct zbksh
Getfilestruct zbkshBen Pope
 
Informática Agrícola Aula 01 - Apresentação
Informática Agrícola Aula 01 - ApresentaçãoInformática Agrícola Aula 01 - Apresentação
Informática Agrícola Aula 01 - ApresentaçãoLeinylson Fontinele
 
Naturales 3. las plantas
Naturales 3. las plantasNaturales 3. las plantas
Naturales 3. las plantasRobertoMillas
 

En vedette (20)

Χριστουεγεννιάτικη διακόσμηση
Χριστουεγεννιάτικη διακόσμησηΧριστουεγεννιάτικη διακόσμηση
Χριστουεγεννιάτικη διακόσμηση
 
Παρουσιαση
ΠαρουσιασηΠαρουσιαση
Παρουσιαση
 
La energía y el movimiento
La energía y el movimientoLa energía y el movimiento
La energía y el movimiento
 
Χριστουγεννιάτικα Τραγούδια
Χριστουγεννιάτικα ΤραγούδιαΧριστουγεννιάτικα Τραγούδια
Χριστουγεννιάτικα Τραγούδια
 
Avatars
AvatarsAvatars
Avatars
 
Luhn sh
Luhn shLuhn sh
Luhn sh
 
Ράνια-Γεωργία
Ράνια-ΓεωργίαΡάνια-Γεωργία
Ράνια-Γεωργία
 
Sociology Project - What's Up World
Sociology Project - What's Up World Sociology Project - What's Up World
Sociology Project - What's Up World
 
Leyes de Newton
Leyes de NewtonLeyes de Newton
Leyes de Newton
 
Leyes de newton
Leyes de newtonLeyes de newton
Leyes de newton
 
Mkscript sh
Mkscript shMkscript sh
Mkscript sh
 
Pop3ck sh
Pop3ck shPop3ck sh
Pop3ck sh
 
Getfilestruct zbksh(1)
Getfilestruct zbksh(1)Getfilestruct zbksh(1)
Getfilestruct zbksh(1)
 
Getfilestruct zbksh
Getfilestruct zbkshGetfilestruct zbksh
Getfilestruct zbksh
 
Crimp & Crimp Interchange
Crimp & Crimp Interchange Crimp & Crimp Interchange
Crimp & Crimp Interchange
 
Bleaching
BleachingBleaching
Bleaching
 
Slasher dyeing machine
Slasher dyeing machineSlasher dyeing machine
Slasher dyeing machine
 
Leyes newton
Leyes newtonLeyes newton
Leyes newton
 
Informática Agrícola Aula 01 - Apresentação
Informática Agrícola Aula 01 - ApresentaçãoInformática Agrícola Aula 01 - Apresentação
Informática Agrícola Aula 01 - Apresentação
 
Naturales 3. las plantas
Naturales 3. las plantasNaturales 3. las plantas
Naturales 3. las plantas
 

Similaire à Programming collaborative-ref

Java-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development EnvironmentJava-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development EnvironmentWaqas Tariq
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesHans Ecke
 
Realization of natural language interfaces using
Realization of natural language interfaces usingRealization of natural language interfaces using
Realization of natural language interfaces usingunyil96
 
The Concept Of Abstract Data Types
The Concept Of Abstract Data TypesThe Concept Of Abstract Data Types
The Concept Of Abstract Data TypesKaty Allen
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxdaniahendric
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Laura Martin
 
CSCorganization of programming languages
CSCorganization of programming languagesCSCorganization of programming languages
CSCorganization of programming languagesOluwafolakeOjo
 
The Four Principles Of Object Oriented Programming
The Four Principles Of Object Oriented ProgrammingThe Four Principles Of Object Oriented Programming
The Four Principles Of Object Oriented ProgrammingDiane Allen
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesTammy Moncrief
 
Personal dashboards for individual learning and project awareness in social s...
Personal dashboards for individual learning and project awareness in social s...Personal dashboards for individual learning and project awareness in social s...
Personal dashboards for individual learning and project awareness in social s...Wolfgang Reinhardt
 
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...ijpla
 
Key Features Of The Pseudo Code
Key Features Of The Pseudo CodeKey Features Of The Pseudo Code
Key Features Of The Pseudo CodeAngilina Jones
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3Xebia IT Architects
 
Pair Programming Explained By Shrikant Vashishtha
Pair Programming Explained  By Shrikant VashishthaPair Programming Explained  By Shrikant Vashishtha
Pair Programming Explained By Shrikant VashishthaShriKant Vashishtha
 
Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009guest5d31a5
 
11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next ProjectSofiaCarter4
 
Comparative Analysis of Visual Basic VS Java programming language.docx
Comparative Analysis of Visual Basic VS Java programming language.docxComparative Analysis of Visual Basic VS Java programming language.docx
Comparative Analysis of Visual Basic VS Java programming language.docxRichwellIanAfrica
 
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGE
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGEAN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGE
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGEIJwest
 
An Intersemiotic Translation of Normative Utterances to Machine Language
An Intersemiotic Translation of Normative Utterances to Machine LanguageAn Intersemiotic Translation of Normative Utterances to Machine Language
An Intersemiotic Translation of Normative Utterances to Machine Languagedannyijwest
 

Similaire à Programming collaborative-ref (20)

Java-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development EnvironmentJava-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development Environment
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
 
Realization of natural language interfaces using
Realization of natural language interfaces usingRealization of natural language interfaces using
Realization of natural language interfaces using
 
The Concept Of Abstract Data Types
The Concept Of Abstract Data TypesThe Concept Of Abstract Data Types
The Concept Of Abstract Data Types
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
 
CSCorganization of programming languages
CSCorganization of programming languagesCSCorganization of programming languages
CSCorganization of programming languages
 
The Four Principles Of Object Oriented Programming
The Four Principles Of Object Oriented ProgrammingThe Four Principles Of Object Oriented Programming
The Four Principles Of Object Oriented Programming
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
 
Personal dashboards for individual learning and project awareness in social s...
Personal dashboards for individual learning and project awareness in social s...Personal dashboards for individual learning and project awareness in social s...
Personal dashboards for individual learning and project awareness in social s...
 
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...
INTERPRETER AND APPLIED DEVELOPMENT ENVIRONMENT FOR LEARNING CONCEPTS OF OBJE...
 
Key Features Of The Pseudo Code
Key Features Of The Pseudo CodeKey Features Of The Pseudo Code
Key Features Of The Pseudo Code
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3
 
Pair Programming Explained By Shrikant Vashishtha
Pair Programming Explained  By Shrikant VashishthaPair Programming Explained  By Shrikant Vashishtha
Pair Programming Explained By Shrikant Vashishtha
 
Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009
 
11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project
 
Analysis Report
 Analysis Report  Analysis Report
Analysis Report
 
Comparative Analysis of Visual Basic VS Java programming language.docx
Comparative Analysis of Visual Basic VS Java programming language.docxComparative Analysis of Visual Basic VS Java programming language.docx
Comparative Analysis of Visual Basic VS Java programming language.docx
 
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGE
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGEAN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGE
AN INTERSEMIOTIC TRANSLATION OF NORMATIVE UTTERANCES TO MACHINE LANGUAGE
 
An Intersemiotic Translation of Normative Utterances to Machine Language
An Intersemiotic Translation of Normative Utterances to Machine LanguageAn Intersemiotic Translation of Normative Utterances to Machine Language
An Intersemiotic Translation of Normative Utterances to Machine Language
 

Plus de Ben Pope

Applecmdlista zs
Applecmdlista zsApplecmdlista zs
Applecmdlista zsBen Pope
 
An a z index of the bash commands
An a z index of the bash commandsAn a z index of the bash commands
An a z index of the bash commandsBen Pope
 
An a z index of windows power shell commandss
An a z index of windows power shell commandssAn a z index of windows power shell commandss
An a z index of windows power shell commandssBen Pope
 
Xz file-format-1.0.4
Xz file-format-1.0.4Xz file-format-1.0.4
Xz file-format-1.0.4Ben Pope
 
Popstat1 sh
Popstat1 shPopstat1 sh
Popstat1 shBen Pope
 
Pop3stat sh
Pop3stat shPop3stat sh
Pop3stat shBen Pope
 
Menu func-sh
Menu func-shMenu func-sh
Menu func-shBen Pope
 
Menu func-sh(1)
Menu func-sh(1)Menu func-sh(1)
Menu func-sh(1)Ben Pope
 
Logrotate sh
Logrotate shLogrotate sh
Logrotate shBen Pope
 
Bouncingballs sh
Bouncingballs shBouncingballs sh
Bouncingballs shBen Pope
 
Compound var
Compound varCompound var
Compound varBen Pope
 

Plus de Ben Pope (14)

Applecmdlista zs
Applecmdlista zsApplecmdlista zs
Applecmdlista zs
 
An a z index of the bash commands
An a z index of the bash commandsAn a z index of the bash commands
An a z index of the bash commands
 
An a z index of windows power shell commandss
An a z index of windows power shell commandssAn a z index of windows power shell commandss
An a z index of windows power shell commandss
 
Xz file-format-1.0.4
Xz file-format-1.0.4Xz file-format-1.0.4
Xz file-format-1.0.4
 
Popstat1 sh
Popstat1 shPopstat1 sh
Popstat1 sh
 
Pop3stat sh
Pop3stat shPop3stat sh
Pop3stat sh
 
Phadd sh
Phadd shPhadd sh
Phadd sh
 
Phdel sh
Phdel shPhdel sh
Phdel sh
 
Menu func-sh
Menu func-shMenu func-sh
Menu func-sh
 
Menu func-sh(1)
Menu func-sh(1)Menu func-sh(1)
Menu func-sh(1)
 
Logrotate sh
Logrotate shLogrotate sh
Logrotate sh
 
Cpsh sh
Cpsh shCpsh sh
Cpsh sh
 
Bouncingballs sh
Bouncingballs shBouncingballs sh
Bouncingballs sh
 
Compound var
Compound varCompound var
Compound var
 

Dernier

VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...Call Girls in Nagpur High Profile
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhisoniya singh
 
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Pooja Nehwal
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...Pooja Nehwal
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...anilsa9823
 
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurVIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurSuhani Kapoor
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls KolkataCall Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...Pooja Nehwal
 
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...Pooja Nehwal
 
Dubai Call Girls O528786472 Call Girls In Dubai Wisteria
Dubai Call Girls O528786472 Call Girls In Dubai WisteriaDubai Call Girls O528786472 Call Girls In Dubai Wisteria
Dubai Call Girls O528786472 Call Girls In Dubai WisteriaUnited Arab Emirates
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...ranjana rawat
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...Pooja Nehwal
 
Thane Escorts, (Pooja 09892124323), Thane Call Girls
Thane Escorts, (Pooja 09892124323), Thane Call GirlsThane Escorts, (Pooja 09892124323), Thane Call Girls
Thane Escorts, (Pooja 09892124323), Thane Call GirlsPooja Nehwal
 
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...Suhani Kapoor
 

Dernier (20)

VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
 
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
 
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
 
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
 
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurVIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
 
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls KolkataCall Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
 
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
 
Dubai Call Girls O528786472 Call Girls In Dubai Wisteria
Dubai Call Girls O528786472 Call Girls In Dubai WisteriaDubai Call Girls O528786472 Call Girls In Dubai Wisteria
Dubai Call Girls O528786472 Call Girls In Dubai Wisteria
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
 
Thane Escorts, (Pooja 09892124323), Thane Call Girls
Thane Escorts, (Pooja 09892124323), Thane Call GirlsThane Escorts, (Pooja 09892124323), Thane Call Girls
Thane Escorts, (Pooja 09892124323), Thane Call Girls
 
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...
VIP Call Girls Hitech City ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With R...
 

Programming collaborative-ref

  • 1. Programming as collaborative reference (full presentation) Oleg Kiselyov and Chung-chieh Shan We argue that programming-language theory should face the pragmatic fact that humans develop software by interacting with computers in real time. This interaction not only relies on but also bears on the core design and tools of programming languages, so it should not be left to Eclipse plug-ins and StackOverflow. We further illustrate how this interaction could be improved by drawing from existing research on natural-language dialogue, specifically on collaborative reference. The users and implementations of modern programming languages are stymied by a communication bottleneck: Programs are so long that the need to express them in full detail imposes a heavy cognitive and physical burden even if one already understands the exact algorithm intended. Whenever you’re programming and struggle to enter an expression even though it would be obvious to another programmer looking over your shoulder what you mean, that’s an instance of this bottleneck in the human-to- computer direction. It would be excusable if the reason the program we want takes n bits to express is that there are 2n − 1 other programs that we might want. But the vast majority of well-formed programs in today’s programming languages are undesirable, and many desirable programs are equiv- alent. If only we can just input a desired program by entering the number of lexicographically preceding de- sired programs! But that’s intractable for humans and computers alike. Abstractions and types may reduce this communication burden somewhat, but the boilerplate necessary to access highly parametrized abstractions and the annotations necessary to help type inference along contribute to the problem themselves. We face a similar problem when talking to fellow human beings. Most of the meanings we intend to convey using natural-language utterances would be excruciating to spell out fully in any language. For example, pronouns (such as “him”) and descriptions (“the president”) are on one hand much more ambiguous than proper names (“Barack Obama”) and explicit variable names (“x”), but on the other hand more concise as well as easier to process for speakers and hearers alike. To take another example, the familiar question “Can everyone hear me?” is typically spoken to ask about everyone in the room rather than everyone in the world [4]. It scantly helps to rephrase the question to “Can everyone in the room hear me?”— Which room? (Do you mean the city of Philadelphia or the movie Philadelphia?) Despite such odds, humans manage to communicate all the time—whether to name a room, a proof, or a program. Key to this feat are • our use of context, which narrows down the mean- ings that make sense to convey, and • our exchange of feedback, which makes it unneces- sary to get an utterance right the first time or to ever give a complete explicit description. Programming languages today already use some context to lessen the burden of communication; examples include scope, type inference, and overloading resolution. De- velopment environments today also provide feedback in rudimentary forms such as continuous compilation and identifier completion. Comparing these facilities against human communication shows that it is possible for us to program more concisely, especially if the language is designed with context and feedback in mind. And pro- gram more concisely we must, as we build larger systems and check stronger properties, which might be expressed today in fancy type systems that require many (often “obvious”) annotations. For example, whenever you want to talk to me about something or somebody, maybe someone you spot across the stadium, we usually manage to agree on the same person pretty quickly, even though we haven’t agreed on a numbering of all objects ahead of time. The psychologists Clark and Wilkes-Gibbs [2] point out that this task is very interactive—not at all like taking one shot to write out a clear noun phrase. A: the guy reading with, holding his book to the left. B: Okay, kind of standing up? A: Yeah. B: Okay. Clark and Wilkes-Gibbs study this collaborative reference task by asking experiment subjects to perform a matching task in pairs. Part of their study classified the moves people tend to make and identified how they signal and anticipate these moves. Programming is a human-computer collaboration whose goal is also reference. We are not alone to suggest easing this daunting goal by making the object of reference not just the raw code but also what it does and why it works. A flexible interaction can take advantage of how few programs make sense to relieve humans from reading and writing most boilerplate and annotations. Perhaps, what a program does would be expressed roughly by a type, and why it works would be expressed by a type derivation; like Conor McBride, we “think of types as warping our gravity, so that the direction we need to travel becomes ‘downhill’.” What’s tricky is that the intended program is seldom the exact minimum. For example, given a signature like Haskell’s Show or Ord, sometimes the implementation you want is not the default instance that type classes give you,
  • 2. 2 but almost! So close, yet so far to have to compose all the functor invocations by hand! So the ideal trip to the desired program is like • Marble Madness; • filling in holes in Agda; • IntelliSense, not only constrained by types, but also liberated by completing complex expressions; • input method editors; and • pair programming or code review, which goes faster and more smoothly as participants develop a shared vocabulary like between Clark and Wilkes-Gibbs’s director and matcher. It is crucial to allow decisions to be made (facets to be specified) in many different ways during the collaboration. That’s not all. We wouldn’t be here if we just wanted to suggest that HCI researchers and IDE builders take more context into account in the interfaces they are already building. Neither do we want to program computers using an existing natural language [1]. It turns out that implementing collaborative reference, whether in natural languages or in programming lan- guages, requires some tools familiar to you such as seman- tics and logic: • Participants in collaborative reference maintain their discourse context by updating a virtual score- board with constraints, or logical statements about the intended referent. • The task often spawns sub/meta-tasks to clear up collateral ambiguity, whether about a constituent subroutine, a constraint predicate, or a discourse move. • Previously established referents are added to a vo- cabulary that, unsurprisingly, looks a lot like a type environment. • The pervasive uncertainty can be expressed using nondeterministic programming and managed using compositional heuristics for search through proba- bility distributions with the programmer’s guidance. DeVault’s COREF dialogue agent [3] can play both the director role and the matcher role in a task like Clark and Wilkes-Gibbs’s experiment task. To show concretely that the approach is viable, we will play a one-minute video of COREF in action (http://www. cs.rutgers.edu/~ccshan/devault-contribution/ example-coref-matches.mp4). An initial attempt at programming by collaborative reference may target the problem of (overlapping) over- loading resolution or (undecidable) type inference. The key is to identify a space of possible discourse moves, including the space of programs that make sense and a variety of strategies that both the director and the matcher can use to describe a candidate they have in mind and distinguish it telegraphically from competitors in play. For example, instead of insisting that all overload- ing be unambiguous, a programming language can resolve overloading interactively if there is enough doubt as to which referent the programmer intends. The referent that results from this collaboration would then become part of the program text (in particular, part of the indexical content [5] that any copy-and-paste operation would op- erate on), so meta-theorems such as type safety would still hold. [1] Allen, James F., Nathanael Chambers, George Ferguson, Lucian Galescu, Hyuckchul Jung, Mary D. Swift, and William Taysom. 2007. PLOW: A collaborative task learn- ing agent. In AAAI-2007: Proceedings of the 22nd national conference on artificial intelligence, 1514–1519. The Ameri- can Association for Artificial Intelligence, Menlo Park, CA: AAAI Press. [2] Clark, Herbert H., and Deanna Wilkes-Gibbs. 1986. Refer- ring as a collaborative process. Cognition 22(1):1–39. [3] DeVault, David. 2008. Contribution tracking: Participating in task-oriented dialogue under uncertainty. Ph.D. thesis, Rutgers University. [4] von Fintel, Kai. 1994. Restrictions on quantifier domains. Ph.D. thesis, Department of Linguistics, University of Massachusetts. [5] Kaplan, David. 1989. Demonstratives: An essay on the semantics, logic, metaphysics, and epistemology of demon- stratives and other indexicals. In Themes from Kaplan, ed. Joseph Almog, John Perry, and Howard Wettstein, chap. 17, 481–563. New York: Oxford University Press.