Making programming more conversational

A. Repenning
2011 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)  
Accelerated by the Do-It-Yourself mindset of the Web 2.0 culture, end-user programming-programming by end users with limited or even no formal programming background-is growing rapidly. Especially in educational settings, children are exposed to computational thinking by making games, building scientific simulations and creating stories. Early educational programming languages such as Logo have made programming substantially more accessible to end-users. More recent approaches include visual
more » ... s include visual programming with a drag-and-drop style of programming that makes it nearly impossible to compose syntactically incorrect programs. However, as the syntactic challenges of end-user programming are gradually fading into the past, the new frontier of semantic programming support emerges. This demonstration introduces Conversational Programming, a system to make programming more conversational. A conversational programming agent runs programs one step into the future in order to help end-users visualize discrepancies between the programs they intended to write and their actual programming results. Keywords -Game design; computational thinking; debugging; end-user programming; visual programming. I. TOWARDS CONVERSATIONAL PROGRAMMING In programming, the interaction between the programmer and the programming environment is typically asymmetrical and often limited to syntactic feedback regarding programs that are malformed. Miss one semicolon in a C program and the program may no longer work at all. A programmer may spend a considerable amount of effort on writing a program before the programming environment provides meaningful feedback. One way to simplify programming would be to make the communication process between the programmer and the programming environment more symmetrical with the goal of aiding debugging. But just how can one conceptualize debugging? Pea [1] describes the process of debugging as: systematic efforts to eliminate discrepancies between the intended outcomes of a program and those brought through the current version of the program.
doi:10.1109/vlhcc.2011.6070398 dblp:conf/vl/Repenning11 fatcat:r4mdauqhs5hqzclwzm2b4okduy