5 ms·
I think it's fair to be sad that greappability is being lost. But I also don't think we should limit ourselves to it; treating it as a design goal holds back th
by brundolf 5y ago
I think it's fair to be sad that greappability is being lost. But I also don't think we should limit ourselves to it; treating it as a design goal holds back the field. Languages can be much more powerful when they drop that constraint and assume the reader has (language-aware) tooling available to help them make sense of code.
I think instead we should focus on continuing to push the tooling forward. Language servers were an important step in this direction, freeing us from comprehensive IDEs, but I think that's just the tip of the iceberg. More recently we have Tree Sitter, and GitHub at least can do some basic semantic analysis of code right in their UI. How can we make it even easier to build tools that understand a language? And what new interfaces can we put on top of them? What about a CLI that lets you grep code at an AST level, maybe showing the types of the expressions it yields? What about a declarative format like TextMate that lets you describe the basics of how a type system is wired, so you don't have to craft a whole language server by hand?
Maybe there's also something to be said for designing languages to be "tooling-friendly", even if that doesn't mean "as plain-text". Lowering the bar for writing tooling that can have a semantic understanding of the syntax and types, etc.
There's lots to be explored here, in my opinion
- berkut 5y agoIt's not just editors/IDEs though... Which diff/merge tools support language servers currently? i.e. how do you thoroughly code-review changes without switching between a decent diff program and an IDE continually?
- brundolf 5y agoGitHub and VSCode both allow this (and I'm sure other rich editors do too). In fact, using GitLab at work, I open up most of the MRs I review in my local editor specifically for this reason
- berkut 5y agoDo you mean "github.com" or Atom their editor? Yeah, sure Rich Editors support the "basics" of diffing, but for complex (i.e. 3-way) merges, I find them pretty limiting: stuff like Beyond Compare, p4diff are more useful in those situations IMO.
- brundolf 5y agoYeah, github.com has started adding rich hover-overs and click-throughs on their web interface for some languages I'm not familiar with those other tools, but it's not hard to imagine they or similar tools could one day add rich language integration using language servers, tree-sitter, or something else
- pjmlp 5y agoThey aren't new as idea, but I guess one needs to thank Microsoft for pushing it. https://dreamsongs.com/Cadillac.html https://dreamsongs.com/Cadillac.html