WHY THIS MATTERS IN BRIEF
An AI that can code and build new computer programs from scratch could change the world, give rise to a whole new generation of entrepreneurs. And put a lot of people out of jobs…
For many of us the digital world’s an alien place. Lift up the hood and go and have a look at the code running it and it’s like staring at a screen straight out of the Matrix. As a consequence there are those people who can code, and those that can’t. People who live and breathe in this new world, and self-professed hackers like Gates and Zuckerberg who rule it, and those of us who just dabble at the edges blindly poking the apps on their smartphones like cats playing with balls of yarn.
As a result, today, as the world’s companies race to build out their new digital empires the demand for programmers has never been higher. But, unfortunately, just as the kings and queens of the new digital universe are getting used to their new exalted status on the world stage there’s a new programmer in town, and it’s packing – an artificial intelligence (AI) system called DeepCoder that’s learnt how to write its own code and write new software programs from scratch. It looks like AI wasn’t happy enough beating other AI’s into submission, building more AI’s, designing new trainers, diagnosing disease, dreaming, making up new secret languages, or slaughtering gamers online – it evidently has far too much time on its hands so hey, why not take up a hobby?
Created by the researchers at Microsoft and the University of Cambridge, the DeepCoder uses a technique called “Program Synthesis” to cut up code from existing software and repurpose it to create new programs – just like a human programmer might. Give DeepCoder some instructions, or inputs and outputs as they’re known, and it’ll learn which pieces of code it needs to use and where to generate the desired result.
“Ultimately,” says Marc Brockschmidt, one of DeepCoder’s Microsoft creators who’s based out of Cambridge in the UK, “the approach could allow non-coders to simply describe an idea for a program and the system will build it.”
“All of a sudden people could be so much more productive,” says Armando Solar-Lezama at MIT, who wasn’t involved in the work, “they could build systems that it would be impossible to build before.”
Asides from having an AI that can build new programs another big advantage is that it can search more thoroughly and widely for code, scouring databases and source code sites like Github and StackOverflow for interesting and useful code fragments, magnitudes faster than even the best $180,000 a year human coder can, and it could piece together source code in a way humans may not have thought of. Can’t figure out how to add authentication to Flask? Boom. Want to shut down sendmail? Done. All before you can blink.
All this makes the system much faster than its human predecessors. At the moment DeepCoder can trial thousands of different code combinations and create working programs, albeit the fact that most of them at the moment are only five lines long – which in many cases is still enough to create a working program – in fractions of a second. And because it learns which combinations of source code work and which ones don’t as it goes along, it improves every time it sees a new problem.
The use cases for the new system are almost limitless, for example, as far back as 2015 researchers at MIT created a program that automatically fixed software bugs by replacing faulty lines of code with working lines from other programs.
Brockschmidt says that future versions of DeepCoder could make it very easy to build routine programs that scrape information from websites, or automatically categorise Facebook photos, for example, without human coders, or non-coders, having to lift a finger.
“The potential for automation that this kind of technology offers could really signify an enormous reduction in the amount of effort it takes to develop code,” he says. But he doesn’t think these systems will put programmers out of a job, at least not yet. With program synthesis automating some of the most tedious parts of programming, he says, for now coders will be able to devote their time to more sophisticated work.
“Generating a really big piece of code in one shot is hard, and potentially unrealistic,” says Solar-Lezama, “but really big pieces of code are built by putting together lots of little pieces of code, and over time we can see a way for a system like DeepCoder to automate the entire stack.”