I didn’t cover it [INTERCAL] because the gags aren’t that interesting.
I can only assume that you’ve never had to deal with mainframe programming, then? INTERCAL’s main design aesthetic was to have as little in common with an extant language as possible, and it is funny how you can sort of glimpse the current state of the art in Fortran, Algol, et al, in the negative space of what INTERCAL doesn’t do. But of course the thing that made INTERCAL so funny was the arid-dry humor of the document describing the language. Remember that the original INTERCAL compiler was written by a couple of Princeton students in SPITBOL (a compiled version of SNOBOL4), in the days before general Internet accessibility even within academia. For all but a handlful of people the language existed only as a descriptive text document that was passed around the geek community. It continued to be fondly shared and referenced for 20 years before a compiler was widely available.
Here is an implementation of a hello world program in Unlambda:
`r```````````.H.e.l.l.o. .w.o.r.l.di
The creator of this language was a friend at school, and living not too far from my home on the way to school, in the early 1990’s. I was young, and he tried to explain me about Unlambda and Lambda Calculus, as it was his current hobby. (Besides for example, doing some Quantum Mechanics and explaining me what means the event horizon of black holes, in equations, in the back of the bus during a school trip to greece - at the time we hardly only knew about Newton Gravity in the class).
Because of his Unlambda, and my inability to grasp any of it (I only knew BASIC), after that, I believed during years that pure lambda calculus was the most frightening and austere thing that could be imaginable in computer sciences ;-)
Something that anticipates the GolfScript-Pyth-MetaGolfScript axis (in a silly, borderline-stupid way, but still) is the language HQ9+. Created back in 2001, it can only do three and a half things:
Print “Hello, World!”
Print the program’s source code to stdout (a quine operator)
Print a complete “99 bottles of beer on the wall” recitation
Increment the accumulator (I count this as half a thing because it’s absolutely useless… no other operation affects, or is affected by, the accumulator. I consider it a nod to Brainfuck and other “legitimate” esolangs).
It’s quite useless on CGSE (where the challenges are much more interesting), but in the earlier days of golfing it served as a similar sort of commentary to MetaGolfScript today.
Personally I’m an old Perl golfer, and I have a hard time finding the golf-langs interesting, but I don’t really mind them. Sometimes people come up with really mind-twisting ways of applying the tools those languages provide to solve a problem, and for my part I’m happy enough to come up with ways to apply the tools in the languages I know, even if it takes me more bytes :)
I was really into Piet back in my last year of high school, I drew a couple programs and I even dedicated a section of the oral essay for my matura exam to it, which I never got to deliver because I was over time. I wish I could find them again…
I think it would have been good to include Conway’s game of life in the video presentation. As a programming language it has no IO but it has had a huge influence since it is representative of a esolang genre (more so than Piet I’d argue) and orca feels a bit like game of life with IO.
Of course it covers these languages as well, but if you are only going to talk about the obfuscated ones, you can at least admit to it. Taking a tiny subset of esoteric languages, cherry picking the obfuscated ones and then call it esoteric languages is like starting a food blog and only talk about bubble gum.
That’s just what we ended up calling them back in the day. With a bit of effort, somebody might be able to dig out the details from the old sange.fi mailserv, or in Archive.org, but that was decades ago. The community just needed a term for the kinds of toy languages people were playing with and “esoteric” was the least worst fit. Something like API might be “esoteric” in some senses, but as you mentioned elsewhere, it was built with a practical purpose in mind. “Toy” wouldn’t have worked because not all esolangs are toys. “Joke” or “Parody” wouldn’t have worked for similar reasons. They’re also not necessarily obfuscated: they may instead be aiming for a kind of minimalism to to subvert expectations: Brainfuck, Shelta, and Q*Bal fit this bill, with the former two being designed be implementable in a tiny executable, and the latter operating off of queues rather than stacks.
So, “esoteric” is what stuck. If you have suggestions for a better term that covers the field better, I’m all ears, but you’re two or three decades too late.
Thanks for this. Looking at esolangs.org, it hit me that the “esoteric” in esoteric programming languages didn’t really mean the same thing as, you know, if you look up “esoteric” in the dictionary - and you kind of made sense of it all.
At least Jelly and Brainfuck are not obfuscated; their source languages are as readable as assembly code. Are you thinking of languages more like Iota and Jot?
Ultimately, what’s obfuscated and what’s plain is culturally dependent. Qalb is extremely readable if one knows Arabic, but to me it only forms gorgeous nonsense patterns.
Plenty of languages in this area are not “obfuscated” or at least not intentionally. Brainfuck was designed to be a tiny language, not an obfuscated language. (Its name in fact should be seen as an expression of frustration rather than one of its goals.) Likewise, Befunge and Piet were designed to be 2-D languages – if they are obfuscated, that was not a design goal. Ditto Orca, or languages like Golfscript.
In fact, I would argue that the only esoteric langauges covered here that focus on obfuscation are INTERCAL and the Brainfuck derivatives. A language that is hard to read as a side effect of its actual goal is no more obfuscated than APL.
I see your point. And I was thinking about “esoteric” in the dictionary definition sense of the word. talideon had an explanation of how that word got to be used the way it did, which kind of made sense of the fact that there are different opinions of this.
I can only assume that you’ve never had to deal with mainframe programming, then? INTERCAL’s main design aesthetic was to have as little in common with an extant language as possible, and it is funny how you can sort of glimpse the current state of the art in Fortran, Algol, et al, in the negative space of what INTERCAL doesn’t do. But of course the thing that made INTERCAL so funny was the arid-dry humor of the document describing the language. Remember that the original INTERCAL compiler was written by a couple of Princeton students in SPITBOL (a compiled version of SNOBOL4), in the days before general Internet accessibility even within academia. For all but a handlful of people the language existed only as a descriptive text document that was passed around the geek community. It continued to be fondly shared and referenced for 20 years before a compiler was widely available.
While this is a video, there’s also a 4000 word companion that can also be read independently.
I was disappointed not to see in this list “Unlambda”, which I personally find more esoteric than Brainfuck.
From wikipedia:
The creator of this language was a friend at school, and living not too far from my home on the way to school, in the early 1990’s. I was young, and he tried to explain me about Unlambda and Lambda Calculus, as it was his current hobby. (Besides for example, doing some Quantum Mechanics and explaining me what means the event horizon of black holes, in equations, in the back of the bus during a school trip to greece - at the time we hardly only knew about Newton Gravity in the class).
Because of his Unlambda, and my inability to grasp any of it (I only knew BASIC), after that, I believed during years that pure lambda calculus was the most frightening and austere thing that could be imaginable in computer sciences ;-)
Oups, not Quantum Mechanics, but General Relativist calculus. But I’d bet he was also doing Quantum Mechanics in his spare time.
Something that anticipates the GolfScript-Pyth-MetaGolfScript axis (in a silly, borderline-stupid way, but still) is the language HQ9+. Created back in 2001, it can only do three and a half things:
It’s quite useless on CGSE (where the challenges are much more interesting), but in the earlier days of golfing it served as a similar sort of commentary to MetaGolfScript today.
Personally I’m an old Perl golfer, and I have a hard time finding the golf-langs interesting, but I don’t really mind them. Sometimes people come up with really mind-twisting ways of applying the tools those languages provide to solve a problem, and for my part I’m happy enough to come up with ways to apply the tools in the languages I know, even if it takes me more bytes :)
I was really into Piet back in my last year of high school, I drew a couple programs and I even dedicated a section of the oral essay for my matura exam to it, which I never got to deliver because I was over time. I wish I could find them again…
I just learned about Orca from this snippet of the video and it is so cool — thanks for sharing!
I think it would have been good to include Conway’s game of life in the video presentation. As a programming language it has no IO but it has had a huge influence since it is representative of a esolang genre (more so than Piet I’d argue) and orca feels a bit like game of life with IO.
The title says esoteric languages, but the post is almost entirely about obfuscated languages.
From the Oxford Languages definition of “esoteric”:
I think this covers these languages well.
“Esolang” is as far as I can see an accepted neologism for these languages, and the Esolang wiki lists most of them:
https://esolangs.org/wiki/Language_list
Of course it covers these languages as well, but if you are only going to talk about the obfuscated ones, you can at least admit to it. Taking a tiny subset of esoteric languages, cherry picking the obfuscated ones and then call it esoteric languages is like starting a food blog and only talk about bubble gum.
That’s just what we ended up calling them back in the day. With a bit of effort, somebody might be able to dig out the details from the old sange.fi mailserv, or in Archive.org, but that was decades ago. The community just needed a term for the kinds of toy languages people were playing with and “esoteric” was the least worst fit. Something like API might be “esoteric” in some senses, but as you mentioned elsewhere, it was built with a practical purpose in mind. “Toy” wouldn’t have worked because not all esolangs are toys. “Joke” or “Parody” wouldn’t have worked for similar reasons. They’re also not necessarily obfuscated: they may instead be aiming for a kind of minimalism to to subvert expectations: Brainfuck, Shelta, and Q*Bal fit this bill, with the former two being designed be implementable in a tiny executable, and the latter operating off of queues rather than stacks.
So, “esoteric” is what stuck. If you have suggestions for a better term that covers the field better, I’m all ears, but you’re two or three decades too late.
Thanks for this. Looking at esolangs.org, it hit me that the “esoteric” in esoteric programming languages didn’t really mean the same thing as, you know, if you look up “esoteric” in the dictionary - and you kind of made sense of it all.
At least Jelly and Brainfuck are not obfuscated; their source languages are as readable as assembly code. Are you thinking of languages more like Iota and Jot?
Ultimately, what’s obfuscated and what’s plain is culturally dependent. Qalb is extremely readable if one knows Arabic, but to me it only forms gorgeous nonsense patterns.
I’m not that familiar about this space.
What languages in your opinion are esoteric but not obfuscated?
One example could be APL (https://en.wikipedia.org/wiki/APL_(programming_language). It’s a pretty esoteric language, but wasn’t made with the sole purpose of being a bitch to use. It was made to solve a problem.
APL isn’t an esoteric language.
(Also, Orca and GolfScript aren’t “obfuscated”. They are very well designed for their intended goals.)
Plenty of languages in this area are not “obfuscated” or at least not intentionally. Brainfuck was designed to be a tiny language, not an obfuscated language. (Its name in fact should be seen as an expression of frustration rather than one of its goals.) Likewise, Befunge and Piet were designed to be 2-D languages – if they are obfuscated, that was not a design goal. Ditto Orca, or languages like Golfscript.
In fact, I would argue that the only esoteric langauges covered here that focus on obfuscation are INTERCAL and the Brainfuck derivatives. A language that is hard to read as a side effect of its actual goal is no more obfuscated than APL.
I see your point. And I was thinking about “esoteric” in the dictionary definition sense of the word. talideon had an explanation of how that word got to be used the way it did, which kind of made sense of the fact that there are different opinions of this.
Quite right too.