Natural Programming Project

The Natural Programming Project is working on making programming languages and environments easier to learn, more effective, and less error prone. We are taking a human-centered approach, by first studying how people perform their tasks, and then designing languages and environments that take into account people's natural tendencies.

Early work focused on designing languages for novices based on how people think about expressing algorithms and tasks. Current work is focused on programming environments and libraries. We studied novice and expert programmers working on every-day bugs, and found that they continuously are asking "Why" and "Why Not" questions, so we developed the "WhyLine" debugging tool which allows programmers to directly ask these questions of their programs and get a visualization of the answers. The WhyLine decreased debugging time by a factor of 8 and increased programmer productivity by 40%.

We studied typical maintenance tasks and discovered that programmers spend about 38% of their time navigating around code, and so we are in the process of designing a new tool to help eliminate this overhead. When learning how to use new libraries, we observed that programmers tend to try to adapt examples, so developed techniques to make reuse of example code easier. For editing of code, our studies show that people do not require the full flexibility of text editing, so we designed a prototype environment that provides more support.

More information about the Natural Programming Project can be found on the CMU Natural Programming project web site.

Brad Myers talks about the project on a Google video: Google Video: Update on the Natural Programming Project