The invisible art of programming
No art form is less visible than that of the programmer for whom “humble labour and profound obscurity” are preconditions of the medium.
But first a word on art: Programming is is like writing music. There is no one true way to write a melody, but there are plenty of wrong ones. There are many combinations of notes that will be absolutely displeasing to all who listen to them, but amongst the many combinations are a few that will please almost anyone.
Similarly, there is not one true way to write a program.
A programmer’s coding style is unique and identifiable. Programmers are able to recognize the author of a piece of code once they know their style.
Code can be funny. I have spotted more than one joke in reading other people’s code, and I have left a few of my own when writing my code. But I will never know if anyone saw them and laughed.
Authors of poetry and prose can hope that once published they will be treated to some kind of feedback. They might even achieve fame and recognition. When I write these articles, I get comments (and thank you for that). Yet code by its nature is invisible. Code running on a server is inaccessible by design. Complied code even more so. Open source code is available for all to see, but disconnected from an operating environment, detached, intangible, inscrutable to most people, even other programmers.
No programmer has ever been awarded a medal or interviewed on television because of the elegance and expressiveness of their code, but this does not mean that code cannot be elegant or expressive.
Code is so expressive that it creates whole worlds, whole universes. Self-contained universes, Hermetic universes, whose prisca theologia is the Church-Turing thesis.
Code is Logos, the Word that brings order out of chaos.
It is precisely this world-creating power that makes programming an art that is so difficult to master.
Lesser programmers might create a portion of the world, but the master programmer must first bring the world into being with its own rules, logic, physics, and all other manner of internal consistency. These days we tend to call these worlds frameworks, but languages, compilers, and even some programs (here’s looking at you Stallman) are all examples of universes created by master programmers.
Heavy is the head that wears the crown. It is hard work being the demiurge, making the rules.
Stacked one inside of the other, these worlds are like Russian dolls, each layer revealing an ever deep level. Peel away the framework, and you find the platform class libraries. Step through the class library inheritances and eventually you arrive at the language. Underneath the language you find the language, in all its glory, which covers up the machine instructions. And the machine instructions depend upon the particular micro-processor instructions, which are millions of tiny transistors with connections to each other just a few atoms wide.
We even have computers which glean information from the spin of a quark.
No medium is so pliable, so infinite in its possibilities as that of the programmer. Stone cracks and cannot be made whole. Paint is limited by its physical properties too, water-colours are unforgiving, oil darkens with age. Photography limits what can be put in frame and how much dynamic range can be captured. No such limits with code.
“The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures” — Frederick P . Brooks Jr.