Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
AI Programming

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.
This discussion has been archived. No new comments can be posted.

New AI-Assisted Coding Tool Called 'Amazing'

Comments Filter:
  • by Quakeulf ( 2650167 ) on Sunday July 28, 2019 @03:41PM (#59002614)
    In the end, the only thing we can distinguish us from the machines (until they manage to recreate us, which is coming too), is the living organism that we are hosted in. As it was said in the Matrix: "Homegrown human"
  • by dark.nebulae ( 3950923 ) on Sunday July 28, 2019 @03:41PM (#59002618)

    Skynet is going to write itself!

  • by Empiric ( 675968 ) on Sunday July 28, 2019 @03:44PM (#59002634)

    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)

    by MSG ( 12810 ) on Sunday July 28, 2019 @03:45PM (#59002636)

    In what way is a tool that learns from GPL-licensed software and repeats those patterns not a "derived work"?

    • by Anonymous Coward

      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.

      • by Shaitan ( 22585 )

        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

    • Well, let's think about it. The product as a whole, if you include the database (or neural network file) generated from GPLed code, is certainly a derivative work. The code used to compile the data to give suggestions is original, not a derivative work.

      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.
      • by Shaitan ( 22585 )

        "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

        • 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.

          • by Shaitan ( 22585 )

            "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

            • 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).

              • by Shaitan ( 22585 )

                "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

    • by lorinc ( 2470890 ) on Sunday July 28, 2019 @05:28PM (#59003064) Homepage Journal

      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?

    • by lorinc ( 2470890 ) on Sunday July 28, 2019 @05:30PM (#59003070) Homepage Journal

      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

      • by MikeKD ( 549924 )

        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.)

      • ... and see which one produces better output.

    • by Kohath ( 38547 )

      A derivative work would have to contain recognizable, non-trivial parts of the original.

      Here's an article:

      http://www.publicdomainsherpa.... [publicdomainsherpa.com]

    • by Shaitan ( 22585 )

      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

    • by epine ( 68316 )

      In what way is a tool that learns from GPL-licensed software and repeats those patterns not a "derived work"?

      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

  • 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

    • If your code is that repetitive, you might want to consider a little more DRY.
      • 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.

  • by xack ( 5304745 ) on Sunday July 28, 2019 @03:49PM (#59002662)
    A backdoor into programs could be easily inserted into programs if the "autocompletions" are suggested without the programmer fully comprehending what is happening. I expect the first autocompleted virus soon.
    • by gweihir ( 88907 )

      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.

    • 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.)

    • by DeVilla ( 4563 )
      If you're assuming you can't trust the auto-complete in you editor, it might be better for the editor to insert obfuscated, malicious code when you save a file and remove it when you read a file.
  • by Anonymous Coward

    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?

  • 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.

    • Lazy programmers and cargo cult programming already exists, though. It remains to be seen if the bugs this introduces outweigh the bugs it prevents by preventing typos. May depend on the language, idiom and application in question.
      • 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.

        • I was specifically talking about bad programmers. Good programmers would presumably examine the code produced by the autocomplete and (assuming they correctly understood it) save time. The same unit testing you reference could help catch any lingering misunderstandings there. I don't know how much time this would actually save in the long run vs. a good IDE, but with some applications using higher performance, less-expressive languages I could see this potentially being a good time saver.
      • by gweihir ( 88907 )

        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.

    • 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.

    • This would be like 4chan trolling self driving cars by clicking on a storefront when they want a fire hydrant.

  • 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

    • My guess is it's 'amazing' for people who have never used Eclipse, Visual Studio, IntelliJ, or any other IDE with halfway decent autocomplete.

      If you've never seen autocomplete, then seeing a lousy version of it for the first time is pretty cool.
      • by gweihir ( 88907 )

        I never use autocomplete when coding. Far too risky.

        • 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.

  • 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

    • 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?

      • by Kohath ( 38547 )

        How does this end syntax any more than autocomplete does?

        I haven't used it. I assume it's just better at it.

    • by gweihir ( 88907 )

      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.

    • by Greyfox ( 87712 )
      Until the software can listen to the inane babbling of our managers and translate it into viable business requirements, I'm keeping hold of my programmer's hat. Although some of my past managers could be automated with a Markov chain generator and a script that emails us to ask if we're done yet no less often than twice a day.
      • by gtall ( 79522 )

        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.

  • be a target for AI. Applying AI to many programming tasks can allow automation thus putting a hit on the IT programming field.
    But then I also think Judges, Lawyers and Politicians along with many corp/government bureaucrats can be replaced with Ethical, Honest AI? ;) lol Which would be a vast improvement in those fields considering what we currently have. And I do not see either party as being worse than the other. They both stink!

    ATM Complete fiscal collapse under our current government debt (all level
    • by gweihir ( 88907 ) on Sunday July 28, 2019 @05:01PM (#59002956)

      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.

    • 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.

  • If it supports perl, it cannot be amazing or modern.
  • ... 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.

  • by tomhath ( 637240 ) on Sunday July 28, 2019 @05:25PM (#59003052)

    Works every time:

    }}}}}}}}

  • 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.]

  • The update has seriously impressed coders, who have called it "amazing," "insane," and "absolutely mind-blowing" on Twitter...

    ... the recent Twitter Desktop Update hasn't been called any of those things, even on Twitter. [ Just sayin' :-) ]

    Perhaps they should have gotten some help from Deep TabNine ...

  • by melted ( 227442 ) on Sunday July 28, 2019 @11:00PM (#59004076) Homepage

    Nope. Gonna hafta wait for a self-hosted, FOSS implementation.

  • by boa ( 96754 ) on Sunday July 28, 2019 @11:41PM (#59004164)

    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?

    • 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.

  • by Anonymous Coward

    Wow, Perl support! That's it, buying it right away!

    (Only slightly kidding,)

  • 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++"?

  • It looks like you are writing a derivative mobile role-playing game - would you like me to help?
  • 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.....

  • 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.

  • - 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?

  • What could go wrong?

    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

If all else fails, lower your standards.

Working...