Researchers hope to replace manual programming with computer-generated code based on users’ intent, which might be expressed as examples or via natural language commands.
What if we could make computer programming easy enough for everyone to do it?
That’s what researchers at the University of Pennsylvania are trying to do with their Expeditions in Computer Augmented Program Engineering, or ExCAPE, program. And they’re not talking about teaching everyone to code.
The project seeks to transform the way software is developed by replacing manual programming with computer-generated code based on users’ intent, which they might express as examples or natural language commands. Besides easing the burden of programming, this model of programming called automated program synthesis could reduce the number of human-generated coding errors, according to a recent article by the National Science Foundation, which is funding the research.
Additionally, by removing need to know programming languages, the method could greatly expand the number of people engaged in programming in a variety of disciplines, from personalized education to robotics.
One distinguishing feature of the new approach is flexibility in the way programmers can express insights to guide the program-synthesis tool, the NSF said. Depending upon the specific development task, programmers can express their intents with incomplete programs, declarative specifications of high-level requirements, positive and negative examples of desired behaviors and optimization criteria for selecting among alternative implementations.
"The synthesis tool uses a range of computational approaches and developer interaction to compose these different views about the structure and functionality of the system into a unified, concrete implementation," the project site says. "The computational techniques include decision procedures for constraint-satisfaction problems; iterative schemes for abstraction and refinement; and data-driven learning. The methodology for programmer interaction moves verification from the back-end of the design cycle to the front-end, with the promise of a more reliable software product."
The research project has received grants totaling more than $9 million, covering research from 2012 through 2017.
While the goal of broadly revolutionizing computer programming remains to be realized, several offshoot developments have already been achieved, resulting in new tools such as NetEgg, which "lets a network operator specify the desired functionality of a switch using examples," according to the NSF article. "NetEgg then automatically generates the code needed to implement that behavior while ensuring maximal throughput for network traffic."
Other benefits realized by the research listed in the NSF article include Automata Tutor "to help students learn automata theory and to help teachers prepare exercises and problem sets." It's already being used by more than 10 universities to help more than 5,000 students, NSF said.
The ExCAPE research into syntax-guided synthesis has also made its mark in commercial software via companies such as Microsoft, which was inspired to create its own automated program synthesizers, NSF said.
The ExCAPE site also lists many other research initiatives, ranging from addressing the special challenges of mobile app development to solver-aided languages research to explore the rapid creation of synthesizers in a prototyping fashion.
The research project is a collaborative effort involving the University of Pennsylvania, Cornell University, University of California-Berkeley, Rice, UCLA, University of Maryland, MIT, University of Michigan and the University of Illinois at Urbana-Champaign.
"This project builds on decades of foundational advances in formal methods and programming languages," NSF exec Nina Amla said. "It signals a paradigm shift in the way we teach basic programming principles, and develop reliable software systems."