1. The Next 100 Languages
Some people think there are too many programming languages. I think there are not enough. Let me explain why.
1.1. The Diversity Argument
Every programming language embodies a set of tradeoffs and design decisions that reflect its intended use, its era, and its community's values. Just as we wouldn‘t say there are “too many” human languages (each capturing something unique about its speakers’ world), programming languages each capture something about the problems and people they serve.
1.2. The Power of Abstraction and Intent
How we communicate our intent — to both the machine and to our fellow engineers — fundamentally shapes the software we build. The abstractions a language provides are not just syntactic sugar; they form the vocabulary we use to think about problems. Each domain brings its own specific expectations and invariants that it needs to uphold. When we build languages tailored to those domains, we allow developers to express those invariants natively, turning implicit tribal knowledge into explicit, compiler-checked guarantees.
1.3. The Design Space Is Vast
The space of possible programming language designs is enormous. We have barely scratched the surface. Effect systems, ownership types, dependent types, gradual typing, relational programming — each of these represents a rich design dimension, and the intersections between them are largely unexplored.
1.4. Research Languages Matter
Languages that are “too academic” or “too experimental” for production use today become the foundations of mainstream languages tomorrow. Haskell's type classes became Rust's traits and Swift's protocols. ML's pattern matching is now in Python, Rust, and Kotlin. Research pays off, just slowly.
1.5. So, More Languages Please
If you're building a new programming language — keep going. Even if it never sees widespread adoption, you are contributing to the shared vocabulary of ideas that makes future languages better.
This post is a work in progress.