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 three times. Each session will have readings to discuss and an in-class group assignment.
Week 1: The Amiga Years / an Intro to Syntax
An introduction to the formative esolangs: FALSE, INTERCAL (C-INTERCAL), brainfuck, and Befunge, along with a host of derivative languages building on their premises. We will look at syntax, beginning with experiments with tokenizing code.
Reading: The Humble Programmer by Edsgar Dijkstra, https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html (please read before Class 1)
Week 2: Stack-based languages and Multicoding, non-textual languages
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. Meanwhile, multicoding languages like Whitespace and Chef create tension between the human and machine reading of the same code.
Reading: TBA (waiting on permission from the author!)
Week 3: Non-English esolangs, dematerialization in art and language, impossible languages
Discussion of 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. We will also discuss languages that question the dominance of English, and bring the ambiguity of natural languages into the programming space.
Reading: CCSWG discussion of Cree# http://wg20.criticalcodestudies.com/index.php?p=/discussion/71/week-2-cree (more readings to be announced)
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.
Want emails on new cohorts?
Watch this course!