Computing as a Tool for Thinking

Notation as a Tool of Thought

Kenneth Iverson built a language so compact it changed what its users could think. His Turing lecture explains why.

· 4 min read

When Kenneth Iverson received the Turing Award in 1979, he used his lecture to make a claim that sounds modest and turns out to be enormous: that notation is a tool of thought — not a way of writing down thoughts you've already had, but a tool that helps you have them.

Iverson had earned the right to the claim the hard way. He had invented APL, a programming language so dense with special symbols that a working program could look like a small explosion in a math font — and so expressive that, once you learned to read it, whole algorithms collapsed into a line you could take in at a glance. He had spent his career watching notation change what people could think. The lecture is his attempt to say why.

The argument from arithmetic#

His best example isn't from computing at all. It's the one you learned as a child without noticing it was an argument about anything.

Take multiplication. In our ordinary decimal, place-value notation, multiplying two large numbers is a procedure — line up the digits, multiply, carry, shift, add. It's so mechanical that a seven-year-old can be taught to do it reliably, and a machine can do it trivially. Now try the same multiplication in Roman numerals. There's no procedure. There's barely a foothold. The numbers are the same; the arithmetic is the same; but the notation makes one version routine and the other nearly impossible.

That's Iverson's whole thesis in miniature. The place-value notation isn't a neutral transcript of numbers — it does part of the thinking for you, by arranging information so that the operations you care about become simple, local, and rule-governed. Good notation, he argued, has exactly this property: it makes the important operations easy to perform and easy to reason about. It is an object to think with.

What Iverson wanted from a notation#

From that observation, Iverson drew out the qualities a good notation should have, and used them to justify the strange and beautiful design of APL. He wanted:

  • Ease of expressing the operations that matter — the common, important manipulations should be short and direct, not buried in ceremony.
  • Suggestivity — the form of an expression should suggest useful related expressions and transformations. Seeing one thing should help you see the next.
  • Economy — a small number of general, composable operators rather than a sprawl of special cases, so the whole system can be held in the mind.
  • Amenability to formal manipulation — you should be able to calculate with the notation itself, rewriting expressions by rule, the way algebra lets you transform equations.

APL pursued these to an extreme. It treated whole arrays as single values and gave you a compact alphabet of operators that worked on them uniformly, so that operations a conventional language would express in loops and indices became a few adjacent symbols. The result was famously hard to learn and, for those who learned it, famously powerful — you could express an idea so concisely that you could see its structure whole, manipulate it, and discover things about it that the verbose version would have hidden.

The deep idea#

Step back from APL specifically and Iverson's lecture connects to one of the oldest threads on this site. If notation can make some thoughts easy and others impossible — if changing the symbols changes the thinker — then notation belongs to the same family as Marshall McLuhan's the medium is the message: the form shapes the thought, often more than the content does.

It also reframes what a programming language is. We usually treat a language as a way to instruct a machine. Iverson invites us to treat it as a way to instruct ourselves — a notation we think in, whose design determines which programs are easy to conceive and which never occur to us at all. By that measure, the question "is this a good language?" becomes "does this notation make good thoughts easy to have?" — a far more interesting question than which features it ships.

This is exactly why studying many languages and paradigms matters. Each is a different notation, and each makes a different set of thoughts cheap. Lisp's code-as-data makes thoughts about programs-as-values easy; APL makes thoughts about whole-array operations easy; a language with no good way to express something quietly steers you away from ever thinking it.

The cost, and the point#

There's an honest tension Iverson's critics always raise: APL's extreme compression can produce code that's unreadable to anyone but its author, the famous "write-only" program. Notation that's powerful for the expert can be a wall for the newcomer. Iverson knew this, and didn't think it refuted the thesis — it sharpened it. The fact that notation can be too compressed, can hide as well as reveal, is just more evidence that notation isn't neutral. It's a design problem with real stakes for thought.

The lasting lesson isn't "use APL." It's that the symbols you choose are not cosmetic. Whenever you design an interface, a data format, a diagram, an API, a programming language — you are designing a notation, and you are deciding, for everyone who uses it, which thoughts will be easy and which will be unthinkable. Iverson's title is the thing to remember. Notation is a tool of thought. Choose it like one.

Kenneth IversonAPLnotationlanguage designTuring Award