FAQ > Where's Malbolge? Malbolge is a very interesting esolang, with the goal of being "as hard as possible to write programs in." I left it out because I couldn't figure out how to cover it well. It makes a brief cameo at 0:59 (lower-left), and I say a bit about it at the companion site: hillelwayne.com/talks/esolangs/#diversity > Is Game of Life an esolang? GoL is a special case of a **cellular automata**, which has been the model for several esolangs (esolangs.org/wiki/Cellular_automaton). GoL is Turing complete, but it's not really a *language*. It's more of a language substrate. You can use GoL to create OCTA metapixels, and then wires, and then spaceship signals, and then logic gates, and then circuits... ...29 billion GoL cells later, you get Tetris. codegolf.stackexchange.com/questions/11880/build-a-working-game-of-tetris-in-conways-game-of-life > Is HolyC an esolang? Yeah probs > Is Minecraft Redstone an esolang? Yes! A lot of games have mechanisms you can use to build programs *inside* the game. Redstone is a good example, as are Factorio circuits and Baba is You blocks. There's no collective term for this category; I personally call them "game-emergent languages". The big challenge with studying them is that, well, you have to have the game! I've already given Factorio hundreds of hours of my life, I can't afford to download Minecraft, even if it's for "research". > You mispronounced "Piet". Piet Mondrian was a Dutch artist, so I'm using the Dutch pronunciation of Piet ("Peet"). > Where's the music from? Richard Whaling's instagram: instagram.com/p/BzVjW7LBv1K/. > Is that Ida Noyes? SCAV
"I've already given Factorio hundreds of hours of my life" Ah, I remember when I was a Factorio newbie too. (Actually I have only a bit over a thousand hours in it so making this joke makes me a poseur lol)
1:24 "I've only made one esolang in my entire life" "I'm not part of the community" I think you're vastly overestimating how many programming languages the average person creates.
I think we all overestimate how many languages people have made, let alone languages with complete implementations that are worthy of production use. Congrats to Hillel! One day I make it to the club with them...
@@SimGunther > let alone languages with complete implementations that are worthy of production use. You are WAY overestimating my accomplishment, haha. It was a minor variant of Brainfuck I wrote as part of a cheeky FizzBuzz solution. Definitely not production usable :)
I've only forked a whole new language and regularly publish my research with high quality video slides. Dude you ARE the community, at least a solid part of it
I think creating one esolang and a youtube video on this subject definitely qualifies you to be in the community more than the 99% of us who have never done such a thing.
At my first day of studying computer science at university, every new student got a bag with the name of an esolang written on it. They used it to asign us into introduction tutorial groups. It was the first time I heard of the strange concept of these languages. Mine was 'ArnoldC', a programming language completely consisting of Arnold Schwarzenegger quotes, coding in it is quite fun!
I am the original author of the “J and GolfScript suck all the fun out of golfing” post. I am not proud of it because I have since enjoyed golfing for reasons other than competing on character count. The posting was entirely borne out of a competitive mindset. I have since posted several answers in which I golfed in languages that are woefully unsuitable for golfing (mostly Unreadable). I would prefer to erase the posting from ever having existed, but I accept that it has historical value now. Amazing summary of the whole esolangs and codegolfing thing. Great video. Love it.
I think, even if you're not proud of the post, it captures well what a *lot* of people were thinking at the time (and still are!) about golflangs. There's an alternate history where the CGCC collectively decided to ban them, and I think it could have happened. Ultimately the site went a different way. I imagine if it banned golfscript we'd have seen a "schism" in the golfing community, with different competing sites.
The university pastor, in the nineties when my alma mater was still catholic, had the brilliant name John Hacking. Radboud universiteit Nijmegen, the Netherlands.
@@CrystalLily1302 my Highschool music teacher's name was Mr Hoven. Almost Beethoven. One of my Latin teacher's first name was Virgile and french teacher's first name was François.
As soon as you talk about using any language for code golf I knew that there'd be someone who make a custom compiler solely to solve that single problem in a single byte. Turn out it's even better.
Brainfuck is not only Turing Complete, it is actually a PURE Turing machine... Turing defined his machine exactly along these lines. Brainfuck only provides a smart short formalism to handle it.
It isn't quite a turing machine since the state is encoded as the linear strip when a turing machine doesn't have that linear restriction (such as it does not need a looping construct, it just has state transitions that exist in cycles)
As a math guy I think my favorite esolang has got to be Fractran, which uses a list of fractions and a single input as the entire program. You basically multiply by each fraction in the list until it no longer gives an integer, which becomes the final output. Very fun to play around with and try to figure things out
I've seen a few videos on esoteric languages recently but this was the first one that went into any depth on golfing languages. As a very active member of CGSE back in its heyday (PPCG anyone?), having created at least one golfing language and several more general esolangs myself, I really appreciate all the research that went into this video and I feel it was very well explained. It brings me such joy to see an old esoteric hobby of mine being given this type of attention :)
I really hope someone's made a chef program that calculates pi, with source code that also functions as a recipe for a pie. (EDIT): Make it a recipe for a raspberry pie, then run the program on a raspberry pi for bonus points.
18:00-ish: Actually, one Unicode character is most likely not 1 byte. In UTF-8, non-ASCII characters take more space the higher the character’s code point is. Æ takes 2 bytes to store, making “ÆP” 3 bytes long. The file size is worse in UTF-16 (every character is 2 bytes, unless the char code is U+10000 or larger, which makes it 4 bytes) or UTF-32 (every character is 4 bytes).
Yup, that was the mistake I called out I made ~17:59. It's still two bytes, though, because it's not using unicode! From the companion: > I made two mistakes in the section on Jelly: > 1. In the talk I mistakenly said that it uses Unicode “to pack in more opcodes”. Most golfing challenges are scored on bytes, not characters, so a single two-byte Unicode character scores the same as two ASCII characters. Instead, Jelly uses a different encoding than ASCII pack in more useful characters. The byte 0000 0100 in ASCII is the End of Transmission signal, while in Jelly it’s ¥. Some golfing languages do use Unicode, but the main saving is in a better codepage. > 2. I said Æ was “is prime”, but it’s actually the prefix for 2-byte arithmetic functions. ÆP is “is prime”. So in the codepage they chose, Æ is still a single byte, and Dennis picked Æ because it was a good mnemonic for "arithmetic expressions".
Tongue in cheek pedantry: UTF-16 is not worse than UTF-8 if your characters are in the U+0800 to U+FFFF range (excluding U+D800 through U+DFFF). Those encode to three bytes in UTF-8 but two in UTF-16.
If it involves tons of CJK characters, though, UTF-16 could be more space efficient than UTF-8, as most CJK characters could be stored using 2 bytes with UTF-16, but takes 3 bytes with UTF-8. While UTF-32 makes completely no sense yet since IIRC only codepoints up to 10FFFF was assigned at the moment.
This is genuinely the most entertaining Video i've seen in months, and I have close to no coding knowledge. The absurd quirks of code golfing are just hillarious to me
0 bytes? Pfah. It still needs an interpreter which is some bytes. I can do better. What you need is just memory registers, and in fact specifically for the "is this a prime" question just one memory register capable of storing 1 bit of information, and by that I mean a physical piece of hardware, and that's it, you're done. Let's see how it works: "Is 2 a prime number?" - the memory register stores either a value that corresponds to true or false. If it's true, then hey, neat, it answered okay. If it's not, no biggie, just give it some time. After a while some cosmic rays or quantum fluctuations or somesuch will hit the register and flip the bit, and then it'll be giving the correct answer. It works the same for non-primes, too, with the correct/incorrect being reversed. With the requirements for correctness and time being as lax as they are, this should actually be good enough. 0 bytes for the program AND 0 bytes for the interpreter AND 0 bytes for the compiler.
@@elitebyte_ lets say 1 in the memory register stands for p=np and 0 stands for p!=np. if one of those answers is true, the register will contain the right answer at some point in time, given that cosmic radiation will flip the register atleast once. if you happen to observe the register at the moment it contains the answer, you can observe it. of course causation and correlation differ in this case. seeing a truthy value in a random sequence may correlate with the answer 'true' to some question, but the question never caused said answer.
I recently actually created my own esolang, and I'd like to introduce it to others, but I don't really know where to go with it. It definitely falls (imo) under the "computationally interesting" category
The best place to start would be the esolangs wiki (esolangs.org/wiki/Main_Page), because that'll give you a public place to document and talk about it, as well as get feedback from others. There's some overlap between 19th Byte regulars and esolangs enthusiasts; I'm sure if you asked in the chat channel, some people would be up for private convos and feedback. I suspect there's an esolangs discord somewhere, but I'm an Old who is afraid of discords
i LOVE perl code golfing. i still remember the most useful program i wrote in perl, and its while()split;chomp; (or something like that). it makes use of a ton of implicit features of perl to read input from stdin and remove all whitespace, then blast it out to stdout. i loved the idea of writing useful code that uses no variables and looks like nonsense
I don't think so, GoL would be more of a virtual universe where you could build and program Turing machines, which then could execute programs in various (yet highly complex) languages. There are programs, there are programming languages, there are machines that run those, and there is the universe in which machines are built - game of life is such universe.
I opened the video expecting an boring programming lecture but its actually an good humour presentation of one of the most interesting (and fun) subjects I've seen. I had no idea codegolfing was a thing and that Orca esolang is straight up mesmerizing
You need to rename this away from what sounds like a lecture upload from a community college class! This is way too good a vid! "Writing code with Shakespeare and cake recipes: an intro to esoteric programming languages" Also, the algorithim sent me here, so here's hoping you're gonna see a lot more traffic. This is great!!!
So, while that's objectively a good idea, right now I'm hesitant because 1. The title is pretty long already, and I want to keep it relatively close to the title on the slides 2. (and this is the big one), I am DELIGHTED to know that it sounds like a boring lecture upload. I have a deep, deep fondness for that kind of sucker punch, where people are expecting something boring and are surprised when it's actually high quality. I know it's weird and kinda self-sabotaging; it just tickles the prankster in me. (This time it was unintentional, but I've also tried to play with that consciously too, like in this parody of clickfarm: www.hillelwayne.com/post/sudoku/)
@@hillelwayne3236 thanks for the response! can appreciate the sentiment, but I feel like that logic only works if you were a teacher, for example, with a captive audience. The thing about having a boring lecture title doesn't mean people get sucker punched, it means they don't click on it. I clicked on this thinking it was about *human* language, even, I couldn't tell from the title or photo that it was for people into computers at all.
When you said sucker punch, I thought of another RUclips channel with similar content: Sucker pinch. It's a similar lecture format, but his NES videos make me laugh every time!
I think the code golfers complaining about golf-themed esolangs are just scared to acknowledge the obvious problem: if your challenges are too easily broken by comedic custom esolangs, then they are probably too simple. What if the challenge is to make a version of the game Sokoban, or a spreadsheet program? Then the people who try to break the challenge with custom esolangs might accidentally build a superior programming language.
MetaGolfScript still easily wins the golfing challenge in both cases, so that's not the issue. On the other hand, I think the problem of code golfing itself is somewhat ill-posed; and that adding outputs to the evaluation metric like the video mentions could be a step towards the solution
There's also the obvious issue (banned by the community) of creating a language specifically to solve a challenge in one byte. Like H, for example. Now, you have to use a language that existed before the challenge was created. If a newer version is made after the date of the challenge, by default it can't be used, but the older version still can.
I think esolangs have a place in puzzle games quite often since they turn out to be turing complete (such as Opus Magnum, Baba Is You, 7 Billion Humans etc)
The Python program at around 14:09 can be simplified even further: 1. you don't need a list comprehesion. you can use a generator comprehension, and when it's inside parentheses (from the function call), you don't need another pair of parentheses (so, remove the brackets, -2 bytes) 2. you could use python truthiness, making `x!=1` into `x-1`, and `x%i!=0` into just `x%i` (-4 bytes)
I wrote an interpreter for a variable length coding that packs the most common operation as 1 bit, the 3 as 4 bits, the next 16 as 8 bits, and the other operations following a similar pattern. It was not an esolang, instead it was intended to create bitstring programs that would be executed by a very simple FPGA based soft processor that I never created. It was based on compression techniques.
I made an esolang called Metastack where the program is made from an infinite line of stacks, wherein 2 of those stacks are special. (the command stack and the input stack) As the program is executed, it destroys itself. To loop it must copy from another stack. To conditionally jump it must swap the command stack with another stack. Yes, really. It traces its origins to Befunge which uses a stack to store data short-term, and i thought "what if we only had stacks to work with?" Its interpreter is made with ComputerCraft: Tweaked's integration of Lua. I haven't found an esolang that used a paradigm like this. If this is the first stack paradigm language (just like 2D paradigms of befunge), i'll be so happy. (i haven't proven it but i believe it may be turing complete according to esolang wiki on stacks) Reverse Cat î7?02=0÷i î6.?03=-21÷?04=0¶?08=-21÷\\ ?333î5.*48 ÿ ?333î5.*48 î6.?03=-21÷?04=0¶ î7?02=0÷i ?881\\
You may be interested in forth: en.wikipedia.org/wiki/Forth_(programming_language) Re proving TC, my usual way to do that is to either write a brainfuck interpreter or a Tag System (buttondown.email/hillelwayne/archive/vim-is-turing-complete/), both of which are a lot easier to wrangle than a pure Turing machine simulation. In your case, simulating a 2-stack PDA (en.wikipedia.org/wiki/Pushdown_automaton) is enough to prove TC.
This showed up in my youtube recommended and was very interesting to watch! Great presentation, I had googled esolangs recently but didn't really understand much until I watched this video.
1:42 Intercal, at least the document, was quite brilliant; it was a parody on ALGOL68 which took itself quite seriously (for quite good reasons, ALGOL /ALGOL68 may be considered quite ahead of its time; but as a student and friend of the late C.H.A. Koster I'm probably biassed). Admittedly, Intercal is more than a bit horrific to work with and not as artistic as more contemporary esoteric languages. But in my opinion it had its place in history.
18:19 even before seeing that I was asking myself what's the point of Golf Scrips, the beauty of CG should be to "exploit" every nook, cranny and trick of a programming language and come up with the shortest code within that language, a procedure that also has an educational purpose if you're learning a language, comparing different languages is pointless.
Hah, thank you! It was actually a guest lecture for her class; I made a video because we had a 7 hour timezone difference and I didn't want to do a lecture at 2 AM
One of my favs is PuzzleScript which has a web based tool for building simple 2d puzzle games. I consider it an esolang but is pretty fun to mess around in.
A geometry dash creator called Spu7nix made a programming language that would compile into GD triggers in a level. He used to make a Brainfuck interpreter inside the game. So would GD triggers also count as an esolang?
People have taken GD's Esolang of Triggers so far that they've made entire games inside Geometry Dash! Examples are Mastergame by Serponge (and a bunch of his other works), there's a Tic-Tac-Toe game with an AI in GD, an entire Rubik's Cube that is randomly scrambled that you can solves, etc. Given enough time and groups, anything can be made with GD Triggers!
Finding video game glitches is sometimes like a fancy Piet implementation. It can sometimes create full multimedia experiences with random colors and pixels and even sounds being generated as various processors attempt to interpret nonsense as instructions. Exploits then become intricate works of art. An easily searchable example on RUclips would be the Super Mario 3 Wrong Warp, but from the perspective of artwork, it is more interesting when things "go wrong", as that is when you get a cacophony of random sprites and gibberish pixels smeared all over the screen.
*11:58** OWWWW!!!! My eyes!!! Fucking flash-bang!!!* (You could have had a gradient transition there! From black, through gray, to white, over like 10 seconds or so!)
@@fussyboy2000 That's some next level stuff. I have written the game of life, and done small optimizations, but no where near what others have done. Also, the creations people have made with it are astounding, way above me to figure out.
One thing I don't understand about the FALSE program: After the line where the input is checked, we now have two copies of the same boolean on the stack. This is because we need the second one for the "else" part essentially. However, when f is executed, we now have our input, and then a boolean on top of that on the stack. Usually, you would use the backslash to swap those around, so shouldn't that part look like this?: ~[\f;!.\]? And also, the comparison to 8 would compare the boolean to 8, and not the input. Am I missing something? Edit: I am right (I think)! The example on the website of the guy that invented the programming language is incorrect (again, no guarantees)! The correct code would be: { factorial program in false! } [$1=~[$1-f;!*]?]f: { fac() in false } "calculate the factorial of [1..8]: " ß^ß'0-$$0>~\8>|$ "result: " ~[\f;!.\]? ["illegal input!"]?" " See the backslashes? They are needed to push the boolean down so that we can actually compare the number 8 to the input. Another edit: it seems like the backslashes got lost when pasting the code around for the website, and that makes sense since backslashes are the escape character for control characters.
That song by Richard hit's different/ Is there someplace I can listen to the full version? I have found a album on band camp but sadly this song wasn't there
A fun esolang is Rockstar by Dylan Beatte (I think that's how you spell his name). A language that uses power ballad lyrics for its code. It's glorious
Multicoding also used in other languages. E.g. type is one of the aspect you usually get. In Mercury you have modes and insts. It's just such languages usually use similar way to encode/represent that information as main code. But colorForth uses formatting as part of language and it is still generic language. If you think about how we have all that syntax highlighting in editors/IDEs trying to be in sync with how source code interpreted, it because mind blowing that colorForth solves that problem in its root cause since highlighting is a part of language.
@@stelcxantisto I think yes, because it can be programmed to do very complex things, it's even turing complete, so it can be considered as esolang in its own way probably
@@stelcxantisto Yup! There's no formal category of esolang, but I like the term "game-emergent language", where people create a programming language inside a game to do complex things. Factorio circuit networks also count, as do Super Mario Maker calculators: ruclips.net/video/a1YzOVEbguw/видео.html
I knew you would mention Orca! It's a really fun language and honestly so inspiring in making music. So far Shakespeare is my favorite because it's so ridiculous
yeah I agree i don't like golfscript or anything else like that I can make a zero byte script find all the primes because the compiler will generate a program that finds all primes whether you give it a file or not I think its like putting the golf tee in the hole and being impressed youre getting 0 strokes
My favorite esolang has to be HolyC. Not necessarily due to anything particular except the background of it, an absolutely fascinating story. Is it functional? If you want to talk to talk to God or make pictures of elephants, then yeah, other wise, not really. I’m sure most people here have heard of it, but if somehow you have not heard of Terry A Davis and his coding, give him a look up. Great video!
Thanks this was fun. I occasionally use ("use" ;)) Orca and found myself golfing, but this is totally next level haha. Thanks for the intro and drawing those trajectories between languages
Is it really valid to call orca a programming language, as opposed to a musician tool similar to chiptune trackers and physical midi grid instruments like a Launchpad? Or perhaps those are programming languages to? What is a programming language? Sorry, got a bit philosophical there... Anyway, very interesting talk and a lot of good food for thought.
most important piece if knowlege i got from this video, is that there is are languages called "Brainfuck, but every + is replaced with the bee movie script"
FAQ
> Where's Malbolge?
Malbolge is a very interesting esolang, with the goal of being "as hard as possible to write programs in." I left it out because I couldn't figure out how to cover it well. It makes a brief cameo at 0:59 (lower-left), and I say a bit about it at the companion site: hillelwayne.com/talks/esolangs/#diversity
> Is Game of Life an esolang?
GoL is a special case of a **cellular automata**, which has been the model for several esolangs (esolangs.org/wiki/Cellular_automaton). GoL is Turing complete, but it's not really a *language*. It's more of a language substrate. You can use GoL to create OCTA metapixels, and then wires, and then spaceship signals, and then logic gates, and then circuits...
...29 billion GoL cells later, you get Tetris. codegolf.stackexchange.com/questions/11880/build-a-working-game-of-tetris-in-conways-game-of-life
> Is HolyC an esolang?
Yeah probs
> Is Minecraft Redstone an esolang?
Yes! A lot of games have mechanisms you can use to build programs *inside* the game. Redstone is a good example, as are Factorio circuits and Baba is You blocks. There's no collective term for this category; I personally call them "game-emergent languages".
The big challenge with studying them is that, well, you have to have the game! I've already given Factorio hundreds of hours of my life, I can't afford to download Minecraft, even if it's for "research".
> You mispronounced "Piet".
Piet Mondrian was a Dutch artist, so I'm using the Dutch pronunciation of Piet ("Peet").
> Where's the music from?
Richard Whaling's instagram: instagram.com/p/BzVjW7LBv1K/.
> Is that Ida Noyes?
SCAV
SCAV
kkkkkk Man, I loved the video, it made me want to go back to programing, but the brightness is killing my eyes lkkkkkk
I was wondering if you'd showcase malboge.
I've never attempted to program in it, but I've seen a few attempts to code golf with it.
"I've already given Factorio hundreds of hours of my life"
Relatable
"I've already given Factorio hundreds of hours of my life"
Ah, I remember when I was a Factorio newbie too. (Actually I have only a bit over a thousand hours in it so making this joke makes me a poseur lol)
1:24 "I've only made one esolang in my entire life" "I'm not part of the community" I think you're vastly overestimating how many programming languages the average person creates.
I think we all overestimate how many languages people have made, let alone languages with complete implementations that are worthy of production use. Congrats to Hillel! One day I make it to the club with them...
@@SimGunther > let alone languages with complete implementations that are worthy of production use.
You are WAY overestimating my accomplishment, haha. It was a minor variant of Brainfuck I wrote as part of a cheeky FizzBuzz solution. Definitely not production usable :)
@@hillelwayne3236 Have you seen Ben Awad's video on FizzBuzz? Next level shit.
I've only forked a whole new language and regularly publish my research with high quality video slides. Dude you ARE the community, at least a solid part of it
I think creating one esolang and a youtube video on this subject definitely qualifies you to be in the community more than the 99% of us who have never done such a thing.
my favorite esolang is babalang, a decently usable language based on the syntax of puzzle game baba is you
Rocketrace is win
Me!?
I have to try this now
I mean it’s logically complete so… yeah? I guess it COULD work? I need to see someone do it
Define babalang: [noun] notice; alert; caution; sign; warning; announcement; Tagalog / Filipino word.
At my first day of studying computer science at university, every new student got a bag with the name of an esolang written on it. They used it to asign us into introduction tutorial groups. It was the first time I heard of the strange concept of these languages. Mine was 'ArnoldC', a programming language completely consisting of Arnold Schwarzenegger quotes, coding in it is quite fun!
Dang
@@firephoenixgamers8590 RWTH Aachen, western Germany
What does "Get to the chopper!" do?
@@LoneWolf-wp9dn assign variable
@@baptistedelplanque8859 I'm literally laughing at how much sense that makes!
I am the original author of the “J and GolfScript suck all the fun out of golfing” post. I am not proud of it because I have since enjoyed golfing for reasons other than competing on character count. The posting was entirely borne out of a competitive mindset. I have since posted several answers in which I golfed in languages that are woefully unsuitable for golfing (mostly Unreadable). I would prefer to erase the posting from ever having existed, but I accept that it has historical value now.
Amazing summary of the whole esolangs and codegolfing thing. Great video. Love it.
I think, even if you're not proud of the post, it captures well what a *lot* of people were thinking at the time (and still are!) about golflangs. There's an alternate history where the CGCC collectively decided to ban them, and I think it could have happened. Ultimately the site went a different way. I imagine if it banned golfscript we'd have seen a "schism" in the golfing community, with different competing sites.
That post standing and then this comment as a marker to your growth is pretty cool
You were right.
No, I think you had a point. Golfing is fun in any language, and if you want to golf well, your only option is to use an esolang now.
@@rivenroyce9923 What growth? He was right the first time.
It's not lost on me that a person proficient in programming and music, who uses a esolang called Orca also has the surname Whaling.
His song also definitely sounded like a whale (my knowledge about this is limited to Finding Nemo)
The university pastor, in the nineties when my alma mater was still catholic, had the brilliant name John Hacking.
Radboud universiteit Nijmegen, the Netherlands.
@@MeriaDuck Lol my boss at my coding job is named Jon Hacker
@@CrystalLily1302 suuure bro, defo real
@@CrystalLily1302 my Highschool music teacher's name was Mr Hoven. Almost Beethoven.
One of my Latin teacher's first name was Virgile and french teacher's first name was François.
As soon as you talk about using any language for code golf I knew that there'd be someone who make a custom compiler solely to solve that single problem in a single byte. Turn out it's even better.
The performance of the shakespeare code must have been awesome
No, it had a polynomial runtime and used a lot of memory.
@@hendrikd2113 This comment is genius
@@hendrikd2113 You just broke me. Thanks!
Brainfuck is not only Turing Complete, it is actually a PURE Turing machine... Turing defined his machine exactly along these lines. Brainfuck only provides a smart short formalism to handle it.
Brqainfuck is a language that can be compiled in a compiler writtten in Brainfuck.
@@thiesenf Any language that is Turing Complete can do that.
It isn't quite a turing machine since the state is encoded as the linear strip when a turing machine doesn't have that linear restriction (such as it does not need a looping construct, it just has state transitions that exist in cycles)
@@MagicGonads You are absolutly right. However, translating a Brainfuck program in a Turing machine is quite straightforward...
ah yes, enslaved turing
As a math guy I think my favorite esolang has got to be Fractran, which uses a list of fractions and a single input as the entire program. You basically multiply by each fraction in the list until it no longer gives an integer, which becomes the final output. Very fun to play around with and try to figure things out
"Richard Whaling is an accomplished Orca programmer"
wow, great catch!
I've seen a few videos on esoteric languages recently but this was the first one that went into any depth on golfing languages. As a very active member of CGSE back in its heyday (PPCG anyone?), having created at least one golfing language and several more general esolangs myself, I really appreciate all the research that went into this video and I feel it was very well explained. It brings me such joy to see an old esoteric hobby of mine being given this type of attention :)
I really hope someone's made a chef program that calculates pi, with source code that also functions as a recipe for a pie.
(EDIT): Make it a recipe for a raspberry pie, then run the program on a raspberry pi for bonus points.
Does the pie need to taste good?
@@guerra_dos_bichos ofc it does. Needs to be for a rhubarb pie.
@@guerra_dos_bichos Preferably, but I would be happy with just "reasonably edible".
Someone call Gorden Ramsey,I want him to bake and critique the pie recipe
golfscript is actually clean af, less computationally interesting but looks like a more accessible variant to guys like APL
18:00-ish: Actually, one Unicode character is most likely not 1 byte.
In UTF-8, non-ASCII characters take more space the higher the character’s code point is. Æ takes 2 bytes to store, making “ÆP” 3 bytes long.
The file size is worse in UTF-16 (every character is 2 bytes, unless the char code is U+10000 or larger, which makes it 4 bytes) or UTF-32 (every character is 4 bytes).
Yup, that was the mistake I called out I made ~17:59. It's still two bytes, though, because it's not using unicode! From the companion:
> I made two mistakes in the section on Jelly:
> 1. In the talk I mistakenly said that it uses Unicode “to pack in more opcodes”. Most golfing challenges are scored on bytes, not characters, so a single two-byte Unicode character scores the same as two ASCII characters. Instead, Jelly uses a different encoding than ASCII pack in more useful characters. The byte 0000 0100 in ASCII is the End of Transmission signal, while in Jelly it’s ¥. Some golfing languages do use Unicode, but the main saving is in a better codepage.
> 2. I said Æ was “is prime”, but it’s actually the prefix for 2-byte arithmetic functions. ÆP is “is prime”.
So in the codepage they chose, Æ is still a single byte, and Dennis picked Æ because it was a good mnemonic for "arithmetic expressions".
Tongue in cheek pedantry: UTF-16 is not worse than UTF-8 if your characters are in the U+0800 to U+FFFF range (excluding U+D800 through U+DFFF). Those encode to three bytes in UTF-8 but two in UTF-16.
@@0LoneTech the beauty of UTF
OÆP got eem
If it involves tons of CJK characters, though, UTF-16 could be more space efficient than UTF-8, as most CJK characters could be stored using 2 bytes with UTF-16, but takes 3 bytes with UTF-8.
While UTF-32 makes completely no sense yet since IIRC only codepoints up to 10FFFF was assigned at the moment.
My favorite esolang is Java, a pure Shakespirian language of beauty
Yes. Why say print when you can say System.out.println etc.
Lol
SPL.
Lmao
@@lightyagami1752 sout *TAB*
This is genuinely the most entertaining Video i've seen in months, and I have close to no coding knowledge. The absurd quirks of code golfing are just hillarious to me
0 bytes? Pfah. It still needs an interpreter which is some bytes. I can do better. What you need is just memory registers, and in fact specifically for the "is this a prime" question just one memory register capable of storing 1 bit of information, and by that I mean a physical piece of hardware, and that's it, you're done. Let's see how it works:
"Is 2 a prime number?" - the memory register stores either a value that corresponds to true or false. If it's true, then hey, neat, it answered okay. If it's not, no biggie, just give it some time. After a while some cosmic rays or quantum fluctuations or somesuch will hit the register and flip the bit, and then it'll be giving the correct answer. It works the same for non-primes, too, with the correct/incorrect being reversed. With the requirements for correctness and time being as lax as they are, this should actually be good enough.
0 bytes for the program AND 0 bytes for the interpreter AND 0 bytes for the compiler.
it even gives the right solution to p=np if you observe the answer at the right time!
@@cobaltno51 how
@@elitebyte_ lets say 1 in the memory register stands for p=np and 0 stands for p!=np. if one of those answers is true, the register will contain the right answer at some point in time, given that cosmic radiation will flip the register atleast once. if you happen to observe the register at the moment it contains the answer, you can observe it. of course causation and correlation differ in this case. seeing a truthy value in a random sequence may correlate with the answer 'true' to some question, but the question never caused said answer.
Technically that relies on the physical world to work.
@@markusklyver6277 so does every other program
I recently actually created my own esolang, and I'd like to introduce it to others, but I don't really know where to go with it. It definitely falls (imo) under the "computationally interesting" category
The best place to start would be the esolangs wiki (esolangs.org/wiki/Main_Page), because that'll give you a public place to document and talk about it, as well as get feedback from others. There's some overlap between 19th Byte regulars and esolangs enthusiasts; I'm sure if you asked in the chat channel, some people would be up for private convos and feedback.
I suspect there's an esolangs discord somewhere, but I'm an Old who is afraid of discords
Can you please post a link here, under your comment? I would like to take a look, and I bet that I'm not the only one
v
i LOVE perl code golfing. i still remember the most useful program i wrote in perl, and its while()split;chomp; (or something like that). it makes use of a ton of implicit features of perl to read input from stdin and remove all whitespace, then blast it out to stdout. i loved the idea of writing useful code that uses no variables and looks like nonsense
I love how someone literally just made a "Fuck you I always win" golf script.
I think conway's game of life could count as an esoteric lenguage
Then maybe so does Minecraft and The Powder Toy.
@@FlameRat_YehLon I like where this is going
@@FlameRat_YehLon tpt, a name I havent heard in ages...
@@gasparliboreiro4572 Life itself is the ultimate esoteric programming language
I don't think so, GoL would be more of a virtual universe where you could build and program Turing machines, which then could execute programs in various (yet highly complex) languages. There are programs, there are programming languages, there are machines that run those, and there is the universe in which machines are built - game of life is such universe.
I opened the video expecting an boring programming lecture but its actually an good humour presentation of one of the most interesting (and fun) subjects I've seen. I had no idea codegolfing was a thing and that Orca esolang is straight up mesmerizing
I've been messing around with Orca for a long time. I love music and programming so it really hit the spot for me
You need to rename this away from what sounds like a lecture upload from a community college class! This is way too good a vid! "Writing code with Shakespeare and cake recipes: an intro to esoteric programming languages"
Also, the algorithim sent me here, so here's hoping you're gonna see a lot more traffic. This is great!!!
So, while that's objectively a good idea, right now I'm hesitant because
1. The title is pretty long already, and I want to keep it relatively close to the title on the slides
2. (and this is the big one), I am DELIGHTED to know that it sounds like a boring lecture upload. I have a deep, deep fondness for that kind of sucker punch, where people are expecting something boring and are surprised when it's actually high quality. I know it's weird and kinda self-sabotaging; it just tickles the prankster in me.
(This time it was unintentional, but I've also tried to play with that consciously too, like in this parody of clickfarm: www.hillelwayne.com/post/sudoku/)
@@hillelwayne3236 thanks for the response! can appreciate the sentiment, but I feel like that logic only works if you were a teacher, for example, with a captive audience. The thing about having a boring lecture title doesn't mean people get sucker punched, it means they don't click on it. I clicked on this thinking it was about *human* language, even, I couldn't tell from the title or photo that it was for people into computers at all.
When you said sucker punch, I thought of another RUclips channel with similar content: Sucker pinch. It's a similar lecture format, but his NES videos make me laugh every time!
I did not expect to actually watch the whole video. Good job!
This is amazing and life-changing! Thank you so much!
I think the code golfers complaining about golf-themed esolangs are just scared to acknowledge the obvious problem: if your challenges are too easily broken by comedic custom esolangs, then they are probably too simple. What if the challenge is to make a version of the game Sokoban, or a spreadsheet program? Then the people who try to break the challenge with custom esolangs might accidentally build a superior programming language.
MetaGolfScript still easily wins the golfing challenge in both cases, so that's not the issue. On the other hand, I think the problem of code golfing itself is somewhat ill-posed; and that adding outputs to the evaluation metric like the video mentions could be a step towards the solution
There's also the obvious issue (banned by the community) of creating a language specifically to solve a challenge in one byte. Like H, for example.
Now, you have to use a language that existed before the challenge was created. If a newer version is made after the date of the challenge, by default it can't be used, but the older version still can.
@@Nerketur h
I think esolangs have a place in puzzle games quite often since they turn out to be turing complete (such as Opus Magnum, Baba Is You, 7 Billion Humans etc)
This is underrated, please make more content like this
The Python program at around 14:09 can be simplified even further:
1. you don't need a list comprehesion. you can use a generator comprehension, and when it's inside parentheses (from the function call), you don't need another pair of parentheses (so, remove the brackets, -2 bytes)
2. you could use python truthiness, making `x!=1` into `x-1`, and `x%i!=0` into just `x%i` (-4 bytes)
I wrote an interpreter for a variable length coding that packs the most common operation as 1 bit, the 3 as 4 bits, the next 16 as 8 bits, and the other operations following a similar pattern. It was not an esolang, instead it was intended to create bitstring programs that would be executed by a very simple FPGA based soft processor that I never created. It was based on compression techniques.
This is right up my alley.
I made an esolang called Metastack where the program is made from an infinite line of stacks, wherein 2 of those stacks are special. (the command stack and the input stack)
As the program is executed, it destroys itself. To loop it must copy from another stack. To conditionally jump it must swap the command stack with another stack. Yes, really.
It traces its origins to Befunge which uses a stack to store data short-term, and i thought "what if we only had stacks to work with?"
Its interpreter is made with ComputerCraft: Tweaked's integration of Lua.
I haven't found an esolang that used a paradigm like this. If this is the first stack paradigm language (just like 2D paradigms of befunge), i'll be so happy.
(i haven't proven it but i believe it may be turing complete according to esolang wiki on stacks)
Reverse Cat
î7?02=0÷i
î6.?03=-21÷?04=0¶?08=-21÷\\
?333î5.*48
ÿ
?333î5.*48
î6.?03=-21÷?04=0¶
î7?02=0÷i
?881\\
You may be interested in forth: en.wikipedia.org/wiki/Forth_(programming_language)
Re proving TC, my usual way to do that is to either write a brainfuck interpreter or a Tag System (buttondown.email/hillelwayne/archive/vim-is-turing-complete/), both of which are a lot easier to wrangle than a pure Turing machine simulation. In your case, simulating a 2-stack PDA (en.wikipedia.org/wiki/Pushdown_automaton) is enough to prove TC.
This is the conlanging of programming languages. Cool!
This showed up in my youtube recommended and was very interesting to watch! Great presentation, I had googled esolangs recently but didn't really understand much until I watched this video.
No idea how I got to this video as I am not a coder, but I found this marvellously interesting and fun to watch. Cheers! Love the video.
1:42 Intercal, at least the document, was quite brilliant; it was a parody on ALGOL68 which took itself quite seriously (for quite good reasons, ALGOL /ALGOL68 may be considered quite ahead of its time; but as a student and friend of the late C.H.A. Koster I'm probably biassed).
Admittedly, Intercal is more than a bit horrific to work with and not as artistic as more contemporary esoteric languages. But in my opinion it had its place in history.
Amazing video!
this is an amazing video
I'm no programmer, I only ever dabbled a bit in visual programming, but this is good stuff.
Thanks for the content!
18:19 even before seeing that I was asking myself what's the point of Golf Scrips, the beauty of CG should be to "exploit" every nook, cranny and trick of a programming language and come up with the shortest code within that language, a procedure that also has an educational purpose if you're learning a language, comparing different languages is pointless.
Ok now this is what I've been looking for, this is what I've been looking for all this time
love this and hope you got top marks for this
Hah, thank you! It was actually a guest lecture for her class; I made a video because we had a 7 hour timezone difference and I didn't want to do a lecture at 2 AM
One of my favs is PuzzleScript which has a web based tool for building simple 2d puzzle games. I consider it an esolang but is pretty fun to mess around in.
Idk man, doesn't sound like it.
A geometry dash creator called Spu7nix made a programming language that would compile into GD triggers in a level. He used to make a Brainfuck interpreter inside the game. So would GD triggers also count as an esolang?
Yes!
People have taken GD's Esolang of Triggers so far that they've made entire games inside Geometry Dash! Examples are Mastergame by Serponge (and a bunch of his other works), there's a Tic-Tac-Toe game with an AI in GD, an entire Rubik's Cube that is randomly scrambled that you can solves, etc. Given enough time and groups, anything can be made with GD Triggers!
15:27 "its more important to shave a byte than to run in our lifetimes"
This was intensely interesting to watch, very well done
I really liked this, truly makes you take a different look about what programming is.
Finding video game glitches is sometimes like a fancy Piet implementation. It can sometimes create full multimedia experiences with random colors and pixels and even sounds being generated as various processors attempt to interpret nonsense as instructions. Exploits then become intricate works of art. An easily searchable example on RUclips would be the Super Mario 3 Wrong Warp, but from the perspective of artwork, it is more interesting when things "go wrong", as that is when you get a cacophony of random sprites and gibberish pixels smeared all over the screen.
I don't know how the algorithm knew that this was my jam, but holy shit this was cool.
make more content! you're amazing.
This makes me wanna take your friend' "Psychology of Programming" class!
That's a violently American pronunciation of "Piet" you've got there.
*11:58** OWWWW!!!! My eyes!!! Fucking flash-bang!!!*
(You could have had a gradient transition there! From black, through gray, to white, over like 10 seconds or so!)
Noted for next time I make a video! Which will probably be in 2025. I have no idea how people manage to regularly make videos
You literally became the image of the community just by making the biggest video about it. Quality video-making content too!! Ur awesome keep it up!
Such a good video! Really got me into seeing how beautiful coding is. Hope you continue with the channel!
I would like to see you uploading more in future ngl, I enjoyed the video a lot
Fun fact. The game Conway's Game of Life is Turing complete.
There are implementations of Game of Life in Game of Life.
@@fussyboy2000 That's some next level stuff. I have written the game of life, and done small optimizations, but no where near what others have done. Also, the creations people have made with it are astounding, way above me to figure out.
One thing I don't understand about the FALSE program:
After the line where the input is checked, we now have two copies of the same boolean on the stack. This is because we need the second one for the "else" part essentially.
However, when f is executed, we now have our input, and then a boolean on top of that on the stack.
Usually, you would use the backslash to swap those around, so shouldn't that part look like this?:
~[\f;!.\]?
And also, the comparison to 8 would compare the boolean to 8, and not the input.
Am I missing something?
Edit: I am right (I think)! The example on the website of the guy that invented the programming language is incorrect (again, no guarantees)! The correct code would be:
{ factorial program in false! }
[$1=~[$1-f;!*]?]f: { fac() in false }
"calculate the factorial of [1..8]: "
ß^ß'0-$$0>~\8>|$
"result: "
~[\f;!.\]?
["illegal input!"]?"
"
See the backslashes? They are needed to push the boolean down so that we can actually compare the number 8 to the input.
Another edit: it seems like the backslashes got lost when pasting the code around for the website, and that makes sense since backslashes are the escape character for control characters.
7:05 This has to be my favourite one so far
Shakespeare can also be interpreted as a steganographic programming language, since it can be used to hide source code.
Excellent video. I love discussions of the history of programming languages. Keep it up!
Absolutely amazing and insightful vid, an honest thank you for making it!
My favourite esolang is Haskell.
really interesting stuff. code is art
great video and I agree with the conclusion
That song by Richard hit's different/ Is there someplace I can listen to the full version? I have found a album on band camp but sadly this song wasn't there
Full piece is here: instagram.com/p/BzVjW7LBv1K/
I just stumble on this video. Man that was quite a ride! Golfing seems interesting :p thank you!
- Sign in to RUclips
- Drop a great video
- Sign out
GG my friend.
A fun esolang is Rockstar by Dylan Beatte (I think that's how you spell his name). A language that uses power ballad lyrics for its code. It's glorious
Multicoding also used in other languages. E.g. type is one of the aspect you usually get. In Mercury you have modes and insts. It's just such languages usually use similar way to encode/represent that information as main code.
But colorForth uses formatting as part of language and it is still generic language. If you think about how we have all that syntax highlighting in editors/IDEs trying to be in sync with how source code interpreted, it because mind blowing that colorForth solves that problem in its root cause since highlighting is a part of language.
Will you make more videos?
Because this was awesome.
orca seemed kinda similar to Minecraft's redstone
Then should we call Minecraft redstone a programming language?
@@stelcxantisto I think yes, because it can be programmed to do very complex things, it's even turing complete, so it can be considered as esolang in its own way probably
@@stelcxantisto Yup! There's no formal category of esolang, but I like the term "game-emergent language", where people create a programming language inside a game to do complex things. Factorio circuit networks also count, as do Super Mario Maker calculators: ruclips.net/video/a1YzOVEbguw/видео.html
@@hillelwayne3236 magic the gathering is turing complete :)
I am half time in the video and am enjoying it...
This video is incredible, it realy is. Haven't watchd a video this entertaining in a while.
This comment is from 5 months ago and I do not know if the misspellings were intentional or not.
very good.
I knew you would mention Orca!
It's a really fun language and honestly so inspiring in making music.
So far Shakespeare is my favorite because it's so ridiculous
Thanks. I had no idea esolangs were used for more than just fun
getting some jan Misali/conlang critic vibes here
Orca, nice! this is the kick in the pants I needed to actually go and start making stuff with it
yeah I agree i don't like golfscript or anything else like that
I can make a zero byte script find all the primes because the compiler will generate a program that finds all primes whether you give it a file or not
I think its like putting the golf tee in the hole and being impressed youre getting 0 strokes
oh lmao he then said something like it
though more impressive
My favorite esolang has to be HolyC. Not necessarily due to anything particular except the background of it, an absolutely fascinating story.
Is it functional? If you want to talk to talk to God or make pictures of elephants, then yeah, other wise, not really.
I’m sure most people here have heard of it, but if somehow you have not heard of Terry A Davis and his coding, give him a look up.
Great video!
This was really interesting, I enjoyed it even though I couldn't write you a hello world program
I thought about how short programs could be or how graphic programing could look like but... wow i didn't know this whole genre existed!
orca kinda looks like the roguelike version of puredata. very cool :)
I was hoping to see the example shown in the screenshot (for computing PI).
two-dimensional coding languages! this concept alone is blowing my mind, but so is metagolfscript!!
Thanks this was fun. I occasionally use ("use" ;)) Orca and found myself golfing, but this is totally next level haha. Thanks for the intro and drawing those trajectories between languages
Great video. Interesting!! I knew nothing about any of this. I figure this was a lot of work to create but please more vids.
great vid cant believe it has so little views
Such a informative video! Great job!
Scratch was technically finished in 2001.
That orca thing seems really fucking cool!!
Minecraft Redstone is an esoteric programming language and I'm preeetty sure it's Turing complete
Thank you for that great video!
This is a really interesting video! Will you make more videos?
Is it really valid to call orca a programming language, as opposed to a musician tool similar to chiptune trackers and physical midi grid instruments like a Launchpad? Or perhaps those are programming languages to? What is a programming language? Sorry, got a bit philosophical there... Anyway, very interesting talk and a lot of good food for thought.
most important piece if knowlege i got from this video, is that there is are languages called "Brainfuck, but every + is replaced with the bee movie script"
"The Psychology of Programming" sounds like the coolest fucking class