Macho: Writing Programs with Natural Language and Examples

Current natural language programming systems avoid the difficulties of dealing with abstract and ambiguous concepts by restricting the input words to those comparable to a normal high-level programming language. Our system, Macho can write programs from significantly more abstract language by asking the programmer to provide a unit test: one or more examples of correct input and output. This may seem unnecessarily complicated, but we show that natural language and examples have a surprising synergy both in constraining the ambiguity of the specification and in generating correct solutions.

[1]  Dan Roth,et al.  Minimally Supervised Model of Early Language Acquisition , 2009, CoNLL.

[2]  Koushik Sen,et al.  SNIFF: A Search Engine for Java Using Free-Form Queries , 2009, FASE.

[3]  Zohar Manna,et al.  Fundamentals of Deductive Program Synthesis , 1992, IEEE Trans. Software Eng..

[4]  Leonid Ryzhyk,et al.  Automatic device driver synthesis with termite , 2009, SOSP '09.

[5]  Samuel T. King,et al.  Macho: Programming with Man Pages , 2011, HotOS.

[6]  Peri L. Tarr,et al.  Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications , 2006, OOPSLA 2006.

[7]  Mehdi T. Harandi,et al.  Synthesis of UNIX Programs Using Derivational Analogy , 2004, Machine Learning.

[8]  Alan W. Biermann,et al.  Toward Natural Language Computation I , 1980, CL.

[9]  Collin McMillan,et al.  A search engine for finding highly relevant applications , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[10]  Michael J. Witbrock,et al.  Searching for Common Sense: Populating Cyc™ from the Web , 2005, AAAI.

[11]  Ruzanna Chitchyan,et al.  Semantics-based composition for aspect-oriented requirements engineering , 2007, AOSD.

[12]  Dan Klein,et al.  Accurate Unlexicalized Parsing , 2003, ACL.

[13]  Kajal T. Claypool,et al.  XSnippet: mining For sample code , 2006, OOPSLA '06.

[14]  Ellen Riloff,et al.  NaturalJava: a natural language interface for programming in Java , 2000, IUI '00.

[15]  Daniel C. Halbert,et al.  Programming by Example , 2010, Encyclopedia of Machine Learning.

[16]  Edsger W. Dijkstra,et al.  On the Foolishness of "Natural Language Programming" , 1978, Program Construction.

[17]  Richard A. Harshman,et al.  Indexing by Latent Semantic Analysis , 1990, J. Am. Soc. Inf. Sci..

[18]  Allen Cypher,et al.  EAGER: programming repetitive tasks by example , 1991, CHI.

[19]  Rob Miller,et al.  Keyword programming in Java , 2008, Automated Software Engineering.

[20]  Dan Roth,et al.  An Inference Model for Semantic Entailment in Natural Language , 2005, IJCAI.

[21]  Pattie Maes,et al.  Learning Interface Agents , 1993, AAAI.

[22]  Sumit Gulwani,et al.  Spreadsheet table transformations from examples , 2011, PLDI '11.

[23]  Christopher D. Manning,et al.  Enriching the Knowledge Sources Used in a Maximum Entropy Part-of-Speech Tagger , 2000, EMNLP.

[24]  Michael I. Jordan,et al.  Latent Dirichlet Allocation , 2001, J. Mach. Learn. Res..

[25]  Mira Mezini,et al.  Pegasus: first steps toward a naturalistic programming language , 2006, OOPSLA '06.

[26]  Sanjit A. Seshia,et al.  Combinatorial sketching for finite programs , 2006, ASPLOS XII.

[27]  Armando Solar-Lezama,et al.  Programming by sketching for bit-streaming programs , 2005, PLDI '05.

[28]  Michael R. Lowry,et al.  META-AMPHION: Synthesis of Efficient Domain-Specific Program Synthesis Systems , 2004, Automated Software Engineering.

[29]  Rastislav Bodík,et al.  Jungloid mining: helping to navigate the API jungle , 2005, PLDI '05.

[30]  Jerry R. Hobbs Deep Lexical Semantics , 2008, CICLing.

[31]  John McCarthy,et al.  Notes on Formalizing Context , 1993, IJCAI.