Computer programming is an increasingly vital and powerful tool, but two realities inhibit even greater impact. First, programming consists of an “Edit-Run-View” workflow that slows the pace of the creative process; only in latter stages can the results be visualized, at which point the programmer must return to text-editing to make subsequent changes. Furthermore, programming is limited to experts. Ideally, users would be aided in the programming process by interactive graphical user interfaces (GUIs), akin to those available for domains such as word processing, spreadsheets, and graphic design.
To this end, we propose the notion of direct manipulation programming systems which blend the expressive power of general-purpose programming languages with the interactive, intuitive workflow of direct manipulation interfaces for a variety of application domains. As a first step towards this vision, we are developing Sketch-n-Sketch (http://ravichugh.github.io/sketch-n-sketch/), an interactive programming environment for creating Scalable Vector Graphics (SVG). Compared to traditional programming environments, Sketch-n-Sketch allows the user to:
directly manipulate the output of a program as a way to indirectly modify the program without text-editing; and
directly manipulate the source code of a program to perform structured editing and refactoring tasks without text-editing.
These two sets of features—which augment an otherwise traditional, unrestricted text-based programming environment—reduce the amount of tedious and error-prone text-editing that arise when programming.
In this talk, we will demonstrate the interactive programming capabilities provided by Sketch-n-Sketch. Some of the output manipulation features, and all of the code manipulation features, are new compared to the version of Sketch-n-Sketch demonstrated at Strange Loop 2016 (https://www.youtube.com/watch?v=YuGVC8VqXz0). We will also describe how these ideas may be extended and adapted to other application domains, including web application development, data manipulation and visualization, and general-purpose software engineering
I am an Assistant Professor at the University of Chicago. I enjoy developing and deploying programming language technology — type systems, synthesis algorithms, and other program analysis techniques — for applications in software engineering and human-computer interaction.
Wed 25 Oct
|10:30 - 11:00|
|11:00 - 11:30|
|11:30 - 12:00|