CSAIL Publications and Digital Archive header
bullet Research Abstracts Home bullet CSAIL Digital Archive bullet Research Activities bullet CSAIL Home bullet

link to publications.csail.mit.edu link to www.csail.mit.edu horizontal line


Research Abstracts - 2007
horizontal line

horizontal line

vertical line
vertical line

Keyword Programming

Greg Little & Robert Miller


Modern applications often provide scripting interfaces to programmatically control their content. For instance, Microsoft Word allows users to modify documents using Visual Basic. Blender, an open source application for 3d modeling and animation, allows users to write Python scripts to manipulate 3d models. Firefox, a popular web browser, has extensions like Chickenfoot[1] that allow users to modify webpages using Javascript. The Gimp, an open source image editing program, allows users to modify images using LISP. These, and many other applications provide scripting support.

Scripting is useful in these applications to automate repetitive tasks, and to record complicated procedures so that they can be repeated later (or shared with other people). Unfortunately, users must overcome several hurdles in order to write scripts:

  • First, they need to be familiar with programming in general. They need to be comfortable writing sequences of instructions, and they need to be detail oriented enough to deal with the rigid syntax constraints imposed by most languages.
  • Second, they need to be familiar with the particular scripting language in use. They need to know how to formulate common expressions in the language, and they need to know some of the built-in functions for manipulating basic data types.
  • Third, they need to be familiar with the Application Programming Interface (API) for the application they are scripting. They need to have some idea how the functions are named, and how they depend on one another.

Many people who use the applications mentioned above are not familiar with programming. Even those who are may not be familiar with the particular scripting language in use. And if they are, they still need to learn the API for the application. This learning curve is so high that many professional users of these applications do not know how to write scripts for them.


We propose Keyword Programming: a programming paradigm that eschews rigid syntax and strives to parse suggestive and loosely grammatical expressions. Consider the expression "left margin 2 inches" in the context of Microsoft Word. This expression suggests the idea of making the left margin of the current document 2 inches wide. It can be expressed in the formal syntax of Visual Basic as ActiveDocument.PageSetup.LeftMargin = InchesToPoints(2). A Keyword Programming system will try to automatically generate this code from the original expression.

Using this approach, users face a smaller set of hurdles for writing scripts:

  • They still need to be familiar with the idea of writing sequences of instructions, but they do not need to be as concerned with the details of syntax.
  • They still need to be able to recognize what an instruction will do (to confirm that the system has understood their intent), but they do not need to know how to generate these expressions on their own.
  • They still need to know what sorts of functions are available in the API, but they do not need to know their exact names, and they may not need to know how they depend on one another.
Current Work

We have created a Keyword Programming system in the web domain [2]. We are currently working to extend this system to the Java domain. Our goal is to create an Eclipse plugin that offers auto-complete style suggestions for a sequence of keywords, as shown in this figure:

Diagram depicting syntax free programming
Figure 1. Diagram depicting Keyword Completion in Eclipse.

Our two main efforts right now include:

  • develop an algorithm to efficiently search the space of possible programming expressions
  • get a sense for how useful such a system would be in practice

This work was supported in part by the National Science Foundation under award number IIS-0447800, and by Quanta Computer as part of the TParty project. Any opinions, findings, conclusions or recommendations expressed in this publication are those of the authors and do not necessarily reflect the views of the sponsors.


[1] Michael Bolin, Matthew Webber, Philip Rha, Tom Wilson, and Robert C. Miller. "Automation and Customization of Rendered Web Pages." UIST 2005, pp. 163-172.  Winner of best paper award.

[2] Greg Little, and Robert C. Miller. "Translating Keyword Commands into Executable Code." UIST, 2006


vertical line
vertical line
horizontal line

MIT logo Computer Science and Artificial Intelligence Laboratory (CSAIL)
The Stata Center, Building 32 - 32 Vassar Street - Cambridge, MA 02139 - USA
tel:+1-617-253-0073 - publications@csail.mit.edu