10 short surrealists reflections about code


Code is not the object of programming. It’s merely the result.
Ideas burn as fires but when the bonfire is no more, what is left is just a black mark on the ground. The testimony may last for millennia as a thin layer of ash under meters and meters of dirt. The memory of the bonfire will belong to the world but the red light and the impetuous energy that inspired thoughts to the people that lit the fire are long gone. In the same way code is the memory of ideas that generated it, but these ideas are lost even if code survives. This is the ephemeral nature of ideas.
Today it’s uncommon for the average programmer to be able to reconstruct even a pale resemblance of the originating ideas starting from the code. This is because code is an imperfect and limiting medium to transfer ideas. Can a superhuman programmer reconstruct worlds of ideas from mere code? Is it a human limitation or a code limitation?
Does the generating idea live in the machine when the code is executed? If so, it’s a limit of the human. If not, it’s probably a limit of the code.
Code is important only to the machine. Code defines our limitations as programmers, like alphabets and grammars are the limitations of a poet. Today, putting ideas into code is necessary but hopefully tomorrow we will have better options to talk to our machines.
When thinking, humans generate worlds. When programming, humans generate worlds with rules. These rules are imposed by the environment: the programming language, its runtime, the problem we want to solve, the organization we want to direct, the communities we want to maneuver. Is a programming deprived of rules possible? If so, how would the medium look like? Can a medium be devoid of rules? Probably not. Is it a problem programmers can solve alone? Again, no.
Language design aims toward establishing an optimal set of rules, because rules helps us constraint our imagination and reduce complexity in order to better achieve a solution. Should language design focus solely on solving problems? Why don’t we have languages for meditation? Why don’t we have languages to contemplate nature? Haskell may count but I’m not sure.
Some programmers write code for machines. Some others are better and write code for other humans. A few write code for themselves. Among these some are regarded as artists. Good code is a matter of self-respect and respect for others. Good code is a matter of dignity.
Nobody, to my knowledge, writes code for psychedelia. This is the activity of creating worlds from shadows. Code is a shadow of ideas. Psychedelic code is able to inspire the generation of realities from a string of characters. Can psychedelic code exist? Is psychedelic code a property of the code or a property of the reader? This last question is likely a problem for Semiotics researchers.
Is the preoccupation for code aesthetics and clarity relevant? It serves a self-evident practical purpose: understanding what the machine will do and making the intention of the programmer explicit to the reader. Nonetheless it falls short for any psychedelic purpose. Does an improvement on code aesthetics lead to any degree of psychedelia? This seems like an implicit assumption that justifies the effort for endless research on clearer and more expressive languages, APIs, structures, patterns and abstractions. But are we optimizing our collective effort for the right metric? It is indeed the most obvious and intuitive thing to do but can we do better?
Thanks to Laurent Gerbaud, Brussels for the awesome chocolate and tea that supported the writing of this post.
I enjoy discussion on these topics and the post is intended as a necessary step towards further development of the intuitions listed here. I invite you to comment with any idea that came to your mind while reading the post.