How would Nabokov describe a compiler?
December 11, 2022
The famous Arthur Clarke quote goes, “Any sufficiently advanced technology is indistinguishable from magic”.
Usually this is accompanied by a hypothetical time travel scenario where a human from our time attempts to explain smartphones to a medieval farmer. As is often pointed out though, modern humans don’t really know how smartphones work either. No individual, even one who works on smartphones could build one from scratch or even explain how to do so.
Software is pretty magical to me. I know some things about how a computer works, how programming languages are implemented and so on, but if I stand far enough away, the very fact that these things exist at all in our world is pretty damn magical.
We don’t really like to think about that, though. People who write software for a living don’t like magic because it’s unreliable. As anyone being introduced to Ruby on Rails for the first time can tell you, you can’t build efficient, maintainable applications on top of tools that you don’t understand. And in an industry where people want to understand things, what gets celebrated is concise, well-organized, accurate documentation of a technology, with clear examples showing exactly what it’s capable of and how the user can adapt it to their needs.
This is very important when you’re trying to build and debug software, but I think that we have other needs that aren’t being served by this kind of writing. There’s a place for everything and we certainly wouldn’t want technical documents to be written in a fancy prose style when what we need is precision. But where do we reckon with the magic? As hackneyed as it may sound, where is the writing that deals with the journey of writing a delightful program instead of only the dry logistical details of the destination?
The importance of stripping out ambiguity cannot be overstated if we want people to know how the tool should be used. Packing maximum meaning into fewer characters is vital if we want people to avoid skimming and losing interest, if we want them to understand and remember. But what if we want readers to revel and wonder at just what is in our collective power to create?
I think there’s a place for sumptuous, exquisite language in discussions of software. We don’t have to be the learn’d astronomers all the time. And so I wonder, how would Nabokov describe a compiler?