How Programming Languages May Evolve in the AI Era
Summary
José Valim’s essay considers how programming languages and their ecosystems may change as coding agents write an increasing share of software. He argues that communities and shared libraries could weaken if agents make custom implementations cheap, even as smaller ecosystems gain the ability to catch up by automating routine implementation, translation, and porting work. Human-oriented syntax and ergonomics may matter less to agents than they do to programmers, while compilers and higher-level languages will remain necessary because software still targets different architectures, computational models, and guarantees. The author therefore favors optimizing languages for stronger guarantees rather than merely for token efficiency or easy type inference. He describes four complementary approaches: making invalid states hard to express, establishing properties statically, enforcing safety and isolation at runtime, and validating behavior empirically through tests, property-based testing, and fuzzing. For agentic tooling, he proposes replacing document- and cursor-centered LSP workflows with queryable program databases containing symbols, references, call graphs, types, and data-flow information. Such databases could support complex investigations and guard agents against undesirable practices, although locality remains important because dynamic features can make behavior difficult to trace. He also argues that runtime observability should complement or replace human-oriented debugger workflows, allowing agents to instrument systems, correlate traces, and diagnose production failures. Elixir’s runtime inspection facilities are presented as an example whose capabilities would need to be exposed safely through tools, queries, or sandboxes.