Programming Language Structure as Art

NFTs have brought an onslaught of consideration to gifs and other cellular phone-helpful passive media. But not all digital art tactics translate conveniently to singular, collectible assets. Esolangs, programming languages built as varieties of self-expression, are pretty quite possibly the the very least NFT-ready electronic artwork. Open up ended, group centered, and collaborative, they serve as a reminder that electronic art has other histories and other futures.

The time period esolang is a portmanteau of “esoteric” and “language.” It was coined in the 1990s, when hacker-hobbyists commenced developing odd languages with no sensible use. While they experienced small interest in the artwork context of their do the job, they brought a perception of participate in and conceptual sophistication that feels at residence alongside art by the MFA-educated. Then came digital poets and artists who recognized the possible of the medium.

One of the reasons esolangs have remained on the periphery of computational artwork is that they are programming languages, requiring a selected amount of pc-language literacy to realize and recognize. It is my aim to make them accessible and worthy of appreciation to the beginner and unfamiliar. I supply three entry factors drawn from 10 years of interviews I have performed with practitioners across the spectrum. To start with up is multicoding, a approach in which numerous meanings can be gleaned from the exact same textual content. Next, I check out ethnoprogramming, a current challenge to the hegemony of English in the text of code. And at last, we transform to conceptual languages, strategy-art that runs in our heads, not on our machines.


Piet, a laptop language developed by David Morgan-Mar in 1991 and named for Mondrian, is possibly the canonical example of a multicoding esolang, indicating a language that layers multiple readings of a single textual content. In the circumstance of Piet, that “text” is not textual at all, but an graphic that serves as code in the language.

A plan in Piet is an image, created up of blocks of shade known as codels. Each and every codel is like a letter in blend, they build a command. A transition from light blue to dark red suggests “NOT,” while shifting from crimson to yellow of equivalent brightness will tell the machine to “ADD.” The program is read through from the upper left, but some instructions shift its directional movement, permitting serpentine paths by means of the image.

Piet has develop into the most effectively-recognized multicoding language not only for the reason that it is visual, but because of its virtually suitable aesthetic elasticity. Piet packages are usually recognizable as this kind of by people common with the language. Nevertheless its aesthetic is continuously personalized, expanded on, and challenged by the programmers who use it. Some create illustrations wherever only aspect of the picture capabilities as Piet, obscuring its programmatic nature. Other programs are strictly utilitarian, without adornment. The most serious are laptop-produced on their own, showing up like bar codes or schematics for elaborate circuits. Tomas Scoch and Matthias Lutter have utilised it to make Mondrian-like images for Piet’s namesake, though others make heavier use of hues like cyan and magenta eschewed by Mondrian. Just one of the most astonishing, the Pi system by Richard Mitton (mentioned by Morgan-Mar listed here) uses the graphic of a circle to characterize a circle in code. It calculates Pi by pretty much dividing the location of that circle, as drawn in the plan, with the sq. of its radius the larger sized (and thus a lot less pixelated) the circle is drawn, the a lot more digits of Pi can be accurately calculated. This combines the lexical and semantic features of the circle together in a way that could only be achieved in Piet.

There was no way for Morgan-Mar to foresee the directions people would consider his language. The creator of an esolang begins a dialogue with the established of procedures demarcated by the language, but it is the programmers who discover its limits and intricacies. A person parallel is the Oulipian problem to produce without making use of the letter E, which we can endeavor ourselves or notice the solution of a writer by examining George Perec’s novel La Disparition (1969). In the same way, the innovative potential of Piet is in the subject of alternatives it makes, which we encounter by the actual works programmers have developed for it. 

Where Piet’s code is designed up of photos, in:verse packages generate illustrations or photos or relocating written content. Its code doubles as poetry. What is unique in in:verse is its variable lexicon: the mapping of vocabulary to command is distinct for just about every poem (by using a “wordtable”), enabling programmer-poets to finely tune their input and output. To calculate the sine of a quantity, just one method may use the word “alien,” whilst yet another employs “mushrooms.” The most exciting in:verse systems uncover a resonance between their vocabulary and their visible output. Its creator, Sukanya Aneja, is an engineer and artist who built on some traditions of esolanging (in:verse’s stack-centered architecture is related to several early esolangs) while refining it for creative uses. Like Piet, it allows person programmers a ton of regulate, but every single piece is even now recognizable as an in:verse function.

Jon Corbett, “The Ancestral Code” programming interface, with an energetic story “program” (left pane) and an “open feather” code block (appropriate pane) (© Jon Corbett 2021)


Jon Corbett’s language Cree# is element of a new wave of languages explained by theorist Outi Laiti as “ethnoprogramming.” Corbett, who is of Métis heritage, is coming up with the language, which is continue to in progress, to replicate the language and logic of Métis society. But before we examine it in detail, some context is helpful.

In his ebook Important Code Scientific tests, Mark Marino relates the record of programming languages that include vocabulary from pure language. The supply language is practically often English. He argues that “the prevalence of English in the most common modern programming languages signifies … a type of electronic postcolonialism, or the manifestation of a colonizing force beyond the varieties of historical, geographical, or territorial colonialism.” 

Ethnoprogramming is an lively reaction to the phenomenon that Marino describes. An vital precedent for Corbett is Ramsey Nasser’s Arabic programming language ‘alb. Nasser established out to generate a language for Arabic speakers studying to code, but ran into biases embedded in devices he built on, most of which purport to be common but experienced little thing to consider of non-English use as a outcome, his get the job done became a document of that struggle. As he asks in his essay “A Private Computer for Children of All Cultures,” “what is the Pashto translation of AbstractSingletonProxyFactoryBean?”

Corbett, in producing Cree#, desired to go beyond changing English keywords and phrases (commands like “let” and “print”) with Cree keywords in a static checklist. For one thing, Cree is a morphemic language and he desired Cree#’s signifiers to hold programmatic meaning at the syllabic level, which is remarkably unconventional in programming languages. 

To application in Cree#, we will need to have an understanding of not only Cree linguistics but also its cultural logic. To declare a variable (which can be imagined of as a storage location for knowledge), a person must put it in possibly a mînisiwat, a berry bag, or maskihkîwiwat, a medicine bag. If the variable is every day or transient, it would go in the berry bag. If it refers to anything with cultural significance or sacred which means, it goes in the maskihkîwiwat. Each and every time the programmer declares a variable, they decide where by it best matches. The closest principle in mainstream languages is that of variable scope, but Corbett is encouraging the programmer to transition to a worldview that is Cree.

To that finish, each and every Cree# plan is advised in the variety of a story, with a set of standard figures and symbolic steps from Métis storytelling custom, prominently that includes a trickster raven and commencing every software with a gesture of smudging. Corbett also has a variation of Cree# identified as Ancestral Code, created not for common-purpose computing, but in its place as a visible archive to maintain stories from Cree and Métis Elders. Corbett’s nuanced composing about the task examines the difficulties with evaluating what amounts of information can be unfold much more commonly and which are intended to continue being only inside the lifestyle, together with issues of unintentionally incorporating Western views of Indigenous cultures into the language.

Bora Aydıntuğ, “bora_1.png.” This screenshot is of a program in in:verse. It displays each the code and the output of that code (the impression at the rear of it) (courtesy Bora Aydıntuğ)


Is HTML a programming language? This dilemma is elevated just about regularly on Twitter. Even though it is definitely a question of what laptop or computer labor we value or contemplate skilled (and permit it be claimed that html/css get the job done is programming and can be very hard), the actuality that this debate can come about at all factors to the truth that there is no very clear specialized line that demarcates what is or is not a programming language. From time to time 1 is attempted by equating programming languages in general with one thing called Turing Completeness, which roughly usually means the ability of a language to characterize any algorithm runnable on a traditional computer. Turing Completeness is a awful yardstick not only due to the fact of what it excludes but also simply because it provides in all forms of things we wouldn’t contemplate programming languages, which includes, as not long ago proven, human heart tissue

For just about every definition of programming language, there is an esolang that sits at its border. Esolangs blur the line in between computing and other pursuits, significantly like Fluxus gatherings and interventions did in between art and everyday living. George Maciunas’s “Solo for a Ill Man” (1962) recoded the involuntary steps of this regularly sick artist as general performance. For Maciunas, this was portion of his endeavor to obliterate every little thing that experienced develop into synthetic in art. If we can not draw a line separating art and existence, maybe the identical is accurate of computation. We see this in the “found” esoteric languages, built by no just one and still serving as computation from human coronary heart tissue to Martin Kleppe’s JSFuck, an esoteric programming fashion in JavaScript that uses only punctuation marks. JSFuck was normally latent in JavaScript, made by blunder it took Kleppe to acknowledge it and display others how it works. Now it is a common esoteric type.

In the conceptual languages, no programming can occur. Some of these languages are really minimalist or maximalist. Possibly the most minimal is Pointless, established in 2005 by a pseudonymous esolanger called Keymaker. For Avoidable, any articles is as well a great deal, even an vacant file only the absence of written content qualifies as code within just the language. The only valid application in the language is the file that doesn’t exist. As soon as that file is (accurately) not observed, it is operate: its deficiency of code is interpreted as a command to print the resource code of the file to the monitor, which outcomes in nothing at all given that there is no file to go through, no code to print (this is regarded as a “null quine”). The development of very little from absolutely nothing is a productive outcome for Unnecessary.

In distinction, the mathematician David Madore has produced a collection of transfinite languages that crack essential laws of computation and can depend to the infinite. They do so by managing on an infinitely massive computer system, which can never be built in our bodily universe. When no a person will ever code in them, they are perfectly legitimate, well-outlined languages.

These conceptual languages do not run on our desktops, but in our heads. Other conceptual languages may rely on self-contradictory, or intentionally ambiguous, guidelines. The language Malbolge, for instance, has a written definition that a little bit differs from its agent compiler, each created by Olmstead. Since there is no singular digital asset that defines the language, this contradiction produced a schism in the group between all those who imagine the bug is in one particular or the other. Any individual can build their personal Malbolge interpreter that aligns with both.

This is why esolangs are badly served by the idea of NFTs. Of course, sooner or later, a person will create an NFT of an esolang. But think about doing so for Piet: would it be tied to the listing of principles for the language as described by Morgan-Mar? To a single of the numerous interpreters and programming environments some others have designed for Piet programming? Or to any of the 1000’s of Piet courses? 

Section of what can make esolanging enjoyable is that interchange between a lot of contributors, the knowledge that the language has much more to discover. Although no just one special discounts Morgan-Mar as Piet’s creator, his function finds its whole expression by others’ efforts. Similarly, conceptual languages with applications from the infinitely massive to the infinitely compact challenge the plan of digital objecthood, emphasizing thought, system, and method, at the expense of static variety. The best esolangs, like significantly good digital artwork, are conversations.

Editor’s Observe: This short article is section of a particular version of Hyperallergic devoted to under-recognized art histories.