Abstract
The esoteric class of programming languages, commonly called esolangs, have long challenged the norms of programming practice and computational culture. Esolangs are a practice of hacker/hobbyists, who don’t primarily think of their work as art. Most esolangs are experiential works; we understand the languages by writing code in them. Through this action, the logic of the language becomes clear. However, a smaller subset of esolangs make their point not through actively writing code, but instead by simply contemplating their rules. We can think of these esolangs as conceptual rather than experiential. Some are designed in such a way that they don’t allow any code to be written for them at all. By stepping away from usability, the conceptual esolangs offer the most direct challenge to the definition of programming language, a commonly used term which is surprisingly unspecific, and usually understood through utility, despite the fact that programming languages predate digital computers. This paper delves into the conceptual esolangs and looks at their challenge to the idea of programming languages.
Highlights
Esolangs are a subversive practice within computer science, taking programming language design to places far outside of practical utility
Some ask programmers to give up control of which command will fire first (David Morgan-Marr's Whenever) or to encode commands into images (Piet, by Morgan-Marr) or express commands across a 2D plane, to be triggered by lines of code running up, down, to the left or right, or off one side of the page to the other (Chris Pressey's Befunge)
As Deleuze showed in his study of Spinoza, a logical system is not necessarily rational (Lapoujade, Rajchman & Jordan, 2017)
Summary
Esolangs (for "esoteric programming languages") are a subversive practice within computer science, taking programming language design to places far outside of practical utility. Esolangs like brainfuck add the semblance of ambiguity (to us human readers or programmers) through complexity, but the language is still clearly defined in both its syntax and semantics; each brainfuck program still has only one semantic interpretation to the machine. Even this definition fails to separate a language like C++ from the form of English we use to speak to natural language processing systems like Alexa, which likewise translate to computer instructions, but which we would not likely want to categorize as programming language. As many a creative coding teacher has illustrated by having students enact a virtual computer, impersonating the CPU and other parts of the machine, there is nothing about "copy the value from memory cell 103 to register A" that we can't capture symbolically and effectively by transferring a piece of paper from one student’s hand to another
Published Version (Free)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have