Esoteric Programming Languages: Art, Absurdity, and Computational Exploration
TL;DR
- Esoteric programming languages (esolangs) challenge conventional ideas of code's purpose and audience, moving beyond mere utility to explore aesthetics, absurdity, and conceptual art.
- Esolangs like Pete, which allows code to be written as images, demonstrate that programming languages can be a medium for artistic expression and personal style.
- The design of esolangs often involves extreme constraints, such as Brainfuck's eight commands, which forces complex algorithmic translation and reveals profound insights into computational thinking.
- Conceptual artists' distinction between a "concept" and an "idea" informs esolang design, where prompts can be detailed enough to be realizable, leading to unexpected yet inevitable outcomes.
- Languages like "Folders" utilize file system structures to represent code, highlighting how abstract concepts like Turing completeness can be achieved through unconventional, even seemingly empty, means.
- Esolangs like "Past Tense" subvert the executability of code by transforming verbs into past tense, questioning the fundamental nature of a program and its temporal relevance.
- Site-specific languages like "Stroll" require human interpretation of real-world elements, demonstrating that code can be ephemeral, context-dependent, and intentionally unpredictable.
Deep Dive
The discussion begins with a brief mention of Text Control, a library for document editing and PDF generation, highlighting its commitment to building and supporting a strong developer community through user engagement and knowledge sharing at conferences.
The conversation then shifts to Daniel Temkin and his book, "44 Esolangs," described as a monograph of esoteric programming languages and a love letter to "weird coding languages." Temkin explains that the book is intentionally written with language accessible to both programmers and those in the art world, using terms like "monograph" to signal its nature as an art book and referencing conceptual artists to bridge the gap for an artistic audience. He aims to show that esolangs offer more than just puzzle or joke languages, emphasizing their potential for deeper aesthetic exploration, citing "Pete" as an example where programmers can develop their own visual style within the code.
Temkin discusses the nature of the esoteric programming language community, noting that while many programmers are familiar with a few esolangs and some high school or college students create them for learning purposes, the community of regular producers is smaller. He shares his personal motivation for starting his blog, "Esoteric Codes," around 2007-2008, which was to move beyond the highly technical and often confounding documentation of languages like Brainfuck. His blog aims to explore the ideas behind these languages, their influences, and the concepts they explore, interviewing digital poets and artists whose work intersects with esolangs to foster a broader conversation and encourage more creative work.
The conversation touches upon how some esolangs were initially introduced to programmers, such as Befunge in a compiler class in the 1990s, not as art, but as a way to explore the complexity and challenge of programming, sometimes in a "mean-spirited" way. This contrasts with the desire for more accessible and aesthetically pleasing languages, like those that might "look like QR codes" or be "fun."
Temkin explains that the languages discussed in the book often explore constraints and push the boundaries of programming language design. He uses the analogy of a program as a "performance score" for a computer, drawing parallels with conceptual art and Fluxus. He posits that programming languages define the lexicon, grammar, and abstract machine logic of code, and explores what happens when this is "unmoored" from practicality and physical machines.
The book includes languages that are theoretical and not fully implementable, either due to logical contradictions or because the prompt itself is considered sufficient. Temkin differentiates between the "concept" and the "idea" of a work, drawing from conceptual artist Sol LeWitt, where the "idea" fills in the details. He notes that the realization of these prompts can lead to unexpected but inevitable outcomes based on the initial definition.
A point of discussion arises regarding the term "prompt," as Temkin acknowledges its co-option by AI culture. He clarifies that the prompts in his book, many written before AI coding became prevalent, are "pitches" for languages, not instructions for a chatbot, and feeding them into current AI systems would likely yield only mediocre results, as AI tends to find statistical means rather than being truly creative.
The conversation delves into the cognitive aspect of coding and appreciating art, with Temkin describing how his hemispheres felt "fighting" when contemplating languages that challenged conventional programming. He highlights "12 Folders" as an example, a Turing-complete language inspired by "Whitespace" that uses empty folder structures to represent code. He explains its mechanics, where folder names and hierarchy dictate commands and expressions, and notes its original implementation in C# for Windows, where empty folders are treated as taking up zero bytes, leading to a peculiar form of "infinite storage" through folder names. He also speculates on the potential to "de-DOS" cloud services like OneDrive or Dropbox by synchronizing millions of empty folders.
Temkin describes how many esolangs emerge from the constraints of programming languages and pushing their edges. He introduces "Past Tense," a language where existing code is transformed by converting verbs to their past tense, rendering the program unrunnable and effectively placing it "in the past." He explains that if a compiler were created for "Past Tense," the programs would cease to be valid as they would be brought back into the present and made runnable, violating the language's core principle.
"Stroll," language 33 in the book, is presented as a favorite, inspired by spy movies and requiring human interaction in a physical space. Temkin explains that "Stroll" uses "red," "green," and "blue strollers" to represent code execution and data manipulation. The red stroller handles constants defined by street names, the green stroller points to memory blocks, and the blue stroller is critical, as its code is unique to each person and requires on-site interpretation of elements like tree species or street inclines, making the language "site-specific" and "ephemeral." He notes that lifting the program to a different location would yield different results, and changes in the environment could affect its execution.
The discussion then broadens to non-English programming languages. Temkin explains that languages are created in non-English tongues for educational purposes or to challenge English's dominance in coding. He mentions "Alb" or "Calb" by Ramsey Nasser, an Arabic Lisp that encountered biases in underlying technology when working with a right-to-left language and technical term translation issues. He also discusses "Yorlang," a Yoruba language created by a Nigerian programmer who wanted to code in his native tongue after a day of working in English, and "Cree Sharp," a multimedia storytelling language using Canadian Aboriginal syntax characters. Temkin is currently collaborating on a language with John Corbet that uses single, pronounceable characters with complex swoops and ascenders to represent lines of code, with the character's drawing style influencing its execution.
The question of whether esolangs could "graduate" to mainstream use is raised. Temkin suggests "Yorlang" as an example that could be used in mainstream code due to its clear performance from text, unlike languages intentionally designed to be obfuscated. He notes that while it wouldn't have the same support as languages like C#, it represents a potential starting point for broader adoption.
Finally, the conversation turns to the first identified esolang, "INTERCAL" (compiler language with no pronounceable acronym), created in 1972. Temkin describes INTERCAL as a parody that makes coding difficult, featuring a "please" operator that ignores programs if "please" is used too little or too much. He mentions interviewing Don Wood, who recently found the original INTERCAL compiler code. Temkin's language "Olympus" in the book was inspired by INTERCAL's personality-driven approach, featuring Greek gods who might ignore programs if displeased, requiring commensurate praise for requests. He notes that Zeus might ignore the program, while other gods continue, creating unpredictable execution flows. He relates this to the "demo gods" that can affect presentations. The book, "44 Esolangs," is available from MIT Press, and Temkin is on a speaking tour.
Action Items
- Create a personal "esolang exploration" project: Implement 1-2 esoteric languages from the book (e.g., "12 Folders," "Past Tense") to understand their design principles and constraints.
- Draft a "language design principles" document: Outline 3-5 core concepts for creating novel programming languages, drawing from the book's exploration of absurdity, constraint, and humor.
- Analyze 3-5 esolangs for artistic merit: Evaluate their potential as conceptual art, focusing on how they challenge conventional ideas of code and computation.
- Measure the impact of esoteric language concepts: Explore how constraints in esolangs (e.g., limited commands, unique syntax) foster creative problem-solving and unexpected outcomes.
Key Quotes
"What happens when code stops being useful and starts being art? Scott talks with artist and programmer Daniel Temkin about his new book Forty-Four Esolangs, a deep dive into the world of esoteric programming languages...systems designed not to ship software, but to provoke thought."
Scott Hanselman introduces the core concept of esoteric programming languages (esolangs) as explored in Daniel Temkin's book. He highlights that these languages are not intended for practical software development but rather as a medium for artistic expression and intellectual provocation. This framing immediately sets the stage for understanding esolangs as a distinct category of programming, separate from their utilitarian counterparts.
"I feel like esolangs have in terms of how they're presented in public they often fall back into a kind of listical thinking where it's like oh here's a wacky programming language here's another wacky one but what if one might be writing code in the style of arnold schwarzenegger which doesn't really give a lot of room for for exploration and another one might be creating code in the form of images like the language pete that language allows for individual programmers to bring their own visual style to code and to really sort of stretch the aesthetics of of the pete language and find their own style within it and it it's much richer in terms of the exploration that it does and so with this book i i'm really hoping to show people that there's more to esolangs than than they might have realized"
Daniel Temkin explains his motivation for writing the book, which is to elevate the perception of esolangs beyond mere novelty or programming jokes. He argues that many esolangs are presented superficially, like a list of curiosities, but that some, like Pete, offer profound aesthetic and creative possibilities. Temkin aims to demonstrate the depth and richness of esolangs as a form of artistic exploration, encouraging a more nuanced appreciation.
"I got into esolanging kind of like 2007 2008 and at the time the documentation was very technical you can go to the esolangs wiki and if you look up one of the most common esolangs brainfuck but what does it tell you about this it tells you the name is offensive to some people the second thing it tells you is that it starts with a memory block of 30 000 memory cells these are like the least interesting things about the language what's interesting about the language is that because there are only eight commands you have to translate your algorithm into these very simple steps which creates this great complexity of meaning almost immediately when you jump into the language and that people have done some sort of amazing things in this language someone built a web server that that runs in this it's very slow but all the stuff is is very impressive"
Daniel Temkin describes his early experiences with esolangs and the common pitfalls of their documentation. He contrasts the technical, often uninteresting details found on wikis with the true conceptual power of languages like Brainfuck. Temkin highlights how the extreme constraints of Brainfuck, with its limited commands, force a complex translation of algorithms, leading to impressive and unexpected applications like a web server.
"The concept of a work is somewhat hand wavy it's sort of the initial it's the initial concept it doesn't have all the details filled in but it gives the what the flavor of the work is and what the work is about but then the idea fills in all the details and it still doesn't mean that the thing becomes a physical object it could still just be an idea alone but it has the details filled in that now it's much more specific and and that's really what i wanted out of the realization is filling in all those details because often there it's surprising the decisions made in that in that prompt can lead to things in a realization that are sort of unexpected but are sort of inevitable because of of the of the because of what's defined in the prompt itself"
Daniel Temkin draws a parallel between conceptual art and the design of esolangs, referencing Sol LeWitt's distinction between "concept" and "idea." He explains that his book presents "prompts" (concepts) for languages, and the "realization" involves filling in the specific details (the idea). Temkin emphasizes that this detailed realization, even if not physically implemented, captures the essence of the language and can lead to surprising yet logical outcomes derived from the initial concept.
"The first language that's generally considered an esolang now and whose authors consider it an esolang would be intercal from 1972 intercal is an interesting language because it it's a parody of languages of its time but it still holds a lot of power in how it sort of comments on on like the experience of coding it certainly makes coding difficult"
Scott Hanselman identifies INTERCAL (compiler language with no pronounceable acronym) as the first generally recognized esoteric programming language, created in 1972. He notes that INTERCAL functions as a parody of contemporary programming languages, yet it retains significant commentary on the coding experience by deliberately making programming difficult. This establishes a historical precedent for esolangs and their critical, often humorous, engagement with programming paradigms.
"The red stroller is going from intersection to intersection and the green stroller from block to block and the green stroller is pointing to a space in memory that's represented by that block and based on what the red stroller and the blue stroller do data can be written to that block or read from it the red stroller is in charge of all the constants and those are really defined by the street names at each intersection but the most critical stroller is the blue one and the main thing about the blue one is that the way that their code is read is unique to that person and they can define it themselves in a way that might be totally different than another stroll program the only critical thing about it is that it has to be something that you can only learn by being there in person"
Daniel Temkin explains the mechanics of the esolang "Stroll," which requires human pedestrians to execute code. He details the roles of the "red stroller" (handling constants based on street names), the "green stroller" (interacting with memory blocks), and the crucial "blue stroller." Temkin emphasizes that the blue stroller's code interpretation is unique to the individual and must be learned through direct, in-person experience, making the language inherently site-specific and ephemeral.
Resources
External Resources
Books
- Forty-Four Esolangs by Daniel Temkin - Mentioned as a monograph exploring esoteric programming languages, aimed at both programmers and artists.
Articles & Papers
- esoteric.codes - Referenced as Daniel Temkin's blog where he interviewed esolang creators about their ideas and influences.
People
- Daniel Temkin - Author of "Forty-Four Esolangs" and artist/programmer focused on esoteric programming languages.
- David Morgan Mar - Creator of the esoteric programming language Pete.
- Chris Pressy - Mentioned as a figure in the space of esoteric programming languages.
- Don Woods - Interviewed by Daniel Temkin for esoteric.codes regarding the original Intercal compiler.
- Ramsey Nasser - Creator of the Lisp language Alb (or Calb) made in Arabic.
- John Corbet - Collaborating with Daniel Temkin on a multimedia storytelling language using Canadian Aboriginal syntax characters.
Organizations & Institutions
- MIT Press - Publisher of Daniel Temkin's book "Forty-Four Esolangs".
Other Resources
- Esoteric Programming Languages (Esolangs) - Systems designed to provoke thought rather than ship software, explored as art.
- Pete - An esoteric programming language that allows programmers to bring their own visual style to code.
- Brainfuck - An esoteric programming language with eight commands, requiring algorithms to be translated into simple steps, creating complexity of meaning.
- False - An esoteric programming language that inspired other languages by using single characters for commands and allowing non-left-to-right reading.
- Funge - An esoteric programming language inspired by False, allowing commands to be single characters and reading in multiple directions, with a focus on being difficult to compile.
- Whitespace - An esoteric programming language that uses only tab, space, and return as meaningful characters.
- 12 Folders - A Turing-complete esoteric programming language where the file system structure, specifically empty folders, is used to represent code.
- Past Tense - An esoteric programming language where text in a program is converted into verbs and then into the past tense, making the program unrunnable.
- Stroll - An esoteric programming language that requires human beings to navigate a city or town to realize instructions, using elements like street names, tree species, and inclines.
- Thermo C - An esoteric programming language with glyphs resembling Wingdings or Stargate.
- Alb (or Calb) - A Lisp language made in Arabic, designed to challenge English as the dominant coding language.
- Yorlang - An esoteric programming language made in Yoruba, intended for coding in one's native tongue.
- Cree Sharp - A multimedia storytelling language using Canadian Aboriginal syntax characters.
- Intercal - The first generally considered esoteric programming language (1972), a parody that makes coding difficult and includes a "please" operator.
- Olympus - An esoteric programming language inspired by Intercal, featuring eight Greek gods that influence code execution based on praise and requests.