3 ms·
I don't think this is an accurate depiction and I think there's a lot more going on there than you're saying there is. The models also involve Codex, which is a
by phillipcarter 4y ago
I don't think this is an accurate depiction and I think there's a lot more going on there than you're saying there is. The models also involve Codex, which is able to effectively do pattern matching with more context you give it so that it can emit novel code. I've seen this happen numerous times with Copilot, where it works very well the more open documents you have, especially if those documents are related. True, it doesn't have a full semantic understanding of your codebase, but it's good enough to usually generate the right code once it's been "seeded" with something like an updated type definition that you then need to plumb through various parts of a codebase.
- dtagames 4y agoYes, I use Copilot, too for that very reason. But we need to be very careful about words like "semantic" and "understanding" as the method is neither. We'll get the best use out of these technologies if we don't ascribe to them magical qualities they don't have. Poke around. You'll find out it just statistical math with tokens (letters and punctuation). No meaning is ascribed to anything.
- phillipcarter 4y agoI...did say that it doesn't have a full semantic understanding of your code. Copilot uses tree-sitter under the covers to be able to figure out several things that you can get by analyzing syntax alone, which is actually quite far. It lets you identify what kinds of declarations (e.g., a type) and what kind of expressions (e.g., pattern matching on that type) exist, provided there's a grammar for it, and then lets that influence the suggested code. This isn't perfect because indeed, you need a full language service to actually understand things, especially in resolving ambiguities in symbols (like shadowing in some languages), but, like I said...it's good enough.
- dtagames 4y agoYes, Copilot has the advantage that programming language syntax is highly constrained and regularized, allowing it to slot-in your own variable names and functions into new code as you write it. This is the best feature of Copilot. It's not part of ChatGPT because that's not meant for writing code. And I wouldn't call it "understanding." But, it is useful.