From Natural Language to Programming Language

Programming remains a dark art for beginners or even professional programmers. Experience indicates that one of the first barriers for learning a new programming language is the rigid and unnatural syntax and semantics. After analysis of research on the language features used by non-programmers in describing problem solving, the authors propose a new program synthesis framework, dialog-based programming, which interprets natural language descriptions into computer programs without forcing the input formats. In this chapter, they describe three case studies that demonstrate the functionalities of this program synthesis framework and show how natural language alleviates challenges for novice programmers to conduct software development, scripting, and verification.

[1]  Martin Erwig,et al.  Test-driven goal-directed debugging in spreadsheets , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[2]  George A. Miller,et al.  WordNet: A Lexical Database for English , 1995, HLT.

[3]  Xiao Liu,et al.  Natural Shell: An Assistant for End-User Scripting , 2016, Int. J. People Oriented Program..

[4]  Emily Hill,et al.  Natural Language-Based Software Analyses and Tools for Software Maintenance , 2010, ISSSE.

[5]  Alan W. Biermann,et al.  An Experimental Study of Natural Language Programming , 1983, Int. J. Man Mach. Stud..

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

[7]  Alan F. Blackwell,et al.  Natural Notation for the Domestic Internet of Things , 2015, IS-EUD.

[8]  Alan W. Biermann,et al.  Natural Language Programming , 1983 .

[9]  Mary Beth Rosson,et al.  Programming at runtime: Requirements & paradigms for nonprogrammer web application development , 2003, IEEE Symposium on Human Centric Computing Languages and Environments, 2003. Proceedings. 2003.

[10]  Henry Lieberman,et al.  NLP (Natural Language Processing) for NLP (Natural Language Programming) , 2006, CICLing.

[11]  Xiao Liu,et al.  PiE: programming in eliza , 2014, ASE.

[12]  Kent D. Lee Event-Driven Programming , 2011 .

[13]  Gregg Rothermel,et al.  End-user software engineering with assertions in the spreadsheet paradigm , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[14]  Brad A. Myers,et al.  A Linguistic Analysis of How People Describe Software Problems , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[15]  Randy Pausch,et al.  Learning To Program With Alice , 2004 .

[16]  Henry Lieberman,et al.  Knowing what you're talking about: Natural language programming of a multi-player online game , 2010 .

[17]  Brad A. Myers,et al.  Using HCI techniques to design a more usable programming system , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[18]  A. Moskalik eLiza , 2017, Nature.

[19]  Sumit Gulwani,et al.  NLyze: interactive programming by natural language for spreadsheet data analysis and manipulation , 2014, SIGMOD Conference.

[20]  Jonathan Berant,et al.  Building a Semantic Parser Overnight , 2015, ACL.

[21]  Brad A. Myers,et al.  Creating interactive web data applications with spreadsheets , 2014, UIST.

[22]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

[23]  Elliot Soloway,et al.  Preprogramming Knowledge: A Major Source of Misconceptions in Novice Programmers , 1985, Hum. Comput. Interact..

[24]  Xiao Liu,et al.  Automated Synthesis of Access Control Lists , 2017, 2017 International Conference on Software Security and Assurance (ICSSA).

[25]  Brad A. Myers,et al.  Natural programming languages and environments , 2004, Commun. ACM.

[26]  Brad A. Myers,et al.  Studying the language and structure in non-programmers' solutions to programming problems , 2001, Int. J. Hum. Comput. Stud..

[27]  Alan F. Blackwell,et al.  Teach and try: A simple interaction technique for exploratory data modelling by end users , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).