Explore programming languages that eschew practicality and challenge received ideas of what computation is and how languages are designed — from obfuscatory to minimalist to non-textual and beyond.
An introduction to the strangest ideas in computation and an examination of programming languages as a means of self-expression
A programming language is a system; a way of thinking. It is an open-ended artwork. Programmers experience the language by writing code in it; and by writing code, they must understand the ideas of the language. It is participatory, collaborative, and performative. It upholds the promise of digital art as a "dematerialized" artistic practice, yet it need not be digital at all. This class will explore languages that challenge computational norms.
This will meet five times. Each session will have readings to discuss and an in-class group assignment.
Week 1: The Amiga Years
An introduction to the formative esolangs: FALSE, INTERCAL (C-INTERCAL), brainfuck, and Befunge, along with a host of derivative languages building on their premises.
READINGS: Dijkstra's "The Humble Programmer," an except from Wendy Chun's "Programmed Visions"
Week 2: Lexing, Stack-based languages, Computational Idealism
In the legacy of FORTH and Befunge are the Stack-based languages, eschewing variable names to make non-textual coding possible. The languages Piet and Alice expand on Befunge's promise to create visual 2D languages.
Computational idealism: what ideas do esolangs actually challenge and how? Looking at the Fluxus event scores for inspiration, we will review esolangs that refuse computation.
READINGS: "Computational Idealism" by Beatrice Fazi
Week 3: Multicoding
Multicoding languages like Whitespace and Chef create tension between multiple readings of the same code, including interpretations by the human and machine interpreter. Looking to Oulipo for inspiration, we'll consider esolangs as constraint sets for "reverse generative art," where the human programmer, not the computer, generates variations based on rules.
READINGS: "Chef and the Aesthetics of Multicoding" by Daniel Temkin
Week 4: Code and Natural Language
We will discuss languages that bring the ambiguity of natural languages into the programming space, or challenge the dominance of English. This will be discussed in the context of natural language processing and natural language programming; previous attempts to address the complexity of the natural world in logical language.
READINGS: "FLOW-MATIC" by Mark Marino, Interview with John Corbett
Week 5: Dematerialization in art and language, impossible languages
Accidental Turing Completeness shows the absurdity of using automata theory to decide what is a language or not. We will look at languages that sit on the border of being a programming language or not. Impossible languages might be theoretically valid but impossible to code, or are built on rules that are self-contradictory. We will view these in the legacy of Conceptual Art and experimental poetry.
READING: "Null Code" by Nick Montfort
Everyone will leave with an idea for a new language!
Anyone curious about esolangs who wants to know more about what it's all about!
A comfort with coding and an open mind about what constitutes programming.
If you know JavaScript, some of the examples will be easier to work with. However, this is open to programmers of all levels.
Everyone should walk away with a somewhat developed concept for a language. We will not be implementing the language, but we will critique concept, design, and programmability for each idea.
Want emails on new cohorts?