- 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.
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.
And then there's the legendary https://github.com/hundredrabbits/Orca
"Orca is an esoteric programming language designed to quickly create procedural sequencers, in which every letter of the alphabet is an operation, where lowercase letters operate on bang, uppercase letters operate each frame."
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.
It reminded me of an overambitious educational game idea: The player builds interpreters for prayers directed at several gods, each cult having its own theurgic practices resembling different programming paradigms: https://gashlin.net/blog/pages/2010-12-25-shell-script-of-th...
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?