4 ms·
AI assisted code completion for C++
- saagarjha 8y ago> IntelliCode uses machine learning to train over thousands of real-world projects including open-source projects on GitHub. Is it legal to use a bunch of open-source projects in what looks like a proprietary plugin?
- Hydraulix989 8y agoDepends on the licenses of said projects. It's pretty easy to whitelist MIT/Apache licensed code. Even still, it's unclear whether an abstract machine learning model that "saw" copyrighted IP during the training process is infringing on said IP. A self-driving car sees many billboards during test rides.
- deleted 8y ago[deleted]
- fulafel 8y agoThose licenses still require you to display acknowledgements, copies of the original license, disclaimers etc.
- WalterGR 8y agoThey require you to do that when? When you include the source code in a project? Or distribute binaries created in whole or in part from the source code? The licenses say exactly what the requirements are, and when you are obligated to follow those requirements. What do they say about training AI models on the code?
- groceryheist 8y ago> Distribute binaries created in whole or in part from the source code. How exactly is that different from what's happening here?
- haneefmubarak 8y agoThink of this more along the lines of when you read a code description of how something works and then describe it to someone else. In the same way that you don't have to provide copies of the license(s) of whatever you read, you shouldn't have to do that here, because the model is simplying learning and then inferring.
- IshKebab 8y agoIt's not as simple as that though. What if I train an AI to output a book given its title. With a sufficiently expressive and overfit network it could actually memorise the training data exactly. That means my network now includes an exact copy of those books (encoded in a weird way but that is irrelevant). Should I be able to distribute my weights and ignore the copyright on the original books? Of course not! In this case it is very unlikely that the network weights store much data from each individual github project, but it's definitely a sliding scale.
- userbinator 8y agoIt's basically an extension of "everything is a derivative work". I believe it's similar to how you cannot (and should not be able to) erase your employee's brains of the code they worked on.
- deleted 8y ago[deleted]
- cheez 8y agoAm I missing, where is the AI in this? Or are we being more broad here?
- IshKebab 8y agoIt predicts the next word based on the previous ones. A classic AI task.
- godelmachine 8y agoBad for interview practice.
- pts_ 8y agoYou cannot pass antiquated interviews anyway by working on the technology. You have to rote learn the APIs.
- deleted 8y ago[deleted]
- deft 8y agoThis might use AI but it's nothing but marketing here. Isn't any sufficiently 'trained' program AI under this definition? If I put enough possible paths in my matching system, I get this. Intellicode is just a minor improvement on intellisense that could have been made years ago without any kind of AI branding.
- IshKebab 8y agoAll AI is more or less sophisticated pattern matching though. Why complain about this one?
- kurosawa 8y agoAnyone know about similar but open-source projects that do code completion (or assist in some way) upon training on stackexchange data?
- typon 8y agoTabnine does it on your project
- deleted 8y ago[deleted]
- thosakwe 8y agoSo is this basically like a Markov chain attached to a C++ analyzer? If so, then I think the title is a bit gratuitous with the whole "AI" thing, but I can't say it's not a convenient feature to have in an IDE.
- mlthoughts2018 8y agoI despise code autocomplete features. I could not stand using Jedi in Emacs. It just slows me down way too much to have to interact with an autocompleter. I’ll never understand why anyone would want this. I’ve found code autocompletion to be particularly troublesome and hindering on large legacy code bases, where the suggestions not only prevent you from quickly typing out the method, class, etc. that you were trying to type, but also add a hindering layer of misdirection to trying to learn the architecture and code layout and form a mental model of the code organization. Code autocompleters have only ever been pure waste to me, across a wide range of projects of various ages, states of code complexity, states of maintenance.
- macspoofing 8y agoTo each his own. Suffice to say most devs find autocompletion very productive.
- 75dvtwin 8y ago@mlthoughts2018 do you find that other aspects of your work pattern, and preferenceses are significantly different than of peers working on the same projects? For example, do you think you use more of open source/3rd party libraries than your peers on the same project? Do you find that many facilities in modern OS or languages are overly bloated, in your view? What about project management methodologies -- do you have a preference? Reason I am asking, is because your comment just does not correspond to my experience at all. By now I cannot program without code completion, especially in the languages like JavaScript that do not have strong compile time verification. It is also tremendously helpful for me in other languages I use, it helps me not just with my code, but reduces time of looking up basic API documentation for a new library that I recently incorporated. I also often see that there is a duplicate function (even just from the names of functions, between my code and some library that I included in my project). So it helps me make quick decisions were I should remove code duplication. So I am wondering if your perception is a result of a larger set of experiences/circumstances/choices that I did not take into account.
- mlthoughts2018 8y ago
- Const-me 8y agoThat's very nice and I'll probably be using it a lot, after VS2019 will stabilize (it's just a preview now). However, the fact that this thing works so well, says a lot about the design of C++ standard library. They should have encapsulated the pair of iterators into a single structure, and implement implicit casts from vectors/arrays to that object. Requiring to type begin/end every single time is counterproductive.
- ArthurBrussee 8y agoThat's great but I hate how they mark suggestions with a star and add an extra comment. It should just work, not add UI clutter and noise