I care a lot about how programming languages are designed. It’s an important issue, even in the age of AIs---especially in the age of AIs.
When you’re designing a programming language, the goal is not to put in as many features as possible. More features can make the programming language worse, as I argue in Can you have too many programming language features?.
Specifically, Rust should include some features, but not others. This seemingly luekwarm statement can really get people going, especially when it comes to inheritance. In What Features Should Rust Include? Part I: Not Inheritance., I argue that Rust shouldn’t have inheritance. In What Features Should Rust Have? Part II, I admit that maybe Rust could potentially have more features.
Really, programming languages are user interfaces. A programming language is one of the most ancient human/computer interaction points, and designing them means thinking about human psychology and limitations (and now, the very similar LLM limitations). On this note, I wrote Command Line Interface UXes Need Love, Too, about the Unix CLI interface---which is, of course, a programming language, not just because you can write programs in it as shell scripts, but because you use it to instruct the computer as to what to do, to program it if you will.