Evolving programming languages in the AI era
José Valim argues that programming languages should prioritize stronger guarantees, queryable program databases, and runtime observability over human-centric syntax optimizations in the AI era.
read it Essential reading for language designers and engineers thinking about how developer tooling must adapt to AI code generation.
summary
José Valim examines the long-term impact of AI code generation on programming language design, ecosystems, and toolchains. He argues that human-centric ergonomic tweaks like optional chaining matter less for agents, while features like strict typing, static guarantees, and runtime safety become more viable because agents don't mind tedium. He proposes moving away from human-biased interfaces like Language Server Protocols toward queryable program databases and rich runtime observability. Ultimately, he suggests languages should focus less on syntax and more on semantic correctness and machine-queryable APIs.
key points
- Syntax and token efficiency are low-priority concerns for language evolution because agents handle syntax easily, making human-centric ergonomics less relevant.
- Languages can increase strictness and leverage complex static or runtime guarantees since agents do not mind code tedium or verbose explicit types.
- LSPs should be replaced by program databases with query languages, allowing agents to explore call graphs and symbols programmatically rather than navigating files.
who should read it
Language designers, compiler engineers, and senior software developers looking ahead at AI-driven development workflows.
discussion positive
consensus
Commenters largely debate whether AI favors existing languages with vast training datasets or if it will spark a cambrian explosion of custom, niche languages.
pushback
Some argue that trying to optimize language design specifically for LLMs is misguided since AI's primary strength is working within existing human-designed paradigms.
I don't think any new languages will easily beat the existing ones, simply because of the mass of training data that is available. An LLM will have a much easier time one-shotting Java than even Rust today because it doesn't have to look up much and the ecosystem was stable for many years, so the internet is filled with content that is still up2date. Building a new language (or even altering existing ones) will take much longer to get into the models.
LLMs that have to constantly fix their code and look up libraries or features are much slower, more expensive and more prone to create …
Explains why new languages struggle with LLMs due to a lack of deep training data compared to established ecosystems like Java or Rust.
Generated by an LLM from the article and thread. Check the sources before relying on it.