Computer programming is undoubtedly a difficult task, as evidenced by the ongoing shortage of skilled developers around the world. It is also undoubtedly easier than it used to be due to the numerous graphical interfaces that allow modern developers to largely ignore the kind of compiler coding that developers of yore had to grapple with.
There are attempts to make the interface even easier, with DARPA working on an application to make it easier for lay people to perform data science.
Now, a project supported by the National Science Foundation aims to use a similar automated approach to making the next wave of tech. The project, called Expeditions in Computer Augmented Program Engineering (ExCAPE) aims to revolutionize how we program computers.
Automated program synthesis
At the heart of the project is a model of programming known as automated program synthesis. This allows the computer to generate code automatically based upon nothing more than the intent of the user, which they express in non-code form, whether that’s an example or a natural language command.
“ExCAPE aims to change programming from a purely manual task to one in which a programmer and an automated program synthesis tool can collaborate to generate software that meets its specification,” the team say.
Just as with the DARPA example mentioned earlier, the team hope that by removing the need to master a programming language, the team hope to greatly expand the pool of people capable of developing code.
One area that they envisage this being especially useful in is the world of online learning. They believe ExCAPE could be used for generating automatic feedback for students, and so they developed a tool called Automata Tutor, which has thus far been tested by around 5,000 students around the world.
The work has already inspired companies like Microsoft to develop automated program synthesizers of it’s own.
“At Microsoft, we have invested significantly in the field of program synthesis, especially programming-by-examples, and with applications to end-user programming,” they say.
The tech giant has developed a number of programs to do this, including FlashFill and FlashExtract. These use examples to then generate code on behalf of the user. FlashFill has been a function of Excel since the 2013 version and allows data to be entered in one place and propogated into multiple tables very simply. FlashExtract has been a feature of Microsoft’s PowerShell and Operations Management Suite and allows structured data to be pulled from semi-structured log files using simple examples. The company has also been working on a third programming-by-example project called FlashMeta.
“All of our ongoing development of by-example synthesizers at Microsoft for various domains is now being carried out over the FlashMeta framework,” they say. “In fact, we have set up an entire research and engineering team for development of this framework, called PROSE. This has yielded one order of magnitude effectiveness in the overall development process.”
Suffice to say, these developments aren’t going to remove the need for skilled programmers any more than the various visual programming tools such as Visual Basic did back in the 90s. They do however represent a fascinating development and help to place the power of coding in the hands of a much wider range of people. With the digital skills gap stubbornly high, that can be no bad thing.