On this page:
7.1 What Is This Assignment’s Purpose?
7.2 Reading
7.3 The Concern
7.4 Task
7.5 What to Turn In

7 Esolangs🔗

7.1 What Is This Assignment’s Purpose?🔗

Esolangs, short for esoteric languages, are a fascinating niche of the programming languages world. They also show how easily we can build and deploy whole new languages, which is vastly harder with natural languages.

GenAI is another very interesting player in the programming languages world, with significant concerns about the impact it might have.

This assignment will put these two aspects together, exploring their intersection.

7.2 Reading🔗

There are lots of esolangs, as evidenced by this Wikipedia page and Wiki. A new book discusses them. Esolangs are mostly created for fun (or spite?), but this brief document by Singer and Draper argues, “Let’s Take Esoteric Programming Languages Seriously”.

7.3 The Concern🔗

One of the perils of the proliferation of GenAIs is that they will hurt programming languages progress. Because of training, GenAI is very good at producing code in past languages but won’t be good at producing code in novel future languages, making the adoption of those languages much harder. Furthermore, it may produce gobs of code in an old language that just sort of gets around problems in the language, instead of a concise program in the new language that was designed to avoid the problem entirely.

As a thought experiment, imagine if GenAI had been born when the only programming was in assembly. For most programs you’d much rather use the languages we have now, but GenAI might just produce heroic amounts of assembly instead. We are in a similar situation now; the problem is just less apparent because we aren’t programming in assembly.

However, maybe GenAI can also help! With enough instruction and nudging, it may make programming in the new language easier for us than if we had to entirely by hand.

7.4 Task🔗

Your task is to coax a GenAI to help you produce the most sophisticated program that you can in an esolang. For instance, can you write a non-trivial interpreter in an esolang? How about one for the esolang itself?

You are welcome to choose between different GenAIs, write as much of a prompt as needed, use RAG to train it on the language, etc. (You get free access to: Google Gemini using your Brown account; Copilot as a student; and the department-hosted LLMs. You are also welcome to use any GenAI that you pay for.) You are welcome to manually modify the output.

Your tasks are the following. Please read all the tasks before starting: later tasks could influence earlier ones. As you present this, think in terms of reproducibility: if someone else wanted to replicate what you did, what information would they need?

  1. Pick an esolang. Tell us what you chose and where we can find it. Anything in the above sources counts as an esolang. If you want to use something not on the list, check in with us first to confirm that it counts. (And maybe you should add it to the above lists!)

  2. Tell us what GenAI(s) you used for what follows.

  3. Make sure that by default, the GenAI is not able to produce anything that is both interesting and correct. Show us the outcome to confirm this. Note that languages like Brainfuck are sufficiently “popular” that there appears to be a fair bit of code for them, making the assignment trivial (assuming that code is correct!). You should pick something more obscure.

  4. Show us one or more of the most sophisticated programs you were able to produce with GenAI help. Don’t just take the first thing it produces! As noted above, one challenge is to produce a non-trivial interpreter, but that may or may not make sense for the esolang. Whatever you produce, we want programs where you have to do some non-trivial work to guide the GenAI; otherwise you’re just relying on the training of the GenAI, which misses the whole point of this assignment. (If you can get several sophisticated programs without much effort on your part, you’ve picked a “popular” esolang; start over.)

  5. For each program, tell us what it does and what its output (if anything) is. Make sure you have verified this by actually running the program; don’t just trust the GenAI to produce valid code! Provide a screenshot or other proof that the program does what you claim (and, more to the point, what the GenAI claims!).

  6. Tell us what balance of tasks was done by you and by the GenAI. In particular, we’d like to know that your guidance is what produced the program, not the training already baked into the GenAI.

  7. Finally, include (links to) any materials provided to the GenAI (e.g., documents, the prose of any prompts). Please put this at the end, since this could be quite long. If you used a public document, please just provide a link instead of copying it in, unless you had to modify it.

7.5 What to Turn In🔗

Please turn in a single PDF document that contains all of the above, in clearly delineated sections, one per item above. We recommend having a table of contents. Here’s how to make and refresh one (it doesn’t automatically refresh!) in Google Docs.