icon to open the header menu


Overall, this thesis has aimed at showing that the specific formal properties of source code have a functional pupose of enabling epistemic action based on understanding of a machine language and a problem domain, itself conjugated in various contexts.
Source code, as the base of software, belongs first and foremost to the technological realm, embodying a function and an intent of what should be achieved. Its aesthetics are thus inscribed within this technological essence by enabling the communication of the complex ideas which constitute the basis of software (its ideal version, as opposed to its implemented version, and its process of implementation, as opposed to its result).
While psychological studies and consolidated practical knowledge have shown that particular kinds of layout and presentation are beneficial to program understanding (see section  The psychology of programming   ), this is only one aspect of the system of aesthetic properties. Aesthetic values in source code are also based on the context in which said source code is written or read. These values, while varying, are nonetheless recurrently depending on a skilled relation with the program, the machine, and the audience of the program, as well as the intent of the use.
In order to achieve this epistemic function, and due to software's ambiguous nature as an abstract artifact (see  Software as abstract artifact   ), a variety of aesthetic domains are summoned by programmers in order to make sense of what they describe as occurences of software beauty. Looking specifically at the overlap of these domains, we have shown that each aim at facilitating a transition between the surface-level syntax immediately accessible to the reader to the deep-level semantics of the topic at hand. Respectively, literature aims at evoking themes and narratives (section  Representing textual worlds in literature   ), architecture aims at evoking atmospheres and functions (section  Function, style and matter in architecture   ), while mathematics tries to communicate theorems (  Aesthetics and heuristics in mathematics   ) and engineering focuses on structural integrity and efficiency (  Aesthetics as heuristics   ), with all domains above modulated by an approach to craft as a personal, hands-on skill.
From the perspective of aesthetic theory, these findings also contribute to a conception of aesthetics as a communicative endeavour. Specifically, we have shown that the concept of aesthetics amongst programmers is not seen exclusively as autotelic, but rather as a possible means to accurately represent something to someone , which falls in line with the works of Goodman and Parsons and Carlson ( Goodman, 1976 Parsons, 2012) . As such, source code aesthetics acts as an expressive interface between a concept, a technology and two distinct individuals. Located within the particular techno-social environment of source code, this communicative role is also subject to relatively clear assessments of success or failure. A successful communication is a communication which is correctly interpreted, whereby the original ideas transmitted from the writer via the program text are found in an equivalent representation in the reader, and enable further effective action. Here, the interpretation is, at minima, what the program does, and what the program intents to do, things that might not always be aligned, resulting in the provision of agency in correctly predicting the implications of the program's operations and in the ability to correctly modify the program.
The contributions of this thesis have therefore been in the development of an aesthetic understanding of source code through an interdisciplinary analysis of a discourse analysis, drawing across media studies (from literature to software studies), science and technology studies and aesthetic philosophy. These discourses were composed of a corpus of both program-texts and commentaries and analyses by practitioners of those program texts—analyzing 65 selected source code snippets. In this sense, we have extended on the contributions of Paloque-Bergès and MacLean and Cox by applying on their concepts of double-meaning and double-coding and showing how this co-existence of computer meaning and human meaning extends beyond the more creative writings of source code, and across communities of source code writers (see  Between humans and machines   ).
In doing so, we have also confirmed and extended Piñeiros' work on describing code aesthetics as instrumental action, bridging his field of research of software developers with other kinds of source code, and confronting it with specific example. While Piñeiro's work thoroughly explores programmers' perspectives and discourses, it does not extend its findings to other aesthetic practices mentioned by programmers—by connecting it to related field, we inscribe the practice of programming within a wider field of creative practices.
We proposed a conceptualization of code as semantic matter, from which executable structures are built. This approach builds on Katherine Hayles' distinction between the media properties of print and code—the former being flat, the latter being deep—and has shown the aesthetic implications of such a distinction. The contribution was to enrich our understanding of what code depth is made of, and how surface-level syntactical tokens enable the creation of deep conceptual structures.
Based on Cayley's scalar approach, we offered a typology of aesthetic properties in code, based on the purpose of aesthetics as a communicative endeavour with specific outcomes (see  Matters of scale   ). At the level of structure, we saw that folder and file structure first provided a macro level of familiarity with the kind of application being developed, relying on convention and family resemblance , that data modelling offered an expressive way to communicate the important aspects of the problem domain being operated on, and that groups of statements resulted both in local coherence of operations and conceptual symmetry as these operations were repeated across the program text. At the syntax level, it is the programming language which influences the aesthetic experience of the programmer, by involving both idiomatic writing and linguistic references, as a way to demonstrate concise and precise knowledge of ones tool. Finally, the level of vocabulary enables the most expressiveness for the programmer, with both typographical parameters such as character length and casing, but also grammatical parameters, such as naming functions as verbs and variable as nouns, ultimately enabling a practice of double-meaning .
This complements the perspectives provided in Oram and Wilson's edited volume ( UNKNOWN AUTHOR, 2007) . Instances of beautiful code have been given a practical framework as a way to idenfity positive aesthetic properties, beyond their praise by highly-skilled professionals.
Through an empirical take, we have also qualified how Florian Cramer and his approach to source code as a form of magic relies on very concrete technical processes and habits across practices of source code writing. Building on the work of Alfred Gell describing art as the enchantment of technology, we have explicited what exactly are the complex technical hurdles and associated skills required to understand software (section  Software complexity   ). If there is magic in software, it is also manifested through the artistic appreciation of source code, particularly through hacking (section  Hackers   ) and code poetry (section  Poets   ), and examplified in works like forkbomb.pl  (see listing    ).

        my $strength = $ARGV[0] + 1;

        while(not fork){
            exit unless -$strength;
            print 0;
            twist: while(fork) {
                exit unless -$strength;
                print 1;
        goto 'twist' if -$strength;

- An artwork in the exhibited sense of the term, displaying conciseness and metaphorical expression along with expressive power through its technical expansion, all the while breaking the expectation for a program not to overload the hardware on which it runs.
In fact, forkbomb.pl  is a program whose function is to replicate itself until the computer on which it run crashes. By subverting the expectation of what a functional artefact should do, what is allowed, and what is not, this program text suggests more fundamental questions about what we expect from automatic productive processes. Nonetheless, it also gains artistic value from using the aesthetic devices of compression and double meaning, particularly in the use of my $strength  variable name.
Finally, this thesis has contributed to a text-based approach to software aesthetics, as compared to execution-based approaches, in which source code syntax and semantic tend to be secondary. Within those studies of code-dependent aesthetics, such as interface design ( Fishwick, 2002) or creative coding ( Cox, 2020) , the aim was to provide an account of what code, considered as the material of software, offers in terms of representational specificities to enrich and complement those studies. Without directly contradicting any of the work mentioned in our literature review (see  Literature review   ), our conclusions offer a detailed account of the material origins upon which subsequent interpretations of code are based.


The first and most obvious of the limitations of this work is that a lot of source code is not accessible. While originally a freely-circulating commodity, the emergence of proprietary software at the dawn of the 1980s (see  Software developers   ) has drastically limited free and open access to source code. As such, most of the source code written by software engineers in a commercial context remains confidential. For hackers, due to the nature of the work as an ad hoc and localized practice, few examples are made publicly available, as they are often enmeshed in more commercial projects, themselves subject to property restrictions, or in personal, ad hoc projects.
Speaking of who writes program texts, we have not engaged with a kind of writing agent which, at the time of writing, remains relatively new. Large Language Models (LLMs) have shown a particular propensity to mimic human writing by operating a statistical lexical rendering of input text. Since the input text of these LLMs also includes source code, they are able to generate source code which achieves various degrees of ready-made functionality. Source code generation by these LLMs open up new questions which we have not addressed here, notably about natural language conversation as an interfacial affordance for source code, stylistic choice as a probabilistic result or individual choice, and the use and re-use of source code within non-commercial and commercial contexts, among others.
Another limitation is the expertise level required not just in programming, but in idiomaticity—that is, in knowing how to best phrase an action in a specific languages, as addressed in subsection  Styles and idioms in programming   —and, to a lesser extent, in the relevant problem domains. This implication of having already a solid grasp on the technical and problem context for an aesthetic judgment can have affected the accuracy of the analyses that I have given in this thesis. Consequently, it is inevitable that other experts programmers might have different opinions given their personal styles and backgrounds.
Finally, our focus on the knowledge-component of both aesthetics and source code has led us to venture into the application of cognitive sciences to fields such as programming, literature or architecture. Since this is still a burgeoning endeavour of active research, some of the connections evoked by the current literature between code and cognition, or beauty and cognition are still bound to evolve.
icon to download the pdf of the thesis