exupero's blog

Read and write optimization of notation systems

Software developers often have to consider whether database operations should be optimized for reading or for writing. To optimize for reading, more work is done when the data is written, such as denormalizing it, and to optimize for writing, more work has to be done at read time. That tradeoff exists not only in database operations, but also in notation systems.

Orthographically, longhand text is optimized for reading, while shorthand is optimized for writing. Longhand's distinct letter shapes and ascenders and descenders help even novice readers quickly identify words. In contrast, shorthand systems are fast to write, but they lack the redundancies and error correction that makes reading easier, and they can pack lots of meaning into small differences, which requires a reader to have much more training and practice in the system than required of a longhand reader.

In mathematics, traditional math notation is optimized for writing, as it too is compact and can require extensive training and practice to understand. The most read-optimized form of mathematics I can think of is plain prose, where concepts have to be at least somewhat explained and there are few symbolic abstractions to pack meaning into.

Despite traditional music notation looking arcane to the uninitiated, it is optimized for reading. When a musician performs a piece, they want to do as little unpacking of notes and timings as necessary, and standard staff notation can be executed with very little if any understanding of music theory. I don't know of a standard music notation that's optimized for writing. The closest I've seen are Chris Ford's talks encoding music theory as Clojure code.

For the expression of algorithms probably the closest thing to read optimization is pseudo code, which requires very little understanding of even a particular programming language. More generally, imperative code is read optimized. That makes declarative code write optimized, and possibly the most write optimized language is APL, which is notoriously terse.

In construction, IKEA-style instructions are optimized for reading, but would be impractical for constructing whole buildings, so for larger projects more write-optimized blueprints are used, requiring workers to have much more knowledge about how to execute the intended result.

If you know of other notation systems that trade off between the amount of effort needed to read them and the effort needed to write them, please email me.