The $10 Million Computer-Assisted Programming Project
Written by Alex Armstrong
Thursday, 05 April 2012
No you didn't read the headline incorrectly. Programming gets very little help from the computers we program. Now there is a big project to see what can be achieved.
The University of Pennsylvania will lead a $10 Million National Science Foundation project, involving a range of other institutions, called ExCAPE - Expeditions in Computer Augmented Program Engineering. The team will be led by Rajeev Alur, professor of computer and information science, who said:
“Computers have evolved at a dramatic pace, but the technology that's used to develop programs and software is evolving comparatively slowly,
What it means to ‘code’ hasn't changed much in the last 20 to 30 years. It's still done by expert programmers and is quite time-consuming, expensive and error-prone.”
This much is obvious to any practicing programmer, but what the team hope to do is to create a toolkit that will work with the programming to help create and verify a program. One of the areas that will be explored is robotics which, being based in the physical world and having lots of constraints that are not built into current programming languages, has a good chance of good results. The example given by Alur is of trying to park a robot car:
"The programmer can start by specifying high-level goals, such as the final desired car position and the requirement that there should be no collisions along the way.
The synthesis tool can therefore start with the strategies provided by the coder, then explore different combinations for the tricky parts, automatically filling in the details with the best possible values to produce a complete program,”
Another area they hope to have success with is network flow management and its applications to multicore parallel programming.
The aim is to produce a range of design tools that let end users program robots by demonstrating example behaviors, and that provide assistance for expert programmers to meet challenges in multicore programming.
There have been projects that have attempted to replace programmers completely, but the idea of just trying to help guide their logic seems much more attainable. In this case the restricted domains of study also seem to be easier to formalize. Mathematical systems such as Mathematica, Maple and Alpha can already help with planning problems and goal seeking.
One thing is 100% certain - programmers need better tools and not just new languages.