Collaboration between Microsoft and University of Cambridge researchers has resulted in the creation of DeepCoder, an artificial intelligence system that can write code based on a database of existing code fragments.
DeepCoder works by synthesizing information from pre-built computer programs. The AI scans a list of code fragments and chooses the inputs and outputs to achieve the requested result. In other words, the system does what human coders do, choosing a piece of code to fit a specific programming need, and puts each piece together to create a final functioning program.
The system was tested by completing simple challenges seen in programming competitions and can currently solve coding challenges up to approximately five lines of code. This may not seem like a lot, but DeepCoder can complete what would normally be tedious tasks in fractions of a second, which is a step up from its predecessors, and it gets faster the more tasks it completes and the more it learns which fragments of code work together and which do not.
Researchers state that this technology will be beneficial to both experienced and inexperienced coders because it can test code combinations much faster than humans as well as automate simpler coding tasks, enabling experienced human coders to work on more complicated tasks and laymen to build simple programs with ease. The system can also thoroughly and quickly scan a wider range of code to find combinations that humans might not otherwise consider.
The hope is that technology such as DeepCoder will allow a higher rate of productivity and possibly one day allow people with no knowledge of code to input an idea and receive a program built by AI.
A similarly named program called DeepCode was created in 2015 by Draper Laboratory to find and correct bugs in software before their release by recognizing patterns in code. The system would scan for flaws in code patterns and suggest corrections for repair. Another system called Prophet was created by researchers at MIT to correct problems with code. In contrast to DeepCode, Prophet learned from past successful human patches and applied that knowledge to correct flaws in applications.
For more information, see the research paper DeepCoder: Learning to Write Programs.