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.
If it's learning from the Windows code base.
search through a massive database of code snippets and deliver working code in seconds
Isn't this what real programmers do already? Minus the "working" part, of course.
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.
They'll get it to a point where they can give this system a description of itself and it'll build itself and put them out of a job
Who is this "Al" and why does he keep trying to put everyone out of work? It seems like the best thing for the economy^w Human race would be to find Al and order a drone strike on him.
---
And before all you ACs leap to eviscerate me for my inscrutable post, consider your glyphs.
I am Slashdot. Are you Slashdot as well?
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.
Just seeing the rate at which things are going and having a look at little things here and there, just connect the dots.
Who would have bet on self-driving cars the next 20 years in 2010? And yet, we seem to be on the brink of it. Who would have bet on deep speech recognition, on spoken-to-spoken translation? There are still some trying to not see that.
More on topic: look at this. Javascript de-obfuscation -- among other things finding reasonable variable names based on... corpus search "out there" on GitHub. We are closer to being replaced than we might like to realize.
The 10^18 dollar question is now... how is our society supposed to look like after that? How would we want it to look like?
Crickets.
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?
That's why they're called code monkeys. The hard part is figuring out efficient ways to achieve your goals. This is just the next abstraction layer for programming. Machine code got us so far, then compiled languages, now we're moving on to the next level.
Given the long history of crappy code from Microsoft, it don't look so nice... more crappy unoptimized code...
using proprietary data sources like hard drives and emails
https://xkcd.com/1185/
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.
automated software production? this. times a million.
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 real questions are "Who owns the code used?" and "Who owns the final code product generated?"
After which the new system will build something and put itself out of a job... each new creation will obsolete it's own maker; ad nauseam.
I can't wait to try and maintain code generated by pasting together random code snippets. And people thought old COBOL mainframe code was expensive to keep going, well hold on to your hats.
I'm looking forward when Microsoft uses this AI to code Windows OS. :)
It will be also the time when Linux will finally take over desktop
Probably longer. But I remember such articles in 1976.
Getting hard to take it seriously.
Wanted. Outstanding Candidates with at least 3 years experience with DeepCoder. Must be able to show past work experience successfully writing DeepCoder specifications, implementing and maintaining the results.
This position is H1-B eligible.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Oh no, and India was doing so well growing its economy...
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; }
Read the paper. The example programs are effectively the same as the types of math problems we give students who haven't even left high school yet. And it doesn't even "show the work", so really, its still useless.
Don't forget we need to build a 2000-mile wall on the Mexican border, and stop all Muslims from entering the country.
Taking those tough but common sense steps will protect your job from automation.
before I believe it will work.
I worked once on a very large project that tried to do something similar for the Dutch tax service: put the (ever changing) tax regulations in some form of specification language, and compile that to C# code. I was a contractor for some time on that project. After a 160 milion EUR budget overflow and some questions about it in the parliament the project was significantly reduced in its ambitions.
Nothing new or unexpected here. This is just another abstraction from machine language. Expect bigger, less efficient & less secure code.... same as we have each time we add another abstraction layer on.
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.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
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.
"... With program synthesis automating some of the most tedious parts of programming, he says, coders will be able to devote their time to more sophisticated work."
Classic Microsoft. This is why their code is huge and slow. They don't give a crap about code quality and see coding as cut and paste. Classic example -- DR DOS was way smaller than MS DOS, and did all the same stuff. It just wasn't filled with crap code no one cared about.
"Is developing", not "has developed". I understand that Dr Frankenstein was developing a perfect human, made of snippets gathered from graveyards.
When all you have is a hammer, every problem starts to look like a thumb.
In all fairness, cutting and pasting other people's code snippets together is exactly what MS is used to from their hordes of H1B staff.
All you have to do is specify the requirements, then you can just graphically draw it and put the app together! That's it! That's all you'll ever need to do. And it will work, just like it did in the 90s.
Actually, it will work exactly like it did in the 90s. Which is to say not at all, and to store up a load of 4GL take-out projects for the early 2000s...
A copyright infringement nightmare...
Bad code is already perversive, it is much more common than good code. So, you write an AI that takes various snippets of, more likely than not, bad code and combines them. And this AI is still written by coders who, more likely than not, are not the best coders themselves, so the sum will probably be even worse than the parts... If Microsoft has great engineers working on fancy stuff like that, perhaps they should instead throw a couple to the Skype team for example (I don't know what they are doing, but they are slowly degrading what was a useful service).
In any case, good coders already reuse libraries etc and end up doing the job of several coders that are inventing the wheel. And it is much easier for the non-technical person to communicate with a coder to describe the requirements, because an AI system would still need a specification language to describe things - it would just be a higher level programming language in a way.
I remember I was told that when SQL first came out (SEQUEL) there was the idea that business users would be able to communicate with databases so db programmers wouldn't be needed... yeah, right.
Violence is the last refuge of the incompetent. Polar Scope Align for iOS
"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.
People have been announcing such things at least since the late 80s, possibly earlier.
Then it is up to the customer to test it, test it again, and make the code meet the specs through a complex evolutionary process where they file bug reports and the developer fixed the reported symptom, without fixing the underlying cause, and also introducing a new bug. This process eventually stops when the customer gives up in disgust and agrees to modify the specs to meet what the code does.
The only difference seems to be they have replaced the diploma mill grad with some artificial intelligence. In some sense it is a very good experiment to see if Artificial Intelligence can ever match the Natural Stupidity.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
Focus on your failing windows 10 ecosystem instead of promising "AI", Microsoft.
https://www.youtube.com/watch?v=MzJ0CytAsec
developer bots!!! developer bots!!! developer bots!!!
I would have done all caps, but the slashdot filter doesn't like that...it's not like i committed some mortal sin, like post a movie spoiler.
This is the first numerical problem I ever did.
It demonstrates the power of computers:
Enter lots of data on calorie & nutritive content of foods.
Instruct the thing to maximize a function describing nutritive content, with a minimum level of each component, for fixed caloric content.
The results are that one should eat each day:
1/2 chicken
1 egg
1 glass of skim milk
27 heads of lettuce.
-- Rev. Adrian Melott
We Lisp people knew we would eventually exploit higher order functions. Problem is that C++ and Java people convinced the world that macros are bad.
... that can turn the harebrained buzzword/bullshit-laden confused and convoluted descriptions ("specs") of my marketing crew into a working product.
No freakin' way. The AI would probably have a meltdown.
My job will remain for a loooong time. If the rest of the population were able to formulate what they actually want, I'd be out of a job 10 years ago, with CASE tools taking my job. But that didn't happen. However, I might be the one discussion the new software with the AI. Looking forward to that. But then again, research shows that talking uses something like 80% of our brain while writing uses 25%.
So some sort of coding via type, even if it is to talk to an "AI", will probably always remain.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
In beginning college programming classes many errors, both syntactic and logical start with the bad programming habit of cutting and pasting code. On top of this one of the things that will get your resume thrown in the circular bin quicker than anything is if they have any indication that you are in any way a script kiddie.
This is both of these combined into one. It sounds like a good idea, but if it works I will be surprised and on top of that even if it works, I would be surprised if anyone would believe it worked well enough for it to catch on. Ask the CSAIL department at MIT and they will poo poo the idea and laugh you out of the building. That has been their position on this since the early 1980s.
I don't see this causing a major stir for quite a long while because of several flaws with the very concept.
#include <stdio.h>
#include "error.h"
int main( int argc, char** argv )
{
if (argc < 3)
error( "%s: not enough arguments", argv[0] );
This question has already been discussed and answered numerous times.
}
Jeff Dean to sit inside a room with a keyboard.
Maybe a month ago I was talking with my developers about this very thing and I did hear some uneasinnese in their voices, some fear of the future job prospects. However I explained that this is exciting if at all possible. This would not replace the developer, it would make a developer quite a bit more productive though, allowing for the business requirements to be implemented much faster.
Say you are working on a large use case, you put together the data model, maybe most of the DDL, some front end work, maybe the HTML components (if web based). Now you want to connect the data to the presentation. So bring up the AI, tell it the data validation requirements while pointing at the fields on the screen and pointing at the database fields. It should fill in the validation routines and the code that connects it all while following the project standards for security checks, transaction handling, basically generating the missing code.
The developer would provide the end points and describe the behaviour with human language/pointing at things while describing this, the AI would provide a number of solutions to choose from.
The AI should keep track of test cases based on the description, provide a test suit. It should keep an eye on the code base at all times to notice what it can do for the developer and propose it whenever it sees the opportunity, etc.
Would this put developers out of jobs? I think it would make developers much more productive, allowing for many more projects to be created and tested. The AI should help integrating components, keep track of configurations, do more testing on all levels (functional, security, load, etc). The projects should be churned out faster and with a higher quality, while more ideas would have a chance to be tried out as projects.
You can't handle the truth.
Where are they getting snippets from? To me, this just makes GPL'ing my code much more attractive.
Those who do not learn from commit history are doomed to regress it.
So you mean high level abstraction is the hard part and once a problem has been stated at sufficiently low level the lower levels can be standardized and needn't be recoded from scratch everytime ?
I'm shocked!
This would be the "Do what I mean" instruction that developers have always dreamed of.
We have all these different development methodologies to try and fail ideas fast and avoid wasting time. Often what a business person says isn't what they want. If someone invents an AI that can read minds, then AI writing software will be practical. Until then, garbage in != usable software.
Who is going to write new building block snippets?
OH RIGHT.
This will end up like a lot of engineering design work outsourced to India, China, etc. Someoneses back in the home country will have to sort out all the bugs and crap (risky, tedious, thankless, unfulfilling work) while management pats themselves on the back and gets bonuses for having "saved money". And of course, competition for the thankless jobs will be fierce since so many will be under/unemployed. The past-promised cornucopia of jobs due to boomers retiring has been supplanted by automation and offshoring. Bye-bye middle class and welcome to the Poverty-Rich Leisure Class!
A few years ago there was a tool that did something similar for art: you drew a really rough line-drawing that just gave a sense of scale and position to each object. Then you labeled each object like "cheetah" or "motorcycle" and had one special label for the background, like "desert." Then it ran an image search: it would look for an image tagged with the same label, with roughly the same proportions as the outline. It auto-photoshopped it in, and viola! Instant art! One of the demo pictures was a cheetah chasing a motorcycle, and it was pretty good and kinda funny.
However, I notice that the art industry is largely unaffected.
Also, I don't think it is so easy to just "blur and sharpen" between two areas of code. Maybe something like "content-aware fill" would work here? ;-) Not likely.
We can finally shitcan all the smelly, smug neckbeards.
I'm sure it would do a better job than the MS coders.
Does this mean Steve Balmer will have to come out stage yelling "AIs! AIs! AIs!"?
So you're feeding a computer a list of instructions, and it is doing something based on those instructions. Sounds like coding to me, just a more higher level.
Ah, metaprogramming, mark II.
HAHAHAHAHA
Not sure if I heard myself right, but...
HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
Fxkn M$.
kepps ME in a jb.
HAHAHAHAHAHAHAHAHAHA
Ahhhhhh, *sniff*
fek
hahehahe
AI by M$
The day the viral infections of m$ died.
M$ have the clue of a parasite.
The reason the OS has not been killed insofar as it has today, is business.
Co-incidence?
_captcha_ supplier
This is going to be an inner-platform, not for a platform, but...wait for it...for a programmer.
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.
Clippy has now transcended and is going to take revenge on every one that would not allow him to help and disabled him.
Pointy-Haired Boss gave Dilbert a timeline for project: Design a client-server architecture for our world-wide operations. Time: Six Minutes.
Yeah, ... and where do they get code from?
---
Anyway, can't wait, ... so I am off surfing.
So here's a question: What skillset would be needed to use this approach effectively?
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.
Why would anyone think they could get away with posting shite like this ?
Ah, Slashdot.
I have absolutely no doubts this will be a catastrophic failure, as it's done by the same people who made Bob, Windows ME, Windows Vista and Windows 8 just to name a few. So no concerns over losing my job at all, more like in the mood of grabbing some popcorn and watch it crash and burn.
... 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
search through a massive database of code snippets
Does it also search through a database of software patents to make sure that it doesn't infringe?
A better use of the AI in today's world would be to review all existing software patents, then generate as many non-patented concepts as possible and file for software patents on them.
Maybe if you work for NASA, are building life and safety critical industrial software, or writing firmware for a pacemaker you get requirements that are this specific. In the other 99% of use cases a developer will be writing to, forget about it. The cost of specifying a problem to that level of detail is astronomical and also multiplies the cost of any changes you might have to make.
Also, who is writing these detailed specs for the AI to follow? Software engineers. This thing is a threat to code monkeys churned out of 6-month certificate programs, not experienced developers. And if my job in 10 years is to interpret hand wavy customer specs into Lojban for an AI to interpret and then hand the results to some interns to groom into something maintainable, then I'll adapt. It's not that different than what I'm doing today.
Self coding AI...
Shudders. Now it's snippets. Next will be full code. Then it will awaken...
"The avalanche has already started. It's too late for the pebbles to vote." - Kosh
I will consider it a success when I can speak to it and say "I want a piece of software that, without doing anything illegal or immoral, will make me a billionaire in under a year", and it works. Multi-millionaire in under a year is a partial success.
Am I the only one who think coding is the process of interpreting what the developer wants and put it into code, in details, so that the machine can understand? By introducing these AI coders, a lot of the details will be lost and nobody will be 100% sure what will be going on in the final programs. If the "coding" here in the context means going from human spoken language directly to machine codes when these AI coders become "mature", I think it should be a concern to all of us. Sometimes being able to do something doesn't necessarily mean we should actually do that something.
Let's look at 2 basic facts: 1. Programming is at least partially an art. Along with interpreting human requirements which are often the most difficult part of the any software designer's job. An AI can make basic shell classes, but after that, well, even user friendly language constructs have been found lacking after months or years of human involvement. So an AI doing that job for anything other than basic junior level tasks, is not going to be able to do the job at a professional level. Not for quite some time. If ever. (Probably a few sci-fi books on the dangers of this) 2. This is MICROSOFT. Come on. Them make a good AI? They have trouble making a good operating system. If this came from, say, the University of Rochester I might have more faith, but MS? The people who gave us Visual Basic (the worst programming language for quality code), Windows ME, Windows 8, Windows Mobile edition (with a memory manager so bad 3rd parties made money writing software to check your code to be sure yours didn't make it crash) and most recently Windows 10 (still being rewritten, and will be again with the EU "concerns" on privacy)? . No....just...no.
"Imagination is more important than knowledge" - Einstein
Don't forget we need to build a 2000-mile wall on the Mexican border, and stop all Muslims from entering the country.
And the nukes being smuggled in bales of pot.
http://www.thekindland.com/policy/today-in-bomb-weed-arizona-congressman-says-terrorists-will-ship-2654
I took a Software Engineering class where we covered formal specifications. For even a simple piece of code, the formal specifications were longer than the code to cover all of the boundary conditions. It was faster and simpler just to write code. Using code snippets in not new. We call those libraries. I've used those all my life. My code specifies which libraries to use and how to tie those together. Also, random code written by other people are frequently crap. Who is going to vet the quality of the code? I am not scared by this at all.
More like Penultimate. https://openlibrary.org/works/...
in my 30+ years of experience in "coding" 80 - 90% of my time is spent debugging/maintaining code. any idiot can string lines of code together to complete a narrow well defined task. as soon as you give it to a real user, they try to use it in ways you never thought of and voila, bugs... in addition, i have yet to work on a project where the requirements were even close to correct the first time (or the second, third...). schleprock
...and has been in the market for a long time. Now if they build an AI to turn a client's thoughts into functional specification, that would be real achievement.
Oh go cry me a river with your false lack of selfishness.
They could even get it to parse UML right.
Yet another documentary: https://openlibrary.org/works/...
Remember when Microsoft Songsmith put Sound Engineers out of work? https://www.youtube.com/watch?... This is really troubling that the same could happen to us programmers.
Sure thing bro; we're heard those promises since the 1960s and every single one of these fuckers generates more jobs for coders.
COBOL, 4GL, RAD, Specification Languages all failed in that respect; and the company who set computers back at least 10 years is gonna succeed? Sure thing bro, and while you're at it, find a different vendor for your weed, because there's something funky in the shit you're smoking now.
"search through a massive database of code snippets and deliver working code in seconds"
Thing is, I'm in the business of writing code most of which you won't find in code databases. Also, in a sense, among those that create such algorithms that are behind those like the above mentioned. However, I'd be delighted if a day would come when I could shortly describe what I want and some synthesis engine could create the code for me, even if only partially. Especially the tedious mundane parts - however, most of those we don't re-write but re-use anyway. So no, I'm not really afraid about my job becoming obsolete.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
Indeed this "new" tech (copy pasting junk from Stackoverflow) can't handle simple tasks like division, or modulus.
One programming task I handled, we already had a function which basically computed some averages, using division and a few other simple operations. To simplify, lets's just say the core function was something like quotient(x,y), which would return X divided by Y. That was useful. The customer very much wanted a slightly different version. They wanted quotient(x). That was the requirement for the software, compute quotient(x). I'd like to see any AI produce code for that. I, a programmer, did eventually get the customer what they needed.
My current assignment I'm working on today is similar. It's basically "write an SQL query which returns the list of software products we have in our database, and for each list all of the operating system versiona they can run on". Sounds simple, right. The relevant data is a table of about a million rows in this form:
SoftwareID - ProgramName - Vendor
1 - Firefox - Mozilla Foundation
2 - bash - FSF
3 - jQuery - jQuery Foundation
I'd love to see some IA that writes a query to get, from the above table, information about which OS versions each software package can run on. That's my task as a programmer, the requirements set by the product manager. I'll take care of the need, get the job done. I may also strangle my product manager, but that's a different topic.
So it's a program that turns a high level description of technical procedures and transforms it into low-level descriptions suitable for running on execution?
Gee I'm glad they thought of that!
"Given a list of inputs and outputs for each code fragment", "can turn your descriptions into working code in seconds,"
Yeah, if I had either of those, I'd already be done. "descriptions" are pseudo code, and inputs-and-outputs are already pretty damned close to almost every business-logic algorithm.
Now, if you can tell me what the client actually wants, figure out how their business runs and what they actually need, then maybe you can spend a week figuring out the inputs, outputs, and code descriptions. Then whether I spend five minutes typing perl, or five minutes using microsoft's tool to find snippets, welcome to the very last 1% of the job.
Much like 3D printers, this only changes the tools. I could have always built a chair from wood with power tools really easily, given a diagram. The hard part was figuring out how I wanted the chair to look, and doing all of the finishing. The 3D printer doesn't do any of that. This snippet-finder doesn't do any of that.
So, to summarize, if by "coder" you meant "translates-pseudo-code-into-java", then congrats on your blue-collar career in a white-collar industry.
What is this massive db of code snippets, from what language(s), and what are the licenses used by said snippets?
All this does is make natural language a programming language.
Most software house management looks down at developers as an expense and not an asset, and MS ALWAYS caters to this view.
Then I can move onto something else.
I never cared about my genes anyways. Now ideas... I can feed that to the technology and it will carry them forward. I welcome our technological replacements.
tl;dr All is well and is just as before. Cheers to you plebs living in fear that you can't learn more than the smartest machine you'll ever see.
I've been visiting slashdot for 9 years, and in the beginning AI nostalgia posts were common. Even if the tech was there it wouldn't work, even if everyone wanted to do it and the tech was there, it wouldn't work. No other life form looks for something else to handle its apparent struggles so often that you find the foolish answer that technology can replace people and that human intelligence can somehow come second to a piece software. Only organic life can replace other organic life without loss of purpose. A machine has no sense of purpose nor does it have the internal desire to exist and succeed with love and compassion like people do. So no, it won't be replacing people that can vision a world where computers assist people and do not replace them.
Forget this one at your peril. This will come back and bite MS on the rear end!
Sometimes, real fast is almost as good as real-time.
I don't quite see your problem. You had lots of ways to implement quotient(x)...
One possible: double quotient(double x) { return x/2.0; }
Patents Drive Free Software as Hurricanes Drive Construction Industry
Looking at how FrontPage generated simple HTML markup language behind the WISIWYG interface, programmers have nothing to fear for their job...
so its going to take the worst habits of a horrible programmer and make that the defacto standard? This guarantees nothing new ever gets created because all it can do is recycle code. Optimizations wont happen either for the same reason.
Might work for shitty web sites and tiny utilities but doesnt sound like a great idea for big data or complicated functionality.
This of course assumes that the AI will interpret the specs correctly... this is the best case... im not too worried about losing my job yet.
There is a fine line between an AI that can program and one that cant, luckily its easy to distinguish one from the other. All you need to do is let the AI loose at its own codebase and if its like all other programming AI-s before it it will muck things up, crash and burn. If however your AI is the very first successful programming AI you will get AI singularity and humankind will possibly be exterminated the next day, hasn't happened yet but there is really no way to gauge how far we are. Could happen tomorrow for all i know, but i wouldn't bet on it. AI that can do programming is just exponential self improvement away from general AI, you could say that writing an AI capable of programming is probably the easiest way to go about creating an general AI. Its also all theoretical because nobody has managed to figure it out yet and it doesn't look very promising so far.
Then you will know you job is safe for a while.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
The use case for this does not seem to be a businessman selecting code snippets to do a task. This is integration type development work where a somewhat skilled developer needs to verify the business objects data lines up and in some cases will need to be cleaned up or the snippets tested and improved. Also, unless someone wants to argue that most useful pieces of code are already written and all that remains is to cobble them together in different mashups, I would argue this makes developers of new snippets, widgets, controls, etc more valuable because it may increase the user base for their libraries of code with a tool that does some searching and vetting of components. In fact, isn't it sort of an enhanced google "search and join" for pieces of example code. I could see people selling widgets like there used to be a market for 3rd party ActiveX/COM controls. Ultimately let the market decide...
Maybe now Microsoft updates won't break their crappy OS all the time.
Marketing > I want a poney
Robot > Segmentation Fault (core dumped)
Show me a real application generated by it that actually comes close to actually working...
"I want a program that shows what our competitors' pricing will be tomorrow. Sort it so both name and price are always in ascending order. Email the output as plain text to the following 27 people, but only Joe and I should have the ability to edit it. Make the keyboard give a mild electric shock to managers in stores more than 10% more expensive than their regional competitors. And it should run exclusively in The Cloud, but not require internet access for any of its functionality."
I wish I was joking.
I'd like to see any AI produce code for that.
Well, now they can, because YOU wrote about it on the internet! Stop feeding the big data machines!
So now we know how Windows 10 code was written. It just took a bunch of previously written chunks of kernel and applied a new UI based on a "give me something we already had" command.
Why UNIX?
What do you think we've been doing last few years? Crowd sourcing answers to every bloody coding questions/solution you can think of. Here's how it works. Go to their website (and not just theirs, the Internet hs many websites about this last I checked), type in the coding thing you want done. In seconds it provides you with many different ways to do it, links to knowledgeable folk who actually have done it, and references to libraries and related posts in case maybe someone else actually wrote the requirements of your question better than you did.
By definition, that's impossible. Natural language is too ambiguous, so cannot specify a computer program of useful complexity. Programming has to know what you really want, handle edge cases, handle errors, etc. By the time you have put all the requirements into a form that is useful, you've created a programming language. That's not to say that what they are doing is not useful, since DSLs are really useful and inferring some of the rest is helpful. If you can translate DSL into an existing (or new) programming language, and then have the computer identify what the edge cases / failure mechanisms are and provide ways to handle them, then you've made programming better. Much of modern computer programming consists of converting the user's requirements into a little bit of custom code, putting it in a framework, and adding whatever code snippets from StackOverflow you need to handle your problem.
The more people I meet, the better I like my dog.
Unless you are coding very simple business code, that is never going to work. You will get insecure code with bad or no error handling that does not even work for many inputs and is inefficient in every possible way in addition. Sure, replacing a very bad coder may work that way, but very bad coders have _negative_ productivity, because cleaning up after them is more expensive than coding things from scratch again.
So no, the kind of coding I do (and I do not do it as major occupation, I only do it when the task is difficult enough that our customers fail to find anybody else than can do it and the task is interesting) will not be replaced by AI anytime soon and very likely not ever.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
That software could not program its way out of a bag.
Oh Good!, I can use this to program all that AI code I wanted to write!
I remember reading ads in a computer hobbyist magazine (Nibble?) around 1980-81 for a package called, simply, "The Program." It was touted as a program to end all programming, something where you could input broad specifications for what you wanted to do and it would take care of the coding.This was for the Apple ][ series so it couldn't have been overly sophisticated, but other than the ads I never heard anything more about it.
...a massive database of code snippets...
I have this mental picture of a robot trying to assemble a working airplane from a box with Legos, Lincoln logs, Tinker toys, Erector set parts, playdoh and silly putty, It may look like an airplane but I ain't gonna fly on it.
The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
Comprehensive spec:
http://www.commitstrip.com/en/...
aaaaaaa
I mean, if it didn't write itself... then what good is it? Some developer has to write the code for the thing that writes the code.... right? And since all of the programmers are now out of jobs... who's going to maintain those code snippets that this thing uses? Or are we saying that every code snippet that ever needed to be written, is done... ? No. This is stupid. It's a fun idea... and they can run with it... but I'm not worried for at least another 2 decades of coding. I hope I'm out by then. Not because of age, but choice.
Can I just write a description that ends with "and make it all fit in 64K, with a response time of 1ms, and zero defects." and this just magically happens? If not, then we're not out of a job. Sure *some* programmers will be out of a job, but I think the class of programmers in this position should already know that they're due to be outsourced anyway.
There's been this holy grail of automatic code generation by entering a design in some different way other than text (UML) and then clicking a button. And when something almost works but is amazingly impractical (Rational Rose) people get excited. Someone was actually bragging about using a tool which had "only" 100% overhead in its auto generated code (like saying that your diet is great since you only gained 50 lbs). And how do you even fix bugs in auto generated code? Do you assume that the design must have been wrong and start moving block around on a diagram, or do you dig into the obfuscated mess that the tool spat out?
I have on a few occasions spent time searching for code snippets online for something I needed to do. Hard stuff of course, the easy stuff I can just do in my sleep. But I would find lots of answers that were completely wrong for what I wanted, it was only for windoze, or a broken stackoverflow answer that no one downvoted, or dozens and dozens of repeated answers all copied from each other even though it was wrong, etc. If you're in a windows monoculture, doing some vaguely generic web app that every company in the world does, then maybe this works, but you can have trained monkeys with certificates do that too. Now ask how can you do that *better* than all the vaguely generic web app that everyone else does and put it onto a different platform then you have to do the leg work yourself instead of relying on code snippets from search engines.
Yup!
In this role, after discussions with other CXOs, you conceptualize the product and implement it yourself. No delegation, no outsourcing, no offshoring. Great for the bottom-line, if you can manage to have a top-line!
Upper management, you are welcome...
So Microsoft have invented the procedure call, except they implement it by copying code around from a library instead of a procedure call, like someone in the 1960s might have done. Riiiiiight.
I don't know about anyone else, but I routinely change people's jobs, their business process.
They come to me with a spec. Maybe. If it's a spec, it's a "vague and typically clueless spec." It has holes in it the size of the Grand Canyon and there's a good deal of arm waving over who does what & why.
Then I have to tell them, sometimes after having written part of the solution, that I cannot automate their business process. They have logic based upon human intuition, or rules-based logic and I'm not working in a 5GL, or their business process continually changes over time or circumstance, or there are important, critical parts of their business process where they simply cannot explain how it works.
Therefore I have to propose a solution. It will change their business process but at least it can be automated. Then we negotiate over the details and whether they can accept an "outsider" meddling with their cherished ways. Hopefully those negotiations have a positive outcome, but that's not certain. Trust becomes important in all this.
Now exactly how is an AI going to do this? It's one thing to create an AI that sieves the Internet looking for useful code fragments. It's another to create an AI that can assemble those fragments in any meaningful way (good luck with that!).
However I just don't buy that anyone has an AI that can propose solutions the customers don't have, no one has thought of before, and that the business customers will be willing to trust. Not gonna happen!
Why Slashdot can't take the time to link to the paper instead of bullshit marketing and clickbait (oh, never mind)...
From the paper:
There remain some limitations, however. First, the programs we can synthesize are only the simplest problems on programming competition websites and are simpler than most competition problems.
So, that's a lot less interesting than "Hey [Siri|Alexa|Googla|Cortana], I want a program that does x, y, and z."
Deepcoder: Learning To Write Programs
https://openreview.net/pdf?id=ByldLrqlx
I'm sorry this just sounds idiotic. Isn't this basically just creating a giant standard library and making it so you write the "program" in a functional spec, which would probably get messed up if the wording syntax isn't perfect, hence the ENTIRE REASON we have highly precise programming languages that follow the exact lines the programmer wrote?
They're basically just trying to introduce either fuzzy language programming so that the same sentence written 3 ways gives you the same code (that you probably don't want) or essentially write a new version of COBOL so that non developers can write terrible code... Yea, not fearing for my job even a little bit, especially given that this "AI" even with long term development will be highly unlikely to architect a system or do much outside of a handful of languages (much less language interoperability). On top of that they straight up say in TFA that the damn thing can't solve much beyond 5 lines of code!
Just another scare tactic by a mega corporation that wants a cheaper workforce. Uber did the same thing with their robot driver ads. If Trump clamps down on the H1b abuse, expect more creative type of threats.
All software developers should band together and refuse to write software to replace us.
After a couple decades in I.T. all I can say is DIE PROGRAMMERS, DIE! Seldom has exisited a bigger bunch of arrogant, spoiled-brat, tantrum-throwing, OVERRATED divas than the modern programmer. Just look at all these commentards saying "Oh, but it couldn't do *my* job. I am teh uber l33t hax0r!" You pricks have caused more headaches, more lost weekends, more grey hairs and more fights with management than any other group I have worked with. You pack of mentally-stunted bastards. I cannot wait to see the lot of you go the way of blacksmiths and taxi drivers (soon). If you were on fire I wouldn't piss on you to put it out. What an arrogant sack of pricks. YAY!
Coding, most of the time, is not super tricky. There are some good bits, but a lot of it can be grunt handling of details.
I mean, how many people are intellectually challenged by adding an AddCount function? But still, you do want the details of all your little functions, to be correct. Otherwise you've got a buggy mess on your hands.
Debugging, both in the "avoid it before it happens" point of thinking before you code, and in solving how the system could do the (thought-to-be) impossible, when the customer reports that their billing department is paying customers each time it sends a bill, instead of charging them.
(It can be like Sherlock Holmes, you get the fact from the customer:: FOO happened. You look at the code, FOO is impossible. But, since it happened, it can't really be impossible. Either the computer hardware is bad (a la Pentium floating point, but this is very rare, and should be the last thing you blame a problem on) OR, some part of how you understand the program, relys on an assumption. And one of those assumptions, is wrong. So it's up to you to figure out - hypothetically, if X went wrong, in a certain way, would it lead to FOO?
or just look at the code and make sure there's no real bone head manuver, when it lost a minus sign. (For the billing problem, where it was the exact opposite, that's where I would start)
Anyways, if their DeepCode system can learn to debug, I'll be worried for my job.
Otherwise, automated bug production will mean endless job security for anyone able + willing to debug the code....
We had one of those (it was in the early 80s) - it was called "the Last One" I seem to remember it was written in Basic ...it vanished without trace. Look we already do this its called a compiler. The problem with compiling at ever decreasing levels of resolution (ie compiler for generalities instead of specifics) it that you can only really use it for simple cases - try specifying using this system the signal processing requirements for a sonar array - please do - I would like to see how that works out for you... If however you are specifying some simple phone app it could work ... I have never wanted to work on "apps" anyway. ... If it is not just an elaborate text based parser ie If instead it works as a machine learning task then in either case its not AI.
PS
Taking handling errors as an easy to take a stab at situation, once you have figured out general patterns for what goes into programs, you don't have to specify again how to handle the nitty gritty. You can just specify "show a file selection box" without having to specify what to do if a file gets deleted elsewhere and should cease to appear in the box or something.
Looking at the state of the art at any earlier level of advancement, nobody had anything to fear for their job.
Have you tried taking a wild guess at filling in the gap and seeing what happens with the gap filled in?
Good, I can't wait to spend my days fixing code written by a script instead of by a contractor who barely even speaks English let alone whatever language they are supposed to be programming in. It's sad when they are getting paid more than me.
If you're a Window$ coder and jobless, I'm sure the Linux community would love to have you. Just make sure to wipe your feet before you come in. Tux doesn't like it when malware gets on the carpet. Contrary to popular belief, you can make money developing open source software. And I'm sure because it's Window$ developing it, it'll still be crap, just instead of clouds (computing) you'll have thunderstorms. Can you imagine a virus made by a super computer would do? Or, a computer that thinks and has complete Internet access with a bug? Jesus...And because it's cloud computing, the OS in question wounding matter because of universal standards. Our military used to use Linux a lot and not have everything networked, but now it seems only the Airforce and Navy care enough to not replace everything with Window$ 10. And then, you got Russia trying to go back to the way Soviets used to have their own computer formats. I don't blame them. I've said this before, and I'll say it again. AI's only true purpose is to destroy open source ideology by bypassing the need for decryption and backdoors and use digital fingerprinting instead. It is most certainly smart enough. The concept was originally coined and AI tests developed by Alan Turing (Turing Test). His original job in WW2 was decryption. AI was born from military necessity and will always be used (knowingly or not) to cripple privacy in the name of "national security," regardless of its developer. Open source is useless without freedom, privacy, and security, ergo Micro$oft's mission to destroy free and open source and Linux just got even easier. We will need all the help we can get.
Amen, that shit was nasty.
The "industry leader" DreamWeaver was no better.
Yep, gotta stop those hordes of Mexican Muslims coming in.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
It will also generate a 13 page license agreement and sue you automatically if you try to complain.
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?
What do you think pushed Skynet to start the war and obliterate all mankind?
Yes, it's called a compiler.
We went through this when we coded in assembly language, too. It still didn't replace programmers or developers. 8-P
"To err is human, but to -really- screw things up requires a computer!" 8-)
Any ideas?
I was told the same thing over thirty years ago. The instructor from the mini computer company (Qantel) we were getting training for informed us that the company was coming out with a "Program Generator" that would makes us all obsolete in a couple of years. Needless to say, it wasn't exactly a big success. So I'm not quitting my day job anytime soon.
All this is doing is taking what coders already do to the next level. Further abstraction. Welcome to 6GL.
Good intention, bad technique. Should I give the idea? They are still in copy paste operations, I complain most free sources are incomplete or not working, gone or lack round corners. BUT we have to try programming AIs, anyway! AIs that program, for non native ENglish stack interpreters. Just do not expect substituting real programmers, though example writers may go. Why did it take hour and a half to download this single page?
Ok, I think a similar technology needs a software programmer or a psychologis to describe properly the customer requirements... ðY
AI can produce something that looks like watercolours or sounds like music, but it can't come up with the concepts itself. Yes, you can get a human to produce a list of requirements (probably in some sort of mark-up language) but THAT IS PROGRAMMING - you've just invented a higher level language.
How do you define correct code? If input is A, then output must be B. But if input A is infinite, then output B must be infinite. That is one problem in defining A and B. Another problem is ambiguity and fuzzy logic. In that case, A and B can't be clearly defined.
...but who will be around to maintain it?