icon to open the header menu

Roadmap

Our first step, in  Aesthetic ideals in programming practices   , is an empirical assessment of how programmers consider aesthetics with their practice or reading and writing it. After acknowledging and underlining the diversity of those practices, from software developers and scientists to artists and hackers, we will identify which concepts and references are being used the most when referring to beautiful code—elegance, clarity, simplicity, cleanliness, and others. These concepts will then allow us to touch upon the field that are being referred to when considering the practice of programming: literature, architecture and mathematics as domains in themselves, and craft as a particular approach to these domains. Finally, we will show how the overlap of these concepts can be found in the process of understanding —communicating abstract ideas through concrete manifestations. Indeed, we will see that how source code is written allows us to grasp what it does.
After establishing the role of aesthetics as the answer to source code's cognitive complexity, we will proceed to analyze further such a relationship between understanding, source code and aesthetics in  Understanding source code   . We will see that one of the main features of source code is the elusiveness of its meaning, whether effective or intended. Beautiful code is often code that can be understood clearly, which raises the following question: how can a completely explicit and formal language allow ambiguity? The answer to this question will involve an analysis of the two audiences of source code: humans and machines. This ambivalent status will be developed through the notion of abstract artifact , highlighting both material and cognitive dimensions of our object of study. We will show how source code needs to provide a gradual interface between different modes of being of source code: source code as text, source code as structure and source code as theory. The need for aesthetics arises from the tradeoffs that need to be made when these different modes of being overlap. In particular, one of the ways that enable humans to grasp computational concepts are metaphorical devices. Since metaphors aren't exclusively literary devices, looking at them from a cognitive perspective will also raise issues of modes of knowledge, between explicit, implicit and tacit.
Shifting from empirical observations to a more theoretical framing, we will then assess in  Beauty and understanding   how the different fields that are being referred to when talking about source code have touched upon these issues of understanding, from rhetoric to literature, through architecture and mathematics. Thinking in terms of surface-structure and deep-structure, we will establish a first connection between program texts and literary text through their reliance on linguistic metaphors to suggest a particular grasp on concepts of time and space. The understanding of beauty in architecture, based on the two traditions mentioned above, will provide an additional perspective by providing concepts of structure, function and usability. These will echo a final inquiry into mathematical beauty, drawing a direct link between idea and implementation, theorem and proof, and providing a deeper understanding of the concept of elegance .
With a firmer grasp on the stakes of source code as a text to be understood, and on how aesthetics can enable understanding, we turn to its effective manifestations to develop our framework in  Machine languages   . First, we will see how programming languages act as linguistic intefraces to computational phenomena, both from an objective and from a subjective perspective. Considering programming languages as formal grammars will show that there are very different conceptions of semantics and meanings expected from the computer than those expected from a human, even though a machine's perspective on valuable code could still be based around concepts of effectiveness, simplicity and performance. Human use of programming languages reaches into the extreme of esolangs —an investigation into those will reveal that language can be considered as a material, one whose base elements can be recombined to represent specific structures. Working through structure , syntax and vocabulary , we will be able to formalize a set of textual typologies involved in producing an aesthetic experience through source code. Particularly, we will highlight where those experience differ across linguistic communities of practice, and where they overlap, tracing connections between specific textual configurations of source code with the ideals summoned by the programmers. Finally, we will conclude on how aesthetics are both conditioned to the function of the artefacts they are manifested in, and themselves perform a functional role in in epistemological communication, operating through metaphorical references and structural arrangements at various scales.
We will then turn back to our research questions to show how semantic compression and spatial exploration are crucial components of source code aesthetics. Indeed, the specific aesthetics of source code are those of a constant doubling between the specificities of the human (such as natural handling of ambiguity, intuitive understanding of the problem domain, and ability to shift perspectives) and of the machine (such as speed of execution, and reliance on explicit formal grammars). This duality will also be seen in the tension between surface structure, one that is textual and readable, and deep structure, one that is made up of dynamic processes representing complex concepts, and yet devoid of any fluidity or ambiguity. It is this dynamism, both in terms of where and when code could be executed, which suggest the use of aesthetics in order to grasp more intuitively the topology and chronology, the state and behaviour of an executed program text. We will show how particular formal configurations, at the level of vocabulary, syntax, structure and style, ultimately involve the compression of human semantics and computer semantics, in conjunction with the ability to enable non-linear, writerly exploration of the program texts.
Finally, we will relate Goodman's conception of art as cognitively effective symbol system, and of Simondon's consideration of aesthetic thought as a link between technical thought and religious thought. Starting from a practical perspective on aesthetics taking from the field of craft—the thing well done—, aesthetics also highlight functionality on a cognitive level—the thing well thought. Beauty in source code seems to be dominantly what is useful and thoughtful, even when they are reflected in the distorting mirrors of hacks and esoteric languages, broadening our possible conceptions of what aesthetics can do, and what functionality can be.
icon to download the pdf of the thesis