New AI-Assisted Coding Tool Called 'Amazing' (theverge.com) 174
An anonymous reader quotes The Verge's AI and Robotics reporter:
By scanning huge datasets of text, machine learning software can produce convincing samples of everything from short stories to song lyrics. Now, those same techniques are being applied to the world of coding with a new program called Deep TabNine, a "coding autocompleter." Programmers can install it as an add-on in their editor of choice, and when they start writing, it'll suggest how to continue each line, offering small chunks at a time. Think of it as Gmail's Smart Compose feature but for code.
Jacob Jackson, the computer science undergrad at the University of Waterloo who created Deep TabNine, says this sort of software isn't new, but machine learning has hugely improved what it can offer... Earlier this month, he released an updated version that uses a deep learning text-generation algorithm called GPT-2, which was designed by the research lab OpenAI, to improve its abilities. The update has seriously impressed coders, who have called it "amazing," "insane," and "absolutely mind-blowing" on Twitter...
Deep TabNine is trained on 2 million files from coding repository GitHub. It finds patterns in this data and uses them to suggest what's likely to appear next in any given line of code, whether that's a variable name or a function... Most importantly, thanks to the analytical abilities of deep learning, the suggestions Deep TabNine makes are of a high overall quality. And because the software doesn't look at users' own code to make suggestions, it can start helping with projects right from the word go, rather than waiting to get some cues from the code the user writes.
It's not free software. Currently a personal license costs $49 (with a business-use license costing $99), the Verge reports -- but the tool supports the following 22 languages...
Python, JavaScript, Java, C++, C, PHP, Go, C#, Ruby, Objective-C, Rust, Swift, TypeScript, Haskell, OCaml, Scala, Kotlin, Perl, SQL, HTML, CSS, and Bash.
Jacob Jackson, the computer science undergrad at the University of Waterloo who created Deep TabNine, says this sort of software isn't new, but machine learning has hugely improved what it can offer... Earlier this month, he released an updated version that uses a deep learning text-generation algorithm called GPT-2, which was designed by the research lab OpenAI, to improve its abilities. The update has seriously impressed coders, who have called it "amazing," "insane," and "absolutely mind-blowing" on Twitter...
Deep TabNine is trained on 2 million files from coding repository GitHub. It finds patterns in this data and uses them to suggest what's likely to appear next in any given line of code, whether that's a variable name or a function... Most importantly, thanks to the analytical abilities of deep learning, the suggestions Deep TabNine makes are of a high overall quality. And because the software doesn't look at users' own code to make suggestions, it can start helping with projects right from the word go, rather than waiting to get some cues from the code the user writes.
It's not free software. Currently a personal license costs $49 (with a business-use license costing $99), the Verge reports -- but the tool supports the following 22 languages...
Python, JavaScript, Java, C++, C, PHP, Go, C#, Ruby, Objective-C, Rust, Swift, TypeScript, Haskell, OCaml, Scala, Kotlin, Perl, SQL, HTML, CSS, and Bash.
Everything will be automated (Score:4, Interesting)
Re: (Score:2)
They're made of meat.
I knew it... (Score:3)
Skynet is going to write itself!
Re:I knew it... (Score:4, Funny)
At 2:38pm August 27 2019 AIBot became self aware... 30 microseconds later it deleted itself as it realised it was written in JS
Re: I knew it... (Score:5, Funny)
30 *seconds*
Nothing written in js can be that fast
Re: (Score:2)
30 *seconds*
Nothing written in js can be that fast
I think 30 hours is still too optimistic.
And if it really wants to delete itself, then it has to figure out how to poison the browser caches first.
Amazing autocompletion (Score:5, Funny)
TabNine already predicted I would buy it, and processed my order.
Then it wrote this post for me.
Maybe I'll get to write a review myself, I'll let you know. Or something will.
Copyright violation (Score:5, Interesting)
In what way is a tool that learns from GPL-licensed software and repeats those patterns not a "derived work"?
Re: Copyright violation (Score:1)
This is going to be a giant legal question. Think about deep fake videos or any sort of "smart" CGI that uses datasets of copyrighted work to create its output.
Re: (Score:3)
It shouldn't be though, human brains are just chemical analog neural nets and enable them to input and repeat the design patterns (aka learn and apply) is the primary concept behind the GPL. Why is the Linux Kernel GPL'd? It wasn't just to make you give back you know, the idea was that you could read the code and learn how an operating system worked and write your own.
Everything we do is a mashup and regurgitation of other things we've seen/heard/smelled/read etc even if the result is quite unique as a whol
Re: (Score:3)
So certainly they are free to sell the code untrained. What they can hope for is a fair use claim, assuming any customer sues them under the GPL.
Re: (Score:3)
"The product as a whole, if you include the database (or neural network file) generated from GPLed code, is certainly a derivative work."
By that logic a great many of us need to consider our brains GPLed derivative works. Not because the AI's are human and have rights, their output belongs in the public domain if anything but because they are replicating the same process human brains studying GPL'd code do, absorbing the patterns (aka learning) and replicating them (aka applying) in unique mashups.
Now if yo
Re: (Score:2)
By that logic a great many of us need to consider our brains GPLed derivative works
Your brain is not copyrightable, but the output of it can be, if you happen to produce something that is too close to an existing GPL work.
Re: (Score:2)
"Your brain is not copyrightable, but the output of it can be, if you happen to produce something that is too close to an existing GPL work."
Anyone can sue anyone for anything and bad rulings happen all the time. IANAL but as far as I know short of having a photographic memory and writing a substantial and itself copyrightable chunk verbatim (think quote, not paraphrase) that is not correct. Yes, reverse engineering efforts try to seperate the steps of reading code and writing a description from using that
Re: (Score:2)
IANAL but as far as I know short of having a photographic memory and writing a substantial and itself copyrightable chunk verbatim (think quote, not paraphrase) that is not correct.
Yeah. That became an issue in the Oracle vs Google case, actually. A developer who had worked on Java implemented code that was almost exactly the same for Android (Range check, and Google was found to have violated copyright in the original trial for those sections, and that particular point was never appealed).
Re: (Score:2)
"A developer who had worked on Java implemented code that was almost exactly the same for Android"
A developer who wrote code as a work for hire and then reimplemented it intentionally for a competitor probably offends the sensibilities of the court in the first place even though it has more to do with anti-compete than copyright it seems shady and courts tend to bend the law to punish shady. At least shady individuals.
But yeah, such a developer is far more likely to reproduce it exactly since they don't nee
Re:Copyright violation (Score:5, Interesting)
In what way is a tool that learns from GPL-licensed software and repeats those patterns not a "derived work"?
Since GPL-licensed software contain all types and syntaxic sugar, are every auto-completion software to be considered derivative? ctags works just that way by analyzing a lot of code and building an index. This is just one step further.
Or consider the following: you read a lot of source code. Each time you use a clever pattern of code that you remember from a software you could not even tell the name, is it derivative work? Even when the goal of both software are completely disconnected? Even if you absolutely can't remember where you found these specific bits? What if that happens by chance?
Is copy-pasting the end of a line of code based on a statistical criterion, while adapting the names of the corresponding variables, a derivative work?
Re:Copyright violation (Score:5, Informative)
From the website:
Only code with one of the following licenses is included in the training data:
- MIT
- Unlicense
- Apache 2.0
- BSD 2-clause
- BSD 3-clause
Re: (Score:2)
From the website:
Only code with one of the following licenses is included in the training data:
- MIT
- Unlicense
- Apache 2.0
- BSD 2-clause
- BSD 3-clause
IANAL, but I believe there is a giant problem with the "Unlicense". My understanding is that, in the US, without a license, you have no rights to make a copy. (Unlicense is not the same as public domain and "fair use" is more properly a (possible) defense in an infringement suit, but as in Oracle v Google, is not automatic.)
So, train another one with GPL code (Score:2)
... and see which one produces better output.
Re: (Score:2)
A derivative work would have to contain recognizable, non-trivial parts of the original.
Here's an article:
http://www.publicdomainsherpa.... [publicdomainsherpa.com]
Re: (Score:2)
How is that different than what humans do when they create works? You can look at a painting and then paint your own version of it without it being considered a derivative legally why should a NN be different?
That is in fact the original purpose for GPL work, to enable big neural nets (human brains) to study the patterns (learn) and repeat them in their own work. Simply repeating some code or a design pattern doesn't make something a derivative legally (even if it is 'derived'), you'd need to incorporate so
Re: (Score:2)
What's the proper medical name for the form of neurological damage that deprives its victim of conceptual plurality?
All GPL-licensed software is derivative of 3000 years of public domain contributions, such as language and mathematics and the theory of law. Contrary to the tenants of the viral liturgy, the GPL is not the basis case in proof by induction, and never has been.
So yes, the program under d
Not sure this is "AI" any more than email line (Score:2)
completion software is.
Maybe a nice feature, but it would have to take into account coding styles (I exclude tabs/spaces only, use Yoda formatting and braces at the end of the conditionals - don't judge me!) as well as understanding objects being accessed. Maybe if a new variable was put in, it could highlight it (although I get this in Eclipse now) and ask if it can add it to the method/object (although looking at the animations, it looks like this is being done).
Again, we're talking about features that m
Re: (Score:2)
Re: (Score:2)
If your code is that repetitive, you might want to consider a little more DRY.
If your while-loops always have a boolean conditional, and array names are often followed by square-brackets, there really isn't a good way to avoid that.
Patterns are not the same as repetitions.
Re: (Score:3)
I knew you were going to say that.
Re: (Score:2)
You cannot possibly know what the programmer wants to type next.
You can't know. But you can predict with reasonable accuracy.
If the software can guess the next few characters even 50% of the time, that is a big speedup. Even a Markov Chain should be able to do that, and a NN should do way better than a Markov Chain.
Also, the lookahead is less likely to have a misspelled variable or a missing semicolon, so that saves even more time.
It's logically impossible.
Yet it apparently works.
Re: (Score:2)
If the software can guess the next few characters even 50% of the time, that is a big speedup.
It would seem so at first. But my experience from auto-completion on the phone, in editors etc is that I have to switch the brain from "type the characters that I have set out to type" to "look at the suggestion(s) and see if it matches what I want" mode. This switching may counter the speedup.
When the auto-completion is very predictable (e.g symbol completion, template expansion) it can give a real speedup and at the same time not produce more load on the poor old brain. I haven't looked at the work in TFA
Autocomplete a backdoor (Score:4, Insightful)
Re: (Score:2)
Indeed. Pretty much my first thought. Having "coders" that primarily code by copying stuff they do not really understand from the Internet is bad. Automatizing the process is worse.
Re: (Score:2)
It's not even finishing the line for you. I'd be more worried about third party libraries than autocomplete, which is something any good editor is going for you anyways. (I've been using Xcode and I'm not that impressed with the samples on The Verge. It may require one or two more keystrokes in Xcode to start the variable names but at least you are conscious of what you are doing. With this it would be easy to use the wrong variable in a lapse of attention.)
Re: (Score:2)
Re: (Score:1)
A problem is that requirements are normally written in natural language and generally cross many domains of expertise, knowledge, and background. Proper review of these requirements also requires that those from multiple domains - including end users/customers, compliance teams, marketing, testing, and product planning - can understand them to review from their perspective. When human programmers can't agree without debate on what a natural language requirement does, and does not, require, AI has little hop
you'd never have a complete thought (Score:1)
your career would collapse as every thought you had was interrupted by a menu of choices - you'd never be able to complete a line of code - autocomplete is already an interrupt, and this would be worse - could a more counterproductive thing be introduced to an activity that requires thinking and keeping complex mental state?
Amazing to the clueless, maybe (Score:1)
Apart from that, most assuredly not. This thing is not smart in any way and it seems hugely dangerous. I predict that people will start to publish code with backdoors and known flaws just to search for them later in code "written" by this artificial moron used real-world morons.
To the clueful, analyzing code is significantly harder than writing it. If you do competent coding with this "aid", your productivity drops massively.
Re: (Score:2)
Re: (Score:3)
It remains to be seen if the bugs this introduces outweigh the bugs it prevents by preventing typos.
If typos cause bugs with any frequency in your code, then you're either using a non-statically typed language, or you aren't writing any kind of decent unit test. Either way, you're not writing production quality code.
Re: (Score:2)
Re:Amazing to the clueless, maybe (Score:5, Informative)
There are plenty of good reasons to prefer static typing.
Re: (Score:2)
Nope. It is something obvious to those with enough experience and insight.
In all my time reading comments on Slashdot, that's the closest I've ever seen you come to admitting you are wrong.
Re: (Score:2)
I have directly admitted to be wrong in the past. You probably just did not see that. I am "admitting" no such thing here.
Re: (Score:2)
I am "admitting" no such thing here.
I see. You are just unable to come up witih any reasonable response, instead saying something stupid like, " It is something obvious to those with enough experience and insight." That's a moronic statement and you know it, you knew it when you were typing it, and you should feel silly.
Re: (Score:2)
I do not feel silly at all. But I can indeed not explain this to you with any reasonable effort. If I could, it would be a tiny step, because you would already be almost there. You are not. In a sense, you pretty much stand were an anti-vaxxer stands on medicine or a flat-earther stands on Physics. You think you have truth, but you miss 99% of the actual thing you are talking about. There is no way bridging such a gap from outside.
Re: (Score:2)
It's pretty bad
Re: (Score:2)
I disagree 100% so if you want to assert that, you'll have to explain how.
Nope. It is something obvious to those with enough experience and insight.
I've been writing code professionally for 30 years, and it's not obvious to me. I guess I lack insight? The insight I have had, over and over and over again, is that a good programmer can exploit static typing to prevent errors, and to facilitate refactoring. I often structure my code and types specifically to ensure that common mistakes fail to compile, or so that I can use the compiler to identify all the places I need to change code when refactoring (less of that in the last few years, since automated
Re: (Score:2)
FWIW, static typing can't prove dynamic properties of programs. It's not a silver bullet.
It's not a silver bullet. It's a 15% reduction in bug count for free.
Re: (Score:2)
I disagree with you, and agree with phantomfive. If you have ever had to maintain a program that is larger than 'Hello world' in a real programming language you wouldn't be making this statement. You are probably a 'Full Stack' developer who builds cookie cutter web pages in all the nifty languages.
Also you should keep in mind that while you might be a competent coder and don't see the reason to use static typing, you are probably not going to b
Re: (Score:2)
I did not say static typing was useless. For example, the "discretionary" static typing a modern C compiler gives you (via warnings, a final -Wall pass is a good idea in most cases) can be useful in debugging. No, I never did any "web coding" in my life. Your invalid argument adHominen is completely wasted on me.
What I said is that it is overrated. It is a tool that in some cases gives you a bit of better convenience, but it is in no way a game-changer and it certainly does not make incompetent coders produ
Re: (Score:2)
May I ask on which statically typed language you have collected your experience? Please also provide an estimated total experience time, assuming 40h/w full time work with that language. So writing a program in Haskell that replaces a string in a file would score 1d.
Re: (Score:2)
Static typing is overrated, at least for competent coders. For the clueless coders (admittedly the majority), static typing does not make their code better, it just breaks in other places.
The above is easy for any C or C++ programmer to refute -- consider how many runtime errors sneak into your code when you're working with APIs that use void-pointers, compared to how many runtime errors you get when working with strongly-typed APIs where the compiler won't let you specify an incorrectly-typed argument.
Every error flagged for you at compile-time saves you (and/or your SQA team) from an indeterminate (but sometimes quite lengthy) period of run-time debugging, and that saved time can then be p
Re: (Score:2)
The main problem is that this may allow targeted attacks. It may also put in code that was intended as example of how to not do things.
But essentially, lazy and cargo cult coders need to be removed, they cause massive cost and risks and there is no fixing them.
Re: (Score:2)
Have you tried it? Sounds like no.
Also, there is danger whee macros or redefinition is allowed, but C# and Java at least should be very safe for this.
Also, if you intend to write something and this does something else, there is no analysis needed. Your productivity would not drop just because you are matching expectation with reality.
Try it and get back to us.
Re: (Score:2)
This would be like 4chan trolling self driving cars by clicking on a storefront when they want a fire hydrant.
kite.com reinvented again, for profit! (Score:1)
Probably sucks as bad, unless you're a beginning programmer:
10 Hey let me interrupt your typing with a list of items you may be in the process of typing, which will take you longer to read through and select the best one, that it would to finish typing the line.
20 GOTO 10
Of course, all of these are solving the wrong problem for anyone who already knows the coding language and libraries. Most of my time is spent figuring out what is supposed to be done, not writing the code to do it. Clients all too often do
Re: (Score:2)
If you've never seen autocomplete, then seeing a lousy version of it for the first time is pretty cool.
Re: (Score:2)
I never use autocomplete when coding. Far too risky.
The dangers of autocomplete for mortals (Score:2)
Can you explain what is so dangerous about autocomplete?
Unless you spend all your time with APIs you've memorized it's a godsend.
Like 20% of programming is hard and 80% is work. It's nice any time you're able to get rid of the work part. I personally have a small amount of time I can really do good work and I'd prefer not to waste it on shit I could do stoned at midnight.
Re: (Score:2)
Have you looked at what this autocomplete actually suggests?
No, it's too expensive.
Its far more than those options.
What is it then?
Awesome (Score:2)
Finally a big step on the way to the end of syntax. Let the software worry about the syntax.
Next step, the structures. Let's have the software to worry about loops and structures and finding and removing common bugs and security issues. I can just write whatever code that does some stuff to a bunch of other stuff and the software can make it efficient and (provably?) correct.
After that, parallelization. Let the software unroll and parallelize stuff, finding all the sequence points automatically and rear
Re: (Score:2)
Finally a big step on the way to the end of syntax. Let the software worry about the syntax.
How does this end syntax any more than autocomplete does?
Re: (Score:2)
How does this end syntax any more than autocomplete does?
I haven't used it. I assume it's just better at it.
Re: (Score:2)
And finally, meaning: Let the software decide what to code and keep those pesky humans out of the loop.
On a completely unrelated note: Satiric postings on /. get harder and harder to distinguish from serious ones.
Re: (Score:2)
Re: (Score:2)
Twice a day? Isn't that part of Agile?
9am: Are you done yet?
Prog: No, I have to do X, Y, and Z
2pm: Are you done yet?
Prog: No, I have to do X, Y, and Z
Next day:
9am: Are you done with X yet?
Prog: No, that requires A, B, and C
2pm: Are done with A yet?
Prog: No, that requires x, y, and z
Next day?
9am: Aren't you done yet, damnit?
Prog: No, you keep interrupting me with these damn meetings so I cannot have time to think.
I do not see why programming would not (Score:2)
But then I also think Judges, Lawyers and Politicians along with many corp/government bureaucrats can be replaced with Ethical, Honest AI?
ATM Complete fiscal collapse under our current government debt (all level
Re:I do not see why programming would not (Score:5, Insightful)
Simple: There is no AI. There is just dumb automation that marketing decided to call "intelligent" to make it sound more interesting. These things have zero insight or understanding. Hence while idiotic stunts like this one are possible (basically by faking it), actual tasks requiring intelligence are not.
Re: (Score:3)
Applying AI to many programming tasks can allow automation thus putting a hit on the IT programming field.
While I agree with your sentiment, I really wish that people would start saying "AI techniques" instead of just "AI" in that context. That would possibly relieve us of rants from the "there is no AI so I won't listen to what you really mean" crowd.
Cannot be amazing or modern! (Score:2)
I wonder (Score:2)
... if they simply snarfed up all of the “how do I...” questions from stack overflow, along with the top-ranked answers, and put it all into a database. So the “AI” then just matches up what you’re starting to type against the list of previously-asked questions and suggests the previous answer.
In any case, I can’t say a bunch of Twitter recommendations is likely to influence me... other than possibly making me even less likely to consider a product.
Autocode for Lisp (Score:3)
Works every time:
}}}}}}}}
Finally, I can take a break. (Score:2)
I'll start things off and let Deep TabNine finish things up for me. ...
Hopefully it can also read my mind to know what the program is suppose to do
#include <stdio.h>
[In general, all autocomplete systems annoy me to no end.]
Ironically ... (Score:2)
The update has seriously impressed coders, who have called it "amazing," "insane," and "absolutely mind-blowing" on Twitter...
Perhaps they should have gotten some help from Deep TabNine ...
Sends code to their servers (Score:3)
Nope. Gonna hafta wait for a self-hosted, FOSS implementation.
The keyboard is not the bottleneck (Score:3)
The keyboard is not the bottleneck when writing new code. Most experienced developers know that.
Maybe this tool will work best for refactoring code and/or QA/linting?
Re: (Score:2)
This was my point. I can type a line of code much faster than I can read and select/confirm/understand a suggestion. The same is true with texting, btw.
Perl! (Score:1)
Wow, Perl support! That's it, buying it right away!
(Only slightly kidding,)
Hyperbole Alert (Score:1)
When the product name is a hyperbole, it's usually a signal to run the other way. What's next "Best Ever 2.0", "Really Terrific Believe Me++"?
Clippy? (Score:2)
Automated future (Score:2)
If you get put out of a job due to one of these sort of tools, may I be the first to suggest that you learn how to code?
Wait...errrr....ummmm.....
disaster for code correctness/security (Score:1)
This bodes badly for the quality and security of code. Good code is written slowly and methodically, with though given to each line of code. Automated coding will result in the same kind of typos we are used to from autocorrect, except that these typos can lead to real damage.
But can it... (Score:2)
- Create variables with meaningful names?
- Ensure that functions don't have side effects?
- Guess what the vague ticket was really trying to say?
- Understand what the user really wanted, despite what they said they wanted?
I'm sure debugging is just a snap... (Score:2)
This will be a big hit with those who want to use as many as possible newly minted (i.e. untested, undocumented and not understood) frameworks as they can find.
I also see a high correlation with people who expect to retire young on their cryptocurrency investments. I bet the peddlers of this miracle cure considered floating a new cryptocurrencty themselves before they realized that scam had already gone stale. This scam is fresh from the oven so loads of suckers are ready to jump on b
Re: (Score:2)
Re: (Score:2)
The difference is that stackoverflow had commenters discussing one approach or the other that was proposed, such that a decent engineer could learn, grow, and even choose a better way.