https://www.virtuouscode.com/2015/07/08/ruby-is-defined-by-terrible-tools/
Despite the title, this is a good article on the relationship between programming languages, tooling, the resulting ecosystems and our mental models.
Related Posts
Sometimes programming tools are so good that you miss them when using other languages. I see these mentioned the most frequently:
* IntelliJ (for Java)
* Slime+Emacs (for Common Lisp)
* Pharo (for Smalltalk)
I'm struck that they all have bespoke UIs.
I think you could build an interesting IDE with a tiny embedded LLM in addition to the usual tooling.
Features like 'extract method' would be much nicer if an LLM could provide a name. Choosing a good name is virtually impossible from just a typed AST.
Counter-intuitively, if you're writing a parser for a programming language, you need it to be a total function. As soon as you build IDE tooling, you need ASTs from invalid or incomplete input.
The parser should return (Ast, List<Error>) rather than Result<Ast, Error>.