3 ms·
>, and it has no real AI, just deterministic understanding of the project's source tree and dependencies, an indexed AST Right, but because VS Intellicode does
by jasode 7y ago
>, and it has no real AI, just deterministic understanding of the project's source tree and dependencies, an indexed AST
Right, but because VS Intellicode does not purely work on just the AST tree, that becomes its differentiated advantage. It's not a better way of autocomplete, but a different way that works for some scenarios. Because Intellicode is not deterministic, it is not meant to build muscle-memory like vim, emacs, etc.
I also see some comments in this thread wondering how it compares to Resharper so here's how I'd differentiate them:
Most of the previous autocomplete, "intellisense" type of algorithms work on parsing the AST of the project's source code. The lookup database is therefore scoped to the internal world of that project. Intellicode parses others' source code (e.g. top Github repos) which is out there in the external world.
What Intellicode does is use crowd-sourced data to create a different set of autocomplete suggestions. With that strategy, when one types the dot character "." to trigger a context menu for autocompletion, it's sort of a miniature "pagerank" of the most likely methods or properties instead of a "dumb" alphabetical order.
A concrete example in C# might be the autocomplete of a DateTime type. There are 2 similar properties: ".Now" and ".UtcNow".
What people probably want in many situations to avoid DST bugs is ".UtcNow" instead of ".Now". But in a regular IDE, a dumb alphabetical order means "N" shows up before "U".[0]. Therefore, newbies inadvertently end up with "DateTime.Now" in their code instead of "DateTime.UtcNow".
Something like Intellicode would use machine learning that analyzes the top Github repos and therefore reorder things so ".UtcNow" is higher than ".Now". Of course, this re-ordering could have been manually curated by C# experts into a "best practices database" but Intellicode's idea was to approximate that by using AI applied to others' source code.
[0] VS2017 screenshot example: https://imgur.com/a/05d9Ij9 https://imgur.com/a/05d9Ij9
- seanmcdirmid 7y agoMost modern autocomplete engines respect camelcase, so N will bring up both Now and UtcNow.
- Dayshine 7y ago> What Intellicode does is use crowd-sourced data to create a different set of autocomplete suggestions. With that strategy, when one types the dot character "." to trigger a context menu for autocompletion, it's sort of a miniature "pagerank" of the most likely methods or properties instead of a "dumb" alphabetical order. Eh, isn't the whole point that intellicode is trained on your own project? Mine is, it suggests things based on our usage.
- jasode 7y ago>, isn't the whole point that intellicode is trained on your own project? Intellicode may also be trained on your own project but that's definitely not its whole point. Here's an excerpt from https://visualstudio.microsoft.com/services/intellicode/ https://visualstudio.microsoft.com/services/intellicode/: >"IntelliCode recommendations are based on thousands of open source projects on GitHub each with over 100 stars." Perhaps you were thinking of "IntelliSense" instead of "IntelliCode"? Yes, the older IntelliSENSE could parse your custom classes and types and provide autocomplete for them. IntelliCODE is a different algorithm. (I think Microsoft's naming for them is not self-descriptive and confusing.)
- Dayshine 7y agoHuh, weird. I've only ever noticed the "starred" recommendations on our own methods, and it's incredible.
- WorldMaker 7y agoThe biggest place I see a lot of great IntelliCode recommendations so far is React development in Typescript in VS Code. class ComponentName extends React.| The top completions in order at that point are Component and PureComponent. It feels more magical than I would have expected, and it is particularly great having that constant reminder of PureComponent, which is very similar to the Now/UtcNow example above.