March 2021

from the previous doc

The immediate next aspect that I will be focusing on is therefore to highlight the aesthetic criteria which support two other communities of practice: hackers and artists.

the overarching point

aesthetics matter, even in such a highly formal, syntactical, autotelic system as a computer

how does it contribute to the world? by showing that there is no separate domain of aesthetics, but also that they’re not essential, but a mark of high-quality

0 - main points

first i want to touch upon cursory work in source code poetry (paloque berges), and connect that to metaphor and literary tradition. then i want to talk about hacking (demoscene, folies, one-liners), and then connect that lack of aesthetic concern (qualify! different kinds of aesthetics) to the question of “what is there to understand” and therefore the question of semantics. i will close by exploring the different concepts in programming that are hard to communicate.

CONCEPT: semantic compression

CONCEPT: spatio-visual problem solving

CONCEPT: concepts to communicate? the stream? the map?

this is not so much about code aligning with standards of literature, but maybe aligning to the standards of both epistemology and architecture, architectural knowledge

source code poems

Close-reading of source code poems?

helps in setting the boundary between art and aesthetic.

A work of art has a character and a content, including formal (balance and unity), aesthetic (gracefulness, garrishness), expressive (melancholy, cheerfulness), representational (a woman, a data structure), semantic (meaning, metaphor), and symbolic (death, life, disintegration) (budd, aesthetic essence).

look at a couple of code poems based on this.

use goodman’s languages to distinguish source poetry from regular code


Denotation is standing for, symbolizing.

A depiction is system-relative, more specific as to its target. Depiction is generative: interpreting one picture allows us to interpret others. allows us to interpret and understand foreign objects. (like the stream)

A depiction is a predicate: that is, it’s not passive, it actively constitute its subject/target.

double-coding in art code is a kind of metaphor, closer to litterature than in other code texts.

the place of metaphor

beardsley: metaphor can have a designative role. a metaphor gives two ideas instead of one (john crow ransom, p.263), which adds a “local texture of irrelevance”, inserting a “foreign” component. it can also have a connotative role, where the meaning is peripheral.

rich metaphor (source code poetry) vs. banal metaphor (softdev). the metaphor transforms a property into a sense. -> these are the metaphorical degrees of meaning.

the question of operational meaning vs. denotational meaning should be explored. what means what to the computer?

touch on the relationship between abstraction and metaphor (does metaphor require abstraction??)

[La littérature] permet de penser des choses qui sont difficile à penser autrement. p. 17 (terrence cave)

elle est un objet de connaissance, aussi bien sensuel que conceptuel, with an inter-relation between rational thought and imaginative thought. (+ daily life aka reader’s semantic field)

en gros, la littérature décuple notre imaginaire, en particulier en recréant des sensations par le texte. mais quid? quand il s’agit d’un matériau qui n’a pas de sensations

*CONNECTION TO NEXT PART: metaphores are (a sort of) architecture of thought

question du caché et du manifeste dans le code?

la programmation est fiction (elle n’existe pas, ontologiquement, c’est l’expérience d’imaginer des contenus dont on n’est pas la source, et d’être—plus ou moins guidé—dans son imagination), et non-fiction car elle est essentielle au problèmes concrets: il est approprié de la traiter des deux manières, possiblement simultanément. c’est en cela que le cadre de la programmation diffère du cadre fictionnel. c’est tout de même un cadre pragmatique de traitement des représentations, au sens où il impose une étiquette cognitive (manière de penser), émotive et pratique. (pas certain de l’émotif, pour la prog).

the connection to architecture (and style/structure)

sir henry wotton on architecture: “commodity, firmness and delight”, which could also be linked to programming. (in beardsley, aesthetic experience)

one of beardsley’s requirements for the aesthetic is “felt freedom” which matches the “feeling alive” sentiment of alexander, which occurs in a good place?

REF: patterns of software

a class within a class link is a visual/spatio-mental pattern which means “complexity”, “unmaintainability”, “unsustainability”

bad patterns make possible the kind of actions which result in bad patterns?


beauty in inscrutability?

Hackers -> this redirects to the understanding of the machine (e.g. trying to reduce character counts for one-liners)

beautiful languages (PL theory/research)

a special kind of symbol system

PL as notations are compared to English language, since they both have constructs of different types and different scales (sonnet, essay, note, etc.). I argue that there are some constructs that can be considered patterns? Because then aesthetic standards could be thought of as very narrow patterns. (sethi)

The difference among programming languages are not quantitative differences in what can be done, by only qualitative differences in how elegantly, easily and effectively things can be done.

Beautiful languages:

Simplicity enters in four guises: uniformity (rules are few and simple), generality (a small number of general functions provide as special cases a host of more specialized functions, orthogonality), familiarity (familiar symbols and usages are adopted whenever possible), and brevity (economy of ex­pression is sought). p. 20


semantics imply how variables and functions “should” behav (sethi)

The question of programming languages is: are there symbol systems which perform better than others? Under what standards? (from goodman)

when we talk about esolangs, we are designing a perspective for someone to think through. -daniel temkin src

programming has moved over time from prescribing computers (application domain) to describing problems (problem domain), such that we center less and less around the specificity of the computer, and more and more around the specificity of the problem. (milner)

and the meaning of a formal expression can, with great difficulty and clumsiness, be explained, but the conceptual content still eludes the computer, varying from the mundane (e.g. a counter) to the esoteric (e.g. a wish). as such, even the highest-level code, as beautiful as it is, cannot deal with new environments

semantics themselves are based on domains (wiki “a specific place that shares a set of meanings, or a language that holds its meaning, within the given context of the place.”)

In fact, one of the biggest differences between object-oriented and non-object-oriented programming is the possibility to identify the actor of an action using purely syntactic means. (sustrik)

PL are treated as “ as texts subject to mathematical manipulation” (wirth, essence of PL, p.3)

In programming languages, variables are truly variable, whereas variables in mathematics are actually constant (ibid)

and wirth is actually saying that we don’t really need to understand implementation (how the computer does it)

more wirth:

Stylistic arguments may appear to many as irrelevant in a technical environment, because they seem to be merely a matter of taste. I oppose this view, and on the contrary claim that stylistic elements are the most visible parts of a language. They mirror the mind and spirit of the designer very directly, and they are reflected in every program written. (p.8)

however, he’s talking from a scientist’s point of view, his anecdote of struggling to learn Smalltalk is proof: he wants to understand before experimenting.

[Programmers] saw them as coding schemes by which to feed instructions more efficiently into computers, rather than as notations for designing new, abstract artefacts.

Before closing, let me mention another essential ingredient, one that hardly ever gets mentioned: It must be a pleasure and a joy to work with a language, at least for the orderly mind. The language is the primary, daily tool. If the programmer cannot love his tool, he cannot love his work, and he cannot identify himself with it. (craftsmanship)


a theory of software dynamics (software as a pattern of syntactical form (see Suber, 1988)

another concept TYPES

another concept LINKS

a program is a cognitive artefact, which can be understood on three different levels, according to Moor:

Implementation as:


semantic understanding is:

Semantics is the decoration of parse trees/ASTs (which is the process of evaluating attributes, which can be either synthesized or inherited). Since decoration is the addition of a new layer (a semantic layer) on top of a base layer (a syntactic one), then this leads to some sort of meta-programming. It happens at a higher level, indeed, but it is still restrained to the fact that it is, indeed, programming (therefore syntax based?). (M. Scott)

software is a model, a medium of thought, an environment (Mahoney, 2011)

in order to understand a computer program, we need to give it meaning, that’s what always happens: “distinguishing from noise is something that literature does” (Suber, 1988, p.97)

the question “what does a Turing machine do?” has n+1 answers. 1 syntactic, and n semantic (however many interpretations)s

additional aesthetics

beardsley: aesthetic point of view

Gratification is aesthetic when it is primarily obtained primarily from attention to the formal unity and/or the intensity of regional quality.

also the concept of “rules of relevance”: when is an aesthetic experience relevant?

his implication is that there are other point of views than the aesthetic one (what is the one in hacking?)

the most important and relevant of his criteria for the aesthetic experience is “active discovery” -> imaginative realization (budd)

goodman as a prelude to aesthetic cognition:

In the aesthetic experience, the emotion functions cognitively (goodman)

carroll makes a point for a content-first approach to aesthetics: Aesthetic judgments in code aren’t disinterested: they’re vested in being able to understand.

cognitive aspects

the MIT study on reading code:

The emphasis placed on the symbolic, cognitive, planning aspects of the arts leads us to give value to the role played by problem-solving, seeing there a model in terms of which the moment-to-moment artist’s behavior at work can be described. “An analysis of behavior as a sequence of problem- solving and planning activities seems to be most promising […]” (goodman)