16 ms·
Automating programming: AI is transforming the coding of computer programs
- ollien 5y agoI can't read past the fold here (paywall), but assuming this is about Copilot, it feels a bit disingenuous to suggest it's already "transforming" software development. It's a cool tool, but it's not even available to everyone.
- sitkack 5y agoJudging from the turmoil both here and on twitter about Copilot, it has already made a huge impact. Two more papers down the line.
- ollien 5y agoImpact? Sure. Especially given the controversy around how it's trained. I just don't know that I'd suggest it's changed software development as we know it.
- cjg 5y agohttps://archive.is/bTkFX https://archive.is/bTkFX
- ollien 5y agoThanks for the link! The article feels a lot closer than the headline/first two paragraphs to what I actually see going on.
- ok2938 5y agoOne thing to keep in mind: With every request-response cycle for the probably upcoming paid service, you are feeding constant data points to a commercial entity. Basically your typing habit, the project development over time, the bugs, the fixes, all will be recorded. Think about it, one well paid profession in the grips of capital siphoning off valuable, highly intellectual work (by using "open source" already), repackaging it and the selling it back to the people it aims to replace. Imagine a million lawyers' days being recorded in 60s intervals - including what they type, the files they have opened, etc. - how long would it take to encode the average lawyer into a hdf5 file? How many lawyers would be fine with that kind of assistance? If that's not ingenious, then I do not know what is. Call to action: Programmer, wake up. Edit: Just to address some typical rebuttals - I'm all for progress and cool toys, but I'm all against monopolies and mega-corps that control and monitor every aspect of your life.
- i_haz_rabies 5y agoProgrammers have the worst intelligence to gullibility ratios of any profession. * I should elaborate. We tend to easily accept the "this work is meaningful" line, we volunteer our time because "programming is a craft," and we will hop on tooling bandwagons like this because it's shiny and new without considering the ramifications.
- loopz 5y agoThis will sell like hot cookies. The only thing that can destroy it will be the immense cargo-culting. So software developers are safe, for now.
- i_haz_rabies 5y agoI fear the "for now" is shorter than we think.
- qayxc 5y agoI don't. This isn't the first time. First it was accessible programming languages (BASIC, Pascal, etc. ~1970s/80s), then it was standard software (spreadsheet software, ERM packages, etc. 1990s), then low code/no code (early 2000s), then model-/requirement driven (Rational Rose etc., late 90s, early 2000s), in between it was visual "programming" every now and again, now it's back to low code/no code again. As long as the mechanical systems cannot test requirements for contradictions, don't accept non-functional requirements such as performance or security and produce non-correctness proven results that even fail to compile or are syntactically incorrect from time to time, I have no fears. The current situation might as well be a local optimum in which NLP/ML will be stuck for quite a while. It's really hard to tell, but I don't see any reason for starting to panic just yet.
- Jeff_Brown 5y agoI've read three definitions of "cargo cult" and still don't know what it or your reference to it mean.
- loloquwowndueo 5y agohttps://outline.com/bFWAyk https://outline.com/bFWAyk It is about copilot (which it sneakily doesn’t mention by name) and tabnine and also generally about gpt-3 used in the realm of coding. A lot of layperson-oriented phrasing around: “ Microsoft, an American software giant, released a new version of an AI-completion feature which it embeds in coding software called Visual Studio.”
- js8 5y agoI think Copilot is as helpful to programmers as ELIZA is helpful to psychiatrists. I don't think it really understands code, only very superficially (unlike GPT-3 which might actually genuinely understand parts of language, computer code requires more abstracted mental model). ELIZA was similar, some people also believed that it can understand what they are thinking. Turns out it was all just in our heads.
- qsort 5y agoI'm not even remotely worried for my job security, but I don't think the ELIZA comparison is apt. ELIZA is clearly a toy, Copilot is something that could become integrated with the workflow of a professional developer. Maybe not copilot specifically, but if Intellisense is in our IDEs already, something like it is not a stretch. > I don't think it really understands code It clearly doesn't, but (a) nobody actually claimed that outside of the usual media circus, and (b) that's a very high bar. It doesn't need to understand your code in order to be useful.
- js8 5y agoELIZA wasn't "clearly a toy" when it appeared. It actually confused people. I don't deny that good suggestions are useful in coding. I am just not sure you can get these by mimicking other people's code without really understanding it. I think the reason why code is different than natural language is that in code, the meaning of identifiers (words) is very dependent on the context of the specific codebase, and not nearly as universal as in natural language. Sure, there are words like personal names in natural language that change meaning depending on wider context, but they are not as common in the natural text. So focusing on the names only, rather than for example understanding types of runtime objects/values, and how they change, can be actually actively harmful in trying to understand the code and making good suggestions. So I would believe that suggestions based on e.g. type inference would be more useful. There is another aspect to this, text has inherently low entropy, it's somewhat easy to predict the next symbol. But if code has low entropy (i.e. there are universal patterns that can be applied to any codebase in a particular programming language), I would argue that this is inefficient from the programmer's point of view, because this entropy could probably be abstracted away to a more condensed representation (which could be then intelligently suggested based on semantics rather than syntax). In other words, I think the approach assumes that the probability of the next word, based on syntax, is similar to probability of the next word, based on semantics, but I don't believe that's the case in programming languages.
- pydry 5y ago>The software engineers of tomorrow will themselves be software Is it me or is the Economist much more unabashed these days about representing the fevered dreams of business elites? (as opposed to engineers who know wtf theyre talking about) This copilot circus reminds me of a restaurant I used to go to went to shit in ~2015 because the owner thought giving iPads to customers meant they could cut payroll by 20%. Which was very much in vogue at the time: http://images.gawker.com/itqtvwbe3c0skb99wirm/c_scale,fl_progressive,q_80,w_800.jpg http://images.gawker.com/itqtvwbe3c0skb99wirm/c_scale,fl_pro...
- gruez 5y ago>This copilot circus reminds me of when a restaurant I used to go to went to shit in ~2015 because the owner thought giving iPads to customers meant they could cut payroll by 20%. What went wrong? At some fast food places the ordering machines definitely displaced some of the cashiers. I'm surprised customers wouldn't go for tablets if it meant they didn't have to pay the 15% tip.
- pydry 5y agoOrders took forever or got lost, etc. The servers looked stressed as hell and were running everywhere. The prices werent any lower they just had fewer staff. Presumably the owner thought they could collect higher profits.
- rootusrootus 5y agoAt least in my experience, what went wrong is that ordering machines didn't really improve the experience. Maybe compared to a bad cashier they're preferable. But other than that, they are much slower and less convenient than just telling another human what you want. To use a fast food example, I somewhat regularly go to a McDonalds when we road trip (I have kids, don't shame me) and they have ordering screens. It takes easily 5x as long to answer all of it's questions about permutations on the meal I want than to just say "gimme a #2 with Dr Pepper, no pickles" to a cashier. Maybe if they put in a proper voice assistant it would be better. But the touchscreen is not in any way a superior experience.
- primaryobjects 5y agoInteresting timing, as tomorrow I will be presenting on this very topic. "AI programmer: autonomously creating software programs using genetic algorithms" https://dl.acm.org/doi/10.1145/3449726.3463125 https://dl.acm.org/doi/10.1145/3449726.3463125
- neatze 5y agoSo awesome!, rip my weekend plans, I have done similar thing for fun using python and modifying class dictionary (half working), more in scope of multi-objective optimization.
- AnimalMuppet 5y agoInteresting. Would you mind telling me what the largest (in lines of code) working program it has created is?
- primaryobjects 5y agoOne of the largest programs generated had consisted of about 300 instructions. This particular program included if/then conditionals, counting down in a loop, concatenation of a numeric value with text, and displaying output. The system also attempts to optimize the number of programming instructions executed, in which case complexity can actually be considered based upon the resulting behavior, rather than LOC.
- AnimalMuppet 5y agoThat's... decent. It's a lot larger than I ever got with a GA. I don't think we're ever going to get a GA to produce an air-traffic control system, or a database, or an OS. But 300 lines (that work) is further than I was aware had been possible. (When I said "decent" in the first paragraph, that sounds like I'm damning it with faint praise. And I kind of am. But I am doing so in light of the Linux kernel, which is something like 100 million lines. I am not doing so to minimize this as an achievement within the world of GA-generated code. I'm just saying that we're a ways from being able to handle most real-world problems with GA-generated code.)
- awaythrowact 5y agoDid PyTorch increase or decrease demand for ML developers? Did Ruby on Rails increase or decrease demand for web developers? Did C increase or decrease demand for systems programmers? Automation and abstraction is a complement, not a substitute. If CoPilot works and we get to focus on higher level goals and developer throughout increases, it will be good for developers and good for the world. I hope CoPilot succeeds.
- sly010 5y agoAI has an issue that AI assistants tends towards mediocrity. In the mid-term this is great for sub-mediocre AI users who seemingly get a boost in performance/quality, etc, but people tend to not recognize that in the long term there is a dangerous feedback loop. AI models just regurgitate their training, pretending it's state of the art. Every now and then people bring up the fact that relevant long tail Google results are no more. Every time we click through on the first page, we are collectively training google to be mediocre and in exchange it's training us to be the same. We had the same debate around criminal profiling, insurance, credit ratings, automated censorship, even 'art'. Programming won't be that different. It will be even useful in a limited sense. AI will give a lot of mediocre results for mediocre questions and the wrong answer for 'new' questions, but we won't know which one is which. But remember that in the long term we are feeding the outcome back to the models, so it's not real progress, it's just a proliferation of "meh".
- warkdarrior 5y ago> AI has an issue that AI assistants tends towards mediocrity. Actually humans have an issue here, since the majority of humans are mediocre at what they do (Bell curve and all that). Thus AI assistants threaten to replace the majority of humans.
- neonate 5y agohttps://archive.is/bTkFX https://archive.is/bTkFX
- feoren 5y agoCopilot appeals to bad developers, which it's going to learn from. It's been trained on a codebase that is mostly bad and/or outdated. It will produce code that is usually bad and the bad programmer using won't properly review and fix it, so it will never learn how bad it is. If copilot replaces anything, it will be the legion of failed developers that end up working for Oracle and Comcast currently doing god-knows-what with all their time. Those systems are already giant festering mounds of technical debt; imagine how bad it will get when literally no human has ever seen the code producing that weird bug.
- hkt 5y agoIn all likelihood, it'll be much the same as when literally only one human has ever seen the code producing that weird bug...
- salawat 5y agoMy dream in life is to work myself out of a job. To take a bunch of the hard frustrating stuff out of things, the next guy doesn't have to suffer through solving the same problems. With programming, solutions aren't physically quantized except in the sense sufficiently skilled person hasn't run into an articulation of problem and solution they can actually understand yet. Programmers aren't an odd bunch. We just like writing encyclopedias that people can read, understand, and build off of so someone can find something cool to do with it. There's just a point where as system appreciating people, we can see where our own work is obviated or worked against if you just toss it at a machine that mangled it in such a way where the underlying ideas and knowledge is lost.
- oliv__ 5y agoWell, great maybe the AI can create and run a few more successful SaaS businesses for me
- ausbah 5y agoco-pilot seems great at automatically writing boilerplate code, but iffy at doing anything novel - like most supervised learning systems
- YeGoblynQueenne 5y agoThis article of course presents automatic programming as if it's a brand new thing that is only now possible to do thanks to "AI", but that is only how companies that sell the technology find it convenient to present things to market their products. The thing to keep in mind is that program synthesis is an old field and a lot of progress has been made that is completely ignored by the article. Of course most people haven't even heard of "program synthesis" in the first place, simply because it is not as much hyped as GPT-3 and friends. From my point of view (my field of study is basically program synthesis for logic programs) code generation with large language models is not really comparable to what can be achieved with traditional program synthesis approaches. The main advance seems to be in the extent to which a natural language (i.e. English) specification can be used, but natural language specifications are inherently limited because of the ambiguity of natural language. Additionally, trying to generate new code by modelling old code has the obvious limitation that no genuinely new code can be generated. If you ask a language model to generate code it doesn't know how to generate - you'll only get back garbage. Because it has no way to discover code it doesn't already know how to write. So Copilot, for example, looks like it will make a fine boilerplate generator - and I'm less skeptical about its utility than most posters here (maybe partly because I'm not worried my work will be automated) but that's all that should be expected of it.
- montenegrohugo 5y agoHmmm. A few points. First, I've never heard of program synthesis, and it seems like an interesting topic. Could you point me to some resources so I can learn more about it? Second. I take issue with this statement: > "trying to generate new code by modelling old code has the obvious limitation that no genuinely new code can be generated" I disagree. We've seen GAN's generate genuinely new artwork, we've seen music synthesizers do the same. We've also seen GPT-3 and other generative text engines create genuinely interesting and innovative content. AI dungeon comes to mind. Sure, it's in one way or another based on it's training data. But that's what humans do too. Our level of abstraction is just higher, and we're able to generate more "distinct" music/code/songs based on our own training data. But that may not hold in the long term, and it also doesn't mean that current AI models can do nothing but regurgitate. They can generate new, genuinely interesting content and connections.
- distribot 5y agoUnrelated but Israel is so cool in terms of technological prowess. A nation of 9 million people and almost every article about cutting edge tech includes them. Really remarkable imo
- Animats 5y agoWe may get automated programming, but not by the GPT-3 route. GPT-3 is a generator for moderately convincing meaningless blithering. It says something about the nature of discourse that GPT-3 is better than many pundits. Here's a GPT-3 generated manual for a "flux capacitor".[1] It's a fun read, but meaningless. When the output text needs to integrate a collection of hard facts, GPT-3 is not helpful. [1] https://archive.is/lQFHC https://archive.is/lQFHC
- minimaxir 5y agoIn the context of code generation, coding typically follows patterns, which GPT/Transformers is very, very good at identifying.
- xaduha 5y agoWake me up when it starts deleting bad code instead of producing more of it.
- distribot 5y agoI think some of us have our head in the sand about how disruptive this will be to software engineering as an industry. I find the applied stats-yness of ML really boring, but I also want to hedge against some of these companies creating run away hits that make my current job obsolete.
- throwawaygh 5y agoIf you're writing the sort of code copilot generates, you should be more worried about things like wix.com, RPA products, WordPress, or high school kids. (No hate, my summer job in high school was PHP CRUD stuff, but it's definitely the burger flipping of the software development world.)
- distribot 5y agoIs there any reason to think there's a ceiling on these types of products or a big distinction between different types of engineering? I understand there will still be software engineers to validate, supervise, etc. But what if every team of 10 people today can be reduced to 3? What will that do to the industry? I have two FANG companies on my resume, so I'm pretty confident that if there were a decimation I'd survive, but I think life would be very different.
- throwawaygh 5y ago> But what if every team of 10 people today can be reduced to 3? This article uses the phrase "Automating Programming", but that phrase is not new. The term "Automatic Programming" was coined in 1958 by John Backus, and he was referring to his FORTRAN compiler. Think about the tens of billions of humans who could have been employed writing Assembly over the past half century if we hadn't invented high-level programming languages. What happens to programmers? They move up the abstraction ladder and tackle bigger problems, faster. Some people get left behind, sure. But then, ask the operators of punchcard machines how life is going. So maybe the "learn Python+HTML+JS in six months and become employable" status quo evaporates. But for at least another century there will always plenty of work for clever problem solvers who know how to tell computers to do things. (FWIW, I'm not a programmer and haven't been employed as one since I was in school as an undergraduate, but I do I employ/manage a fair amount of people who program.)
- ChrisMarshallNY 5y agoThe thing that so many folks seem to forget about programming, is that the most problematic part of the whole thing is the Requirements Phase. That's where the most serious problems occur, and they are often in the form of ticking time bombs that explode while the project is well underway. A good implementation team knows how to stop assuming, and get more information from the requirements authors. No matter how "smart" the implementation process is, we have the principle of "GIGO" (Garbage In; Garbage Out). Automated implementation has the potential to be a garbage multiplier. There will always be a need for highly specific, accurate and detailed specifications. If a machine does the work, and makes assumptions, then that means the input needs to be of even higher quality than we see nowadays (See "GIGO," above). I see the evolution of "Requirement Specification Languages," which, I suspect, will look an awful lot like code.
- deleted 5y ago[deleted]
- rjsw 5y agoWe could feed CAD files into the same engine and get ... the 737 MAX.
- WFHRenaissance 5y agoGitHub Copilot arrives from the future. Nothing human makes it out of the near-future. It's probably already too late to mount a meaningful counter-revolution. The average software engineer's status and usefulness are eroding faster than ever. There's almost nothing you can do. If you're above average, I suggest you try to start a business or con a VC before this thing blows. If you're below average... good luck, and I mean that in the most sincere way. It's possible that a career pivot is your best bet. Eastern European devs were coming for your jobs anyways, but we just took a leap instead of a step with Copilot. Sure this is a bit exaggerated, but to be clear... in this matter, the truth is that we haven’t seen anything yet.
- DantesKite 5y agoSam Altman made the interesting observation that people who program might lose their jobs faster than people who move things around physically. Which is funny when you think about it, but it does seem like it's headed in that direction.
- WFHRenaissance 5y agoI think a majority of Web jobs will be automated before most "trade" workers are automated. It just makes sense. The nature of Web work itself sort of self-documents the interfaces one would need to hand to a non-technical. Trade work on the other hand is dangerous, extremely context specific, and can't be done entirely from a datacenter.
- ausbah 5y agothis is really exaggerated and really really pretentious jesus coding is only a fraction of SWEing, sure Copilot writes some code for you - but can it work with stakeholders, manage the complexity of a complicated code base, or any other part of a engineer's job
- WFHRenaissance 5y agoGathering requirements will be the product manager's job. Implementation will be the job of the top fraction of our field. Complexity can be managed by a team of humans a fraction of the size of your current team. If you're a competent engineer, you have a better future ahead of you but if you're doing routine work or templating boilerplate... it's almost over for you.
- ipaddr 5y agoIs sharing anything on github dead now? Should it be?
- yudlejoza 5y agoWhat a compiler does used to be called automatic programming in the 1960s.
- lwhi 5y agoDesign comes first. Implementation follows design. I can't imagine machine 'intelligence' carrying out the former any time soon. When it does, we're done for anyway.
- nsoonhui 5y ago>The purpose of all this ( Intellicode), of course, is to save time. Just wonder, how much does Intellicode actually save? Anyone has any experience? My own take is that the saving probably isn't going to be significant, and will never be so. Because the bottleneck of programming is never caused by the speed of typing, but by the speed of thinking.
- cdrini 5y agoI don't know if there are any studies on this. Personally it saves me a ton of time and mental energy. I don't have to remember the folder hierarchy when importing a function; I just reference it, ctrl+. (or whatever in your editor), and it autoimports. I don't have to remember or check whether it's SVG or Svg in this variable name. I don't have to remember what the fields of this parameter are, and so on. I don't get it wrong, build the thing, try it out, get a runtime error, and have to go back to square one to fix it. I think intellisence is useful specifically because it lets me stay in the realm of thinking about the problem/code, and avoid having to context switch to manage the details/minutia of coding.
- nsoonhui 5y agoAre we talking about the same thing? You seem to be talking about intellisense ( which is there for ages in visual studio) and I am talking about intellicode, which was launched as recent as 2 years ago.
- cdrini 5y agoMy apologies! I misread and thought you'd written intellisence. I thought you were talking about the realm of autocompleting tools in general. My bad!
- quantum_state 5y agoAs programming is theory building, do we seriously believe GPT3 can create quality code?
- buitreVirtual 5y agoWhile articles like this are just driven by hype and a lack of understanding, we know that a human can code spectacularly well, so in theory this same ability could be achieved or even surpassed by a true AI. I say "true AI" to distinguish that ideal from today's AIs which are great at some narrow, analytical problems but don't even come close to humans at synthesis. So while we can dismiss 95% of today's AI marketing as bullcrap, we cannot dismiss either the possibility, no matter how distant, that they could really create software.
- discordance 5y agoPeople seem to be really worried about the copyright aspect, but I don't see how that can't just addressed as a build step or a linting step. Kind of like Turnitin, but for code. It would check similarity, and check the licence of the similar code.
- JasonBlack555 5y agoWe've been here before ! In the 1980s there was a program called "The Last One" that was supposed to be the last program written by a human. I sometimes wonder what happened to it.