A programming language is never just a way to tell a computer what to do. It's a set of glasses. It makes some thoughts easy and some thoughts nearly unthinkable; it decides what feels natural and what feels like fighting the tool. Learn a genuinely different language and you don't just gain a skill — you gain a new way of seeing computation.

That's why the languages worth studying are the ones that each carry a whole worldview. Lisp says programs are data and a language can describe itself — see code as data and the metacircular evaluator. Smalltalk says everything is an object talking by message, in a world that's alive while you edit it. APL says the right notation is itself a tool of thought, compressing an algorithm into a line you can hold in your head. Forth, Prolog, the ML family — each is a different bet about what computation fundamentally is.

This topic is about those bets, and about the dynamics that decide which ones win — including Richard Gabriel's uncomfortable observation that, often, worse is better. To learn several paradigms is the surest way to stop mistaking the conventions of one language for the nature of programming itself.

Essays