17 comments

[ 2.6 ms ] story [ 43.8 ms ] thread
I don't know the list of languages included in the book, but anyone interested should try out:

   - J: https://www.jsoftware.com/#/ you'll learn arbitrary dimension arrays, verb composition and more
   - Lisp: I don't know the right Lisp to recommend. Macros stand out as something to learn
   - Forth: I don't know the right Forth to recommend. The stack is an interesting metaphor
   - A constraint-based language: maybe https://www.minizinc.org constraints are super interesting
Those are all practical languages -- none is esoteric just for the sake of strangeness.

There are more of course.

Ook!

I love esoteric languages. They're a never ending rabbit hole, and they really force you to revisit all of your assumptions about what it means to program. The most interesting ones for me were the Lambda calculus and Brainfuck.

And of course there is Forth. Which always felt like it was just around the corner from some kind of breakthrough but it never really happened.

Collaborative software projects and all of the modern tooling feel like massive (and endless) layers of abstraction on top of some pretty simple principles. Esoteric programming languages allow you to revisit programming without all of that super structure and for that alone they are valuable, they are pretty pure in that sense.

I once designed an esolang for my CS students to have fun with during the last week of the semester. A few of them used it in really, really creative ways and also went on to make their own languages for fun.

The one I created for class supports supports concurrency, regular expressions, HTTP requests, and file I/O. The challenging part is that every line executes concurrently in round-robin style (one command per line). There are only 8 commands and each line can only store a single string value.

https://austinhenley.com/blog/hofstadter.html

IMO there's no such thing as esoteric languages; it's just that some ideas catch on and some don't (or take longer). If C ideas had not caught on, today we'd all it an "esoteric" language.
For an introduction to different languages (both from Industry and Academia) from different programming paradigms (i.e. Imperative/OO/Functional/Dataflow/Concurrent/Declarative/Logic/Aggregate) see Raphael Finkel's Advanced Programming Language Design.
(comment deleted)
> I try to write everything in JavaScript when I can and have it run in the browser.

Question for the author if they are here: why not use one of the many languages that compile to Wasm to write compilers for esoteric languages?

Mostly because JS is so widely-used and so encourages others to expand or contribute to the language. And partly because JS is delightfully chaotic, so it feels right for esolang work. But I might make a different choice with my next interpreter…
Alas. No one's mentioned SNOBOL or SPITBOL. I'm sure modern coders would consider them esoteric, but for me they were kind of delightful back in the day.
I would not consider SPITBOL esoteric since it was not intended as such — but the original INTERCAL-72 interpreter was written in SPITBOL, so the language is quite important to esolang history (and deeply weird, besides).
Hi, I’m the author of the book and arriving (a bit late) to clarify a few things.

Although I discuss esolang history in the Spectrum piece (something I get deeper into on my blog, https://esoteric.codes), the book is a monograph of my esolangs specifically: Folders, Entropy, Olympus and more; some are collected at https://danieltemkin.com/Esolangs. It’s meant to make esolangs approachable, focusing on concept rather than technical aspects of the languages. I wrote it to encourage people to experiment with esolangs and to show the community-based nature of the work: the delightful conversation that happens when another programmer takes your language in a direction you would never have conceived of.

The languages range from fully implemented works to pieces that are not implementable (e.g. Past Tense is a language whose programs are not runnable by definition and would cease to be programs if they were https://github.com/rottytooth/PastTense). There’s one where even articulating a program into words or symbols invalidates it: only unreified thought is valid.

The languages are presented first as prompts. In the second half, I present details on those that are implemented, showing the sometimes surprising results of carrying out the initial idea. I hope it will expand the conversation around esoteric languages as an art form.