Microsoft Research Developing An AI To Put Coders Out of a Job (mspoweruser.com)
jmcbain writes: Are you a software programmer who voted in a recent Slashdot poll that a robot/AI would never take your job? Unfortunately, you're wrong. Microsoft, in collaboration with the University of Cambridge, is developing such an AI. This software "can turn your descriptions into working code in seconds," reports MSPoweruser. "Called DeepCoder, the software can take requirements by the developer, search through a massive database of code snippets and deliver working code in seconds, a significant advance in the state of the art in program synthesis." New Scientist describes program synthesis as "creating new programs by piecing together lines of code taken from existing software -- just like a programmer might. Given a list of inputs and outputs for each code fragment, DeepCoder learned which pieces of code were needed to achieve the desired result overall." The original research paper can be read here.
they keep changing.
Can we just hold progress back another 40 years or so? I'd like to be cold in my grave before the world changes so much I can no longer find my place in it.
Also, the massive social upheaval during the transition period between our current system and whatever replaces it is likely to be extremely unpleasant for the average person.
This might be good at helping people who can't program get their ideas at least functional so they can't be shown as proof of concepts to actual programmers who can finesse it to make it proper.
It really won't. So instead of having to manually code it, you need the exact same type of person to specify requirements with as much precision and detail as possible. An act they were already doing while coding. They will have to do this repeatedly while working out the bugs in their requirements (aka, code), and probably still needing to manually fix things here and there. So like, thanks for AI Snippets?
Given the long history of crappy code from Microsoft, it don't look so nice... more crappy unoptimized code...
piecing together lines of code taken from existing software -- just like a programmer might.
Ehm, right. Because all coders do all day is cut & paste code snippets from StackOverflow. And those snippets are placed there by the tooth fairy?
The idea isn't exactly new, and there have been some attempts in the past to build code generators which string together finely-grained mini routines from specifications into a working bit of software. But those have proved to be problematic, especially when it comes to maintenance, change requests, and multi-threading. Keep in mind that today's software engineering isn't straightforward input -> process -> output anymore; even the simplest apps have to deal with asynchronous stuff in UI, database and networking code, and the resulting problems aren't solved simply by piecing together the right code snippets. Not saying that there will never be an "AI" that is able to code, and research like this is pretty interesting, but in this form this isn't job threatening in the least.
If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
Isn't writing out requirements in a way a computer can understand the essence of any programming language that has ever existed? So how is this any different? To truly get rid of programmers, the machine would need to look at the world, figure out what the problems were, figure out the requirements to solve it on it's own, and solve it. Then, yes, would programmers be able to look at kitten pictures all day.
Unless your a programmer, I don't think you can make specifications complete and detailed enough for this to work. I've heard many customers say "always do this" and come back later and say well except when that happens.
The Last One (software)
As someone else said, it sounds like it mimics the type of programmer who spends all his time gluging together copypasta code snippets from StackOverflow without understanding them. So it will clearly put the hack (in the context of "hack writer") contractors from India with fake degrees out of a job first. The kind of coding I do doesn't have snippets to put together.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
The people who call themselves "coders" already do little more than paste together half-assed open source projects they find on github and snippets copied from Stack Overflow.
Replacing them with an AI would increase the quality of software by orders of magnitude, and increase the productivity of everyone who can't be replaced.
"Called DeepCoder, the software can take requirements by the developer, search through a massive database of code snippets and deliver working code in seconds..."
This I have got to see. By the way, I notice that the first thing mentioned is the proposed name. "DeepCoder" - well, with a name like that, how could anything go wrong? After finding that name, I expect the rest of the project was all downhill. So to speak. Erm...
1. "...take requirements by the developer..." Expressed in what form? As random remarks over a cup of coffee - in which case the usual proportion of incorrect, incompatible and misconceived requirements can be expected, along with the standard quota of perhaps 90% of the requirements not being mentioned at all (because no one has thought of them). Or perhaps in some rigorously defined logical format, in which case we might simply call them "pseudocode" or "Model Driven Design" or perhaps "formal methods".
2. "...search through a massive database of code snippets and deliver working code in seconds..." Ah, the long awaited "Frankenstein IDE"! Now you too can have a loving companion or friends stitched together from offcuts of raw liver and other offal. If only it weren't so easy to pass so airily over real difficulties to conjure up images of working code delivered in seconds. I wonder if Microsoft has thought of providing some kind of validation utility to make sure that the "working code" actually implements the requirements?
I am sure that there are many other solipsists out there.
More likely HR will expect 10 years of Deep Coder experience the moment businesses start using it.
Changing requirements aren't a problem. All you need is to define a language where they can be specified precisely, and hire someone who can translate your real world requirements into that language. Once you've got those, you can still do away with programmers because the new magic code generation tools will do everything else for you.
Sounds like you are describing a compiler.
Just as programming tools today are much better than those used in the 80s and 90s, the tools used by programmers a decade or two from now will make developers far more productive. IMHO we have already reached a point where the more valuable work is in requirements elicitation and architectural design as opposed to writing code. I imagine in 20 years writing code will be like being a CAD operator today in both the level of training required and pay scale.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
Great so now the computer will write the program the customer doesn't want because he didn't really know what he wanted when he wrote the requirements. How will this AI piece cope with software maintenance & bug fixes?
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
What many people don't understand is that describing things to a computer, no matter how, is what coding is. The programming language is just a facade. Managing highly complex tasks accurately enough for computers to understand is where the real skills lie.
Just look at one example from the paper :
A new shop near you is selling n paintings. You have k < n friends and you would like to buy each of your friends a painting from the shop. Return the minimal amount of money you will need to spend.
And the output (modified to fit slashdot):
k=int; b=[int]; c=SORT b; d=TAKE k c; e=SUM d
What it proves is that the AI is great at answering test questions. However, in a production environment, no one is going to write and maintain a description like this.
And it is just a tiny function. To match the complexity of a real-life program, you have to imagine the same kind of description but spanning hundreds of pages...
Compilers didn't put coders out of a job, these AIs may be the next step but they still won't displace coders. Although it may require some skill adjustments, it won't fundamentally change the job.
... there was this idea that we let people define their requirements in a formal sort of English, and let the computer write programs from that. That was called COBOL, in 1959, and the computing world hasn't been the same since.
In Murphy We Turst
Looking at how FrontPage generated simple HTML markup language behind the WISIWYG interface, programmers have nothing to fear for their job...