I couldn't stop laughing for a solid 5 minutes when I discovered that INTERCAL had a COME FROM instruction. This was after I had spend countless hours debugging spaghetti code on my Casio Basic calculator, so I was very familiar with the nightmares of GOTO.
@@SalahEddineH Oh yeah, the GOTO hell, I remember it well. Luckily, back in those days I had the chance to learn Pascal in school while I was learning BASIC on my home computer. Pascal is highly structured and you can transfer some of its concepts into BASIC, like, for instance, using GOSUB/RETURN where in Pascal you would write a "procedure". BASIC doesn't enforce that, so you can still write spaghetti code if you like.
Some other esolangs to look at: *Malbolge* : designed to be as difficult to program in as possible. So much so, in fact, that the first "Hello World" program was created by _literally bruteforcing_ with another program written in Lisp. *Befunge* : designed to be as difficult to _compile_ as possible. The programs are two-dimensional, with specific instructions for changing the direction of travel across the program plane. And my favorite, *HQ9+* : "What is a programming language, really?" is _not_ Turing-complete, as it only has 4 instructions: H - Prints "Hello, world!". Q - Prints its own quine. 9 - Prints the complete lyrics of _99 Bottles of Beer_. + - Increments a variable. No, you can't read the value of that variable.
When I saw the title said "CURSED" languages, I was so hoping for Malbolge, since I'm pretty sure it's the maximally cursed programming language. Other than INTERCAL, none of these were particularly cursed, at least as far as esolangs go.
malbolge got pretty easy to use since there are pre-processors that just remove the offset. befunge is a staple, but hello world is pretty easy to do. i would suggest "funciton" or "efghij"
So if whitespace ignores all other characters, you should in theory be able to write code that compiles both in whitespace and in another language at the same time...
Maybe, although the non-whitespace code will most likely look weird: you can't format it as you like, since you need to use whitespace characters to do so. And not all languages are very compatible with this. Python would be very difficult, for instance, due to its enforcement of indentation. Languages where a newline can terminate a statement, like JavaScript, would present a challenge, too. (Though in the case of JS, a newline only terminates when it comes after a _complete_ statement, so I imagine that could be leveraged.)
It's probably possible but also probably difficult to not screw it up. You'll probably have to think of the space you put in the "normal" code as well. like say ... in "let variableName = 'value';" I have 3 space (although only one was nescessary). I assume those 3 spaces will be taken into account for the whitespace programme. So you'll have to make pieces of code that look really weird like having a bunch of spaces between your language keywords and their variable names but not always the same amount in each line. almost like if a drunk person would I wrote the "normal" code
@@Ruchunteur it's an old idea and not *that* difficult to not screw up. For whitespace lines that don't match any visible code line that you'd want in the given spot you can use visible code comments (there's no way to comment-out whitespace code, everything that's not whitespace is a comment and everything that is whitespace is not) or simply write the whitespace in an otherwise empty line and continue the visible code in the next one. The visible code won't be pretty, but it'll work.
Here's hello world in Rockstar: Shout "Hello World!" Rockstar was made by Dylan Beattie so everyone could be a rock star developer. Its programs can be written so that they make metal power ballads. Here's Dylan's rendition of FizzBuzz: Midnight takes your heart and your soul While your heart is as high as your soul Put your heart without your soul into your heart Give back your heart Desire is a lovestruck ladykiller My world is nothing Fire is ice Hate is water Until my world is Desire, Build my world up If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing Shout "FizzBuzz!" Take it to the top If Midnight taking my world, Fire is nothing Shout "Fizz!" Take it to the top If Midnight taking my world, Hate is nothing Say "Buzz!" Take it to the top Whisper my world
fun fact on brainfuck, the smallest compiler is less then 200 bytes. That is also a pretty fun exercise if you want to challenge yourself. I've not tried to optimize one, but I have written one in C
Рік тому+36
In college we had a project where we implemented a brainfuck interpreter on an FPGA. It was a lot of fun.
I wrote a zero-byte Brainfuck compiler. Just use the BFC language: when you feed BFC an empty source file, it outputs a Brainfuck compiler as an executable. Code golf is pointless. Some languages have built-ins for highly complex operations, which makes them good for code golfing. Well, BFC has a built-in for a Brainfuck compiler; namely, the empty source file. Code golfing is a fool's game. I should clarify that BFC doesn't actually exist.
@@emilien.breton it's a very interesting game within the constraints of a single language... obviously comparing across languages is pointless. it promotes a lot of creativity and deep understanding of a particular languages. Is it practical? 99.9% of the time no, but it's fun and interesting.
For sure. I should've taken the time to phrase my original comment a bit better. Code golfing within a given language is a nice challenge. Trying to come up with the shortest solution across all languages, though, is a bit pointless. I was trying to point out that the shortest Brainfuck compiler being 200 bytes doesn't mean much because we're not restricting ourselves to one language or to a set of languages.
@@emilien.breton well, it the size of the actually executable that turns BF code into binary that we are measuring. Not the size of input file to create the compiler. The restriction is binary, as small executable as possible that can turn BF into a executable file.
I think my favorite of the esoterics is still Shakespeare. You have to write mini-plays (and use actual Shakespeare characters as the variable names) to do anything.
Aahh, esoteric languages are always fun to look at. Though I have some that I would like to mention. 1) Malbolge If you thought Brainfuck was funny, this one is way more extreme and uses way more characters 2) HolyC This one is interesting as it basically is C with a dialect but instead of being compiled this one is interpreted. And yes, this one was used for TempleOS by Terry A. Davis 3) Lolcode This one is if the lolcat memes became a language and it's pretty funny to look at 4) Piet Have heard of it during my apprenticeship. You basically have to make pixel art to program. It is named after the artist Piet Mondrian and uses his art style. Great video btw, haven't heard of some of them and they are interesting, funny and sometimes really cursed
How esoteric is HolyC when it is actually good? I wish I had HolyC on Linux. Yes I know there are compilers, but I wish I had HolyC plus it's JIT repl. I would legit do a large amount of my coding in TempleOS if its virtualization didn't burn huge amounts of CPU on idle, if it was easier to move files in and out, and if its compiler knew how to use SIMD.
@@JasonMitchellofcompsci Yeah, HolyC is very interesting to see (pun intended). I would also love to do some stuff in it, would be interesting to work with. And it's very much a great accomplishment by Terry A. Davis. He was really crazy but has done stuff that most programmers wouldn't have done or couldn't be doing.
3 questions about Velato: 1. Is it tuning complete? 2. Does testing sound like warming up? Scales? 3. How does it handle asynchronous calls? Rests? Or is it prone to "DS Al Coda Hell"?
Fun thing about Whitespace is that you can hide it inside the source code of programs written in other languages. So, when you compile or run the code in one language, it does what you expect it to do, but then when you run it in a Whitespace interpreter, it does something else.
@@FerinitheBloodHusky Not in the game itself, when the code is compiled in the language it's written in it would remove the whitespace code from the resulting executable files.
@@VestedUTuber it depends! not all games are distributed in an entirely compiled form, quite a few games have significant portions implemented in a scripting language like lua or javascript
@@icanonlysufferI use it for Docker compose and like it, but I imagine the syntax and indentation parts could be annoying. I’m sure there are other things as well.
YAML is one of those things where you can use it for years and like it without realizing how absolutely horrifying it is. But once your eyes are opened, you can't go back.
Intercal looks very much like a complete parody on ALGOL and COBOL combined. Very long ago I read part of the manual. It is quite hilarious especially if you do not want to really understand-understand it.
But that just specially designed strange languages, not cursed. I think Perl6 was cursed, they renamed it to Raku, but that didn't help to get rid of the curse.
Every version of Perl is cursed IMO, the core philosophy of the language is unholy. It's worse than PHP, which ain't no saint either. JS has its quirks, but it's nowhere near as bad as those two.
Thank you for bringing Velato to my attention. I was at least passingly aware of the other four, but that's a completely new one for me. Definitely going to explore it in the future!
Whitespace would be far more cursed if it used more whitespace characters. My personal enemy is the non-breaking space, because on my keyboard layout it is option+space, so it isn't that rare to accidentally make it when trying to pipe or curly brace or the like and letting go of option a little to late, or pressing it a little to early. The cursed thing is, it appears to be a space, but is included in non-whitespace from any language perspective. So you get an error message like x is not defined. You go crazy thinking: "But its right there", but what the message is really telling you is that non-breaking-space followed by x is not defined, but in printing it out, it turns back to space. Whoever allowed there to be more whitespace than space & newline should be shot. Tab is multiple spaces, carriage return is non-sense, and do not even think about designing anything different.
Non-breaking space is fine. What should worry you are zero-width joiner, word joiner, zero-width no-break space, soft hyphen, and other potentially invisible characters. U+202e is another classic, but that at least tends to reveal its presence. Also enjoy the U+1d5a0 through U+1d5d3 range.
CR and LF make a lot of sense if you consider where the keyboard comes from. On a typewriter with an actual piece of paper, you need both to accurately move to the next line. Carriage Return returns the (cursor) position to the first character in the line, and Line Feed moves the sheet upwards. If you only used CR, you would overwrite the previous text, which is a legitimate but different use case. And with only LF, well, you'd constantly be writing on the right edge. In "modern" programming, the "jump to the first position in the line" is probably implied even if you only encode your newlines as LF, but on actual paper, those are two different instructions.
@@LORdREDSTOneNR1 "is probably implied" no it _is_ implied, its not uncommon for files to be encoded with only LF and i have never seen a text editor only advance the line without also returning the cursor, an editor that only supports CRLF will just not see any linebreaks in an LF only file the split between CR and LF is entirely reasonable, especially when you remember that when ASCII was designed printers were the primary way to get text out of a computer, but nowadays they've been redundant for years though the dichotomy of some files encoding linebreaks with CRLF and others doing it with just LF will probably remain until the death of society, but that also doesn't really matter (unless you're writing a parser, but that is the only time you really have to care) every single text editor on any modern system just implicitly detects and abstracts away linebreak encoding (afaik even notepad (which previously was the only notable exception) now does this) its just a funny little legacy quirk
10:30 For me, a professional programmer who started coding as a kid 42 years ago (so back in the 80s), Stuck is the clear winner. With zero input from the programmer, no opportunity for errors. Brilliant. I wonder what 52 other functionalities the one letter programs A..z will produce 😉
If you remember in the late 2000s early 2010s there was a constant call for rockstar developers. Dylan Beattie created a language called Rockstar which uses rock lyrics to program and a joke, but now no one is asking for rockstar developers any more.
It would be cool to try and encode a whitespace program into the source of a regular language. That way if you run/compile it in the regular language you get a regular program but if it were to be run through whitespace you get a cool little easter egg.
Those languages are amazing! I couldn't stop laughing all the way through this video, especially when it got to "whitespace"! I've now been inspired to create my own esoteric language. I'm working on a few ideas, but the main criteria for the language so far are these: (1) The source code must look like it was produced from the programmers' back end instead of the front; and (2) The source code must be as unclear as possible. Given these criteria, and the fact that I've now reached version 86 of my compiler, I've settled on the name "x86 arse-em-blur language". I hope no-one has come up with a similar name before. ;-)
One pretty well known esolang that shows the absurdity of JS: JSFuck: A subset of js which only uses 4 characters ([]()+ and !) to let you write anything you could write in JS.
Bro how much you have even worked with Java script. It's the most used language today every heard of all these lastest technology are build on js. By the way I am a driver developer so I usually work with c++ but with my hands on web development also I say js is very beautiful language. And I will end up saying it is the most fancy and most vast and most usefull language todate Literally everything around you is js what else you want when a single sole language is able to serve as a server and also as a front and also as a database
While I have absolutely no idea how to translate the music to code in Velato, I can tell certain actions are being repeated based on certain chords and little musical terms that get repeated. Very clever.
Dude I write APL daily for some wave array interpolation, transformation and manipulation. 😂 it's not cursed , it's actually much pleasant to write than awk which does similar things. I think Racket or UiUa are more esoteric than APL .
I think my favourite esolang is Piet where the code takes the form of a bitmap image made of of blocks of colors and the code is processed by a pointer that can move through the image in any direction (direction chosen by the code). The actual instructions are made when the pointer moves from one color block to another and depends on how many hue or lightness steps were taken to arrive at the new color (moving from a blue block to a light green block is 4 hue steps and 2 lightness steps which is the "input number" command).
MIDI!! That's wonderful! Just creating the source code is a chore! But the result is very interesting. I'm familiar with Brainfuck and that transliteration list you showed for Ook made it look almost useable. Whitespace is an interesting proof-of-concept but I can't imagine it being of any practical use. Golf? Sounds like a variation on the many obfuscation contests I've heard of. Of course, Brainfuck was developed (on an Amiga!) in an attempt to come up with the smallest practical compiler. INTERCAL is clearly intentionally cursed. You have to write a program to come up with the appropriate values?!
Just wait until you see Malbolge. It's based on ternary digits, any instructions are encrypted as they are executed, and there's one component called "the crazy operation." It took a beam search algorithm just to write a "Hello World" program out of it.
There are many more whitespace characters. Just not in ASCII. For example, the en space and the em space, the non breaking space. If we want to include things which aren't really white-space (like newline) then there is also things like the carriage return and line feed. Then we have things like zero-width joiner or zero width space
I love how these languages are so ridiculous that, despite having almost no understanding of programming, I can still tell how cursed they are from just seeing the code here.
I wrote my first program in the summer of 1969. I was 15, and the language was APL on a Dartmouth Timeshare system. Then, my first year in college (1971) the only computer course at Stevens Tech was part of the electrical engineering dept: FORTRAN IV. Punch cards and batch processing. Yikes! When I got to work, I was thankful that the language was now BASIC. However, my talent happened to turn out to be DB design. And so, SQL was next, which is a language I enjoyed alot. And the version I used after INFORMIX was Unify ACCELL, an event-driven SQL. In those days, you had to be flexible and do a lot of learning on the job. Different time. Thanks for the vid to bring back some memories.
The good thing in whitespace is that you can just put in the comments describing what you are doing in-between the whitespace. (Or put something else in-between, if you want to annoy your readers.)
Dang, I was kinda hoping you would do my favorite esolang, which I was very active with for a while in the 90s: Befunge. Unfortunately it was PC only and had a very limited program space. The revised version with a theoretically infinite program space was never finished, unfortunately. Edit: I was wrong. Apparently there's been significant development after discussions on the befunge mailing list about the new version semi-broke down in 1998.
I watched many coding channels talk about printing hello world in obscure programming languages and thought, hmmmmmm why watch this video. Im glad I did, as you were by far the only one to truly explain what the code is doing which just comes to show your skills. You earned a subscriber, will look forward to more content from you broooo. peace
Check TECO. It was created (evoluted) as just a text editor but: - it could be used as a programming language, - it was the base to create the very first version of Emacs.
My favorite of the "Turing Tar-Pit" (minimal) languages is probably Unlambda, which is Turing-complete without a lambda (abstraction, function) operator; it uses the S and K combinators instead. But as the video notes, some esolangs are just weird domain-specific languages. A couple I've done actual work with are Praat, the scripting language for the Praat audio-processing software; and the weird-but-relatively-mainstream CL language for IBM's AS/400, which (at least at the time) had only one iteration mechanism: Perform this routine for each record in a file. So the only way to loop was to have a file with the appropriate number of records. These were languages that made COBOL seem elegant and convenient. (Actually Micro Focus managed OO COBOL with the optional modernized syntax *is* fairly elegant and convenient, but then it's not much like standard COBOL, particularly pre-1985 COBOL.)
In the programming language I'm creating right now most things are pretty strange, but a hello world program fits on the following line: out:"Hello World!"→end:0 By the way, that language is called arrowey because it uses arrows to guide the parser through a two-dimensional code grid.
And here I thought Haskell was the most pain I'll ever be in. 😆 Btw, nice neovim/zsh setup! Do you have the configs somewhere? I think you got me inspired to finally get mine properly setup, and I like your font and colour scheme!
@@lorensims4846 I don't see how since one feature is that any alphabetic strings can be variable names. Removing special characters would break this convention.
Those are some pretty twisted languages. Around the 7:12 mark the ick compiler was saying you need to "resubnit". I wonder if that typo is deliberate or not. :)
Imagine an open-source malware, written in whitespace, with legit looking C in the sourcefile. Analysts would go round and round searching where the malicious behaviour comes from. (Do not try at home😂)
While I have never actively tried to learn any esolangs I do have a bit of experience with them, as I have solved a number of programming puzzles which used them. The puzzles didn't involve writing any code of your own, but did involve clues which led to existing esolang code. The trick was then to find out which esolang it was, and how to run it. Sometimes the output of the program would provide a new clue, other times the output was a red herring and the real clue was hidden either in the esolang code itself or in something the code did along the way. Two of the esolangs I encountered back then I found particularly interesting: *Befunge* and *Piet.* Both are 2-dimensional programming languages, meaning that rather than the code being interpreted from left to right one line at a time, the instruction pointer moves around the code in all of the cardinal directions, left, right, up and down. The code is a 2-dimensional grid of instructions. In the case of Befunge, each instruction is a printable character, and so Befunge code consists of text. A Piet program however is an image, and instructions are defined as transitions between pixels of different colors. Of the two, Befunge is definitely the most accessible.
There's also the non-breaking space at ASCII code 160, but I'm not sure if it's the same in all character sets, so I think the whitespace language probably ignores it.
That's not ASCII, technically. ASCII only has code points 0..127. 128..255 are not often referred to as "extended ASCII", and of course there are numerous code pages, standard and not (ISO 8859 series plus OEM ones), but they're not part of ASCII proper. ASCII does have more whitespace characters: CR and LF are separate code points, and there are also FF and VT. (Everyone always forgets about poor vertical tab, once so useful with preprinted forms.) But as some people have suggested in other threads, if you want a larger character set for Whitespace, Unicode is really the way to go.
Only one I've actually used myself is Chef, a silly little language uses baking-related words as keywords. It's an easier one to comprehend since it's not TOO far removed from modern programming languages, but still fun to type out things like "put x into the mixing bowl"
The purpose of "Hello world" is not evaluating a programming language's abilities, but to get accomplished with the language's developing/deployment cycle. Outputting a string is trivial from the language perspective, but requires mastering the complete edit/compile/run cycle of the programming environment.
Someday someone will make one of these videos using Armok, the language inspired by Dwarf Fortress. Program by giving dwarves tasks! ...careful not to kill them before you're done with them.
Reading through this brought back some memories. My first interface with a computer (pun intended) was about 1980 with a beautiful all-in-one (including printer), the HP-85. Took it home on weekends to learn and soon ended up typing "Hello World" It was the best of times, it was the worst of times.
10:13 wheres the parentheses after print why is there a semicolon end of statement expected unresolved reference 'i' unresolved reference 'j' unresolved reference 'i' unresolved reference 'j' statement seems to have no effect and can be replaced with a function call to have effect parameter 'i' value not used parameter 'j' value not used this isnt python
I have been slowly learning to program in Python. But I've made a personal commitment to always print "hello , I am “ its a pointless but fun thing I do to be rebellious 😅
It will be annoying if Velato is actually a translator for an alien tongue. (There are several novels and stories with the idea of tonally shared concepts involved. R.A.Heinlein wrote a couple.)
and the music shows its relation to math and such even here, the repetition of the actions clearly can be heard, and makes somewhat pleasing. probably most people just pushing down a few keys on a piano would make a much worse 'music.'
Hear me out: A "soundlogger" program that constantly attempts to compile nearby noises in Velato and execute them. Then make a song or video out of the midi file to run some code. Could save an entire software toolkit into your Spotify songs xD (I'm aware this is silly and impractical, but I think it would be super cool)
From the “normal” languages: SQL and Prolog. You look at a tutorial and think: well that looks almost easy. Then you look at what the true experts create: very small expressions with incredible power, and you think: O M G.
For some reason I decided one day to only ever print "hithere" instead of "Hello World". Now I instinctively use print("hithere") any time i want to debug anything
I love how Stuck is a perfect example of a golf language. The reason why you write out Hello World is to learn the basics of a language. Golf languages don't understand the reason why you're coding, they just want to get it done in as few characters as possible. So you compile an empty file for Stuck, get your "Hello World" out there successfully... and have learned absolutely nothing about the language. Congrats, that's Golf languages in a nutshell.
I use Davinci Resolve and After Effects. I have my own animation pack that I coded for a lot of the effects I use often on DR (zoom, pop, blur etc). I'm going to put this on sale probably near the end of the year so anyone can use them!
In the old days, when operating systems were simple and protection was not much of an issue, you could write self modifying code. Bonus points if you did this in assembly language. I once wrote self modifying code in the Lotus 1-2-3 macro language (the pre-cursor of Excel). This was actually useful.
It was a pretty common trick in IBM 370 assembler to code a first-time switch at the beginning of a loop for initialization. You specified a NOP that pointed to the first instruction in your loop beyond the initialization code. The first instruction in the initialization changed the NOP to an unconditional branch. Why didn't we just initialize the loop before we got to it? Who knows? Maybe it was more fun this way.
Back in the day there were a few people who used the Unix text editor vi as a programming language. The whole program is basically a series of key mappings (in other words, self-modifying code). As an example, I remember a vi program that would solve the Towers of Hanoi problem and display the results in real time in the text editor. If anyone's interested, a web search will give you the code. It was written in 1991. No idea if it works in Vim though.
The Control Data 3000 series systems mandated self-modifying code for any real-world program. To call a subroutine at address X you used the RTJ X instruction, which stored the address of the next (i.e. the return) instruction at location X and began executing code at location X+1. To return from the subroutine, you execute a JMP,I X (jump indirect to the location contained in X.) Writing reentrant code was impossible in Fortran and COBOL.
Not sure why a put putting (are those the right works to use there?) a ball into a whole was chosen as the shot when he is saying "whilst some are created for very specific use cases", - is he implying puts are created for the specific use of putting a ball into a hole? Holy, that wholey makes sense when you think about it - but the sound of the ball going into the ball was very satisfying.
My favorite part of INTERCAL is a truly cursed control flow statement. You think GOTO is bad? INTERCAL has COME FROM.
I may have to do a whole video on INTERCAL. COME FROM is truly cursed!
I couldn't stop laughing for a solid 5 minutes when I discovered that INTERCAL had a COME FROM instruction. This was after I had spend countless hours debugging spaghetti code on my Casio Basic calculator, so I was very familiar with the nightmares of GOTO.
@@dreamsofcode
Like you said in the video, most esolangs are bad versions of C, intercal is a bad version of the languages C was made to replace.
@@SalahEddineHIt gets better. Intercal has forking non-deterministic come from. And self modifying code.
@@SalahEddineH Oh yeah, the GOTO hell, I remember it well. Luckily, back in those days I had the chance to learn Pascal in school while I was learning BASIC on my home computer. Pascal is highly structured and you can transfer some of its concepts into BASIC, like, for instance, using GOSUB/RETURN where in Pascal you would write a "procedure". BASIC doesn't enforce that, so you can still write spaghetti code if you like.
"Hello World" in Velato actually sounds surprisingly nice
yeah especially the end. the finishing chord really wraps it up
I was expecting a rick roll and I'm disappointed
lol@@henriquekirchheck
I thought the same@@akasakasvault7597
@@henriquekirchheck - now you have a programming language you can use to write that Rick roll.
Some other esolangs to look at:
*Malbolge* : designed to be as difficult to program in as possible. So much so, in fact, that the first "Hello World" program was created by _literally bruteforcing_ with another program written in Lisp.
*Befunge* : designed to be as difficult to _compile_ as possible. The programs are two-dimensional, with specific instructions for changing the direction of travel across the program plane.
And my favorite, *HQ9+* : "What is a programming language, really?" is _not_ Turing-complete, as it only has 4 instructions:
H - Prints "Hello, world!".
Q - Prints its own quine.
9 - Prints the complete lyrics of _99 Bottles of Beer_.
+ - Increments a variable. No, you can't read the value of that variable.
When I saw the title said "CURSED" languages, I was so hoping for Malbolge, since I'm pretty sure it's the maximally cursed programming language. Other than INTERCAL, none of these were particularly cursed, at least as far as esolangs go.
Befunge is definitely interesting, given it is self-modifying
malbolge got pretty easy to use since there are pre-processors that just remove the offset.
befunge is a staple, but hello world is pretty easy to do.
i would suggest "funciton" or "efghij"
befunge is the coolest shit to me
Don't forget HQ9++, which adds object oriented features to the language.
So if whitespace ignores all other characters, you should in theory be able to write code that compiles both in whitespace and in another language at the same time...
Maybe, although the non-whitespace code will most likely look weird: you can't format it as you like, since you need to use whitespace characters to do so. And not all languages are very compatible with this. Python would be very difficult, for instance, due to its enforcement of indentation. Languages where a newline can terminate a statement, like JavaScript, would present a challenge, too. (Though in the case of JS, a newline only terminates when it comes after a _complete_ statement, so I imagine that could be leveraged.)
It's probably possible but also probably difficult to not screw it up. You'll probably have to think of the space you put in the "normal" code as well. like say ... in "let variableName = 'value';" I have 3 space (although only one was nescessary). I assume those 3 spaces will be taken into account for the whitespace programme. So you'll have to make pieces of code that look really weird like having a bunch of spaces between your language keywords and their variable names but not always the same amount in each line. almost like if a drunk person would I wrote the "normal" code
Just not python
@@Ruchunteur it's an old idea and not *that* difficult to not screw up. For whitespace lines that don't match any visible code line that you'd want in the given spot you can use visible code comments (there's no way to comment-out whitespace code, everything that's not whitespace is a comment and everything that is whitespace is not) or simply write the whitespace in an otherwise empty line and continue the visible code in the next one. The visible code won't be pretty, but it'll work.
How about writing one that does the same thing in both whitespace and Python?
Here's hello world in Rockstar:
Shout "Hello World!"
Rockstar was made by Dylan Beattie so everyone could be a rock star developer. Its programs can be written so that they make metal power ballads.
Here's Dylan's rendition of FizzBuzz:
Midnight takes your heart and your soul
While your heart is as high as your soul
Put your heart without your soul into your heart
Give back your heart
Desire is a lovestruck ladykiller
My world is nothing
Fire is ice
Hate is water
Until my world is Desire,
Build my world up
If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
Shout "FizzBuzz!"
Take it to the top
If Midnight taking my world, Fire is nothing
Shout "Fizz!"
Take it to the top
If Midnight taking my world, Hate is nothing
Say "Buzz!"
Take it to the top
Whisper my world
BABA IS YOU
fun fact on brainfuck, the smallest compiler is less then 200 bytes. That is also a pretty fun exercise if you want to challenge yourself. I've not tried to optimize one, but I have written one in C
In college we had a project where we implemented a brainfuck interpreter on an FPGA. It was a lot of fun.
I wrote a zero-byte Brainfuck compiler. Just use the BFC language: when you feed BFC an empty source file, it outputs a Brainfuck compiler as an executable.
Code golf is pointless. Some languages have built-ins for highly complex operations, which makes them good for code golfing. Well, BFC has a built-in for a Brainfuck compiler; namely, the empty source file. Code golfing is a fool's game.
I should clarify that BFC doesn't actually exist.
@@emilien.breton it's a very interesting game within the constraints of a single language... obviously comparing across languages is pointless. it promotes a lot of creativity and deep understanding of a particular languages. Is it practical? 99.9% of the time no, but it's fun and interesting.
For sure. I should've taken the time to phrase my original comment a bit better. Code golfing within a given language is a nice challenge. Trying to come up with the shortest solution across all languages, though, is a bit pointless. I was trying to point out that the shortest Brainfuck compiler being 200 bytes doesn't mean much because we're not restricting ourselves to one language or to a set of languages.
@@emilien.breton well, it the size of the actually executable that turns BF code into binary that we are measuring. Not the size of input file to create the compiler. The restriction is binary, as small executable as possible that can turn BF into a executable file.
I think my favorite of the esoterics is still Shakespeare. You have to write mini-plays (and use actual Shakespeare characters as the variable names) to do anything.
Chef is my number 2, for similar reasons (code looks like a recipe, some people try to make programs actual recipes for food).
@@benjaminmiddaugh2729three pounds of VAX? 😂
Charmander needs HUGS
Hmm. I might just have to look into that.
Aahh, esoteric languages are always fun to look at. Though I have some that I would like to mention.
1) Malbolge
If you thought Brainfuck was funny, this one is way more extreme and uses way more characters
2) HolyC
This one is interesting as it basically is C with a dialect but instead of being compiled this one is interpreted. And yes, this one was used for TempleOS by Terry A. Davis
3) Lolcode
This one is if the lolcat memes became a language and it's pretty funny to look at
4) Piet
Have heard of it during my apprenticeship. You basically have to make pixel art to program. It is named after the artist Piet Mondrian and uses his art style.
Great video btw, haven't heard of some of them and they are interesting, funny and sometimes really cursed
I feel like part 2 is going to have to come soon!
How esoteric is HolyC when it is actually good? I wish I had HolyC on Linux. Yes I know there are compilers, but I wish I had HolyC plus it's JIT repl. I would legit do a large amount of my coding in TempleOS if its virtualization didn't burn huge amounts of CPU on idle, if it was easier to move files in and out, and if its compiler knew how to use SIMD.
@@JasonMitchellofcompsci Yeah, HolyC is very interesting to see (pun intended). I would also love to do some stuff in it, would be interesting to work with. And it's very much a great accomplishment by Terry A. Davis. He was really crazy but has done stuff that most programmers wouldn't have done or couldn't be doing.
Since when was HolyC interpreted?
@@avade5645 I think I mixed up "interpreted" and "JIT compiled"
3 questions about Velato:
1. Is it tuning complete?
2. Does testing sound like warming up? Scales?
3. How does it handle asynchronous calls? Rests? Or is it prone to "DS Al Coda Hell"?
Calculating the square root of 72 in order to factorise it was pretty cursed tbf
After looking at these languages, I even forgot what programming knowledge I had prior
🤣🤣
Fun thing about Whitespace is that you can hide it inside the source code of programs written in other languages. So, when you compile or run the code in one language, it does what you expect it to do, but then when you run it in a Whitespace interpreter, it does something else.
could be used to hide stuff in a game maybe?
@@FerinitheBloodHusky
Not in the game itself, when the code is compiled in the language it's written in it would remove the whitespace code from the resulting executable files.
@@VestedUTuber it depends! not all games are distributed in an entirely compiled form, quite a few games have significant portions implemented in a scripting language like lua or javascript
@@dustinm2717
In those cases it could work, then.
Technically yes, but what kind of monster would compromise indentation for any reason?
As a musician/programmer combo person, I definitely wasn't expecting to find representation in this video 😂
The Whitespace team really dropped the ball by not calling their interpreter "why" instead of "wi".
Whitespace: still less annoying than writing YAML files.
Yaml: Proving that there *is* something worse than XML for over 20 years.
what's wrong with yaml? i like using it for most stuff
@@icanonlysufferI use it for Docker compose and like it, but I imagine the syntax and indentation parts could be annoying. I’m sure there are other things as well.
YAML is one of those things where you can use it for years and like it without realizing how absolutely horrifying it is. But once your eyes are opened, you can't go back.
@@JBBell What did you use it for that showed you its flaws?
Intercal looks very much like a complete parody on ALGOL and COBOL combined. Very long ago I read part of the manual. It is quite hilarious especially if you do not want to really understand-understand it.
But that just specially designed strange languages, not cursed. I think Perl6 was cursed, they renamed it to Raku, but that didn't help to get rid of the curse.
That 'Raku is for gremlins' article is pretty funny.
As an iOS dev, I would say Swift is pretty cursed
javascript is pretty cursed
Every version of Perl is cursed IMO, the core philosophy of the language is unholy.
It's worse than PHP, which ain't no saint either.
JS has its quirks, but it's nowhere near as bad as those two.
Thank you for bringing Velato to my attention. I was at least passingly aware of the other four, but that's a completely new one for me. Definitely going to explore it in the future!
someone should become an experimental jazz player where they hide code in their music
Whitespace would be far more cursed if it used more whitespace characters. My personal enemy is the non-breaking space, because on my keyboard layout it is option+space, so it isn't that rare to accidentally make it when trying to pipe or curly brace or the like and letting go of option a little to late, or pressing it a little to early. The cursed thing is, it appears to be a space, but is included in non-whitespace from any language perspective. So you get an error message like x is not defined. You go crazy thinking: "But its right there", but what the message is really telling you is that non-breaking-space followed by x is not defined, but in printing it out, it turns back to space. Whoever allowed there to be more whitespace than space & newline should be shot. Tab is multiple spaces, carriage return is non-sense, and do not even think about designing anything different.
Non-breaking space is fine. What should worry you are zero-width joiner, word joiner, zero-width no-break space, soft hyphen, and other potentially invisible characters. U+202e is another classic, but that at least tends to reveal its presence. Also enjoy the U+1d5a0 through U+1d5d3 range.
CR and LF make a lot of sense if you consider where the keyboard comes from. On a typewriter with an actual piece of paper, you need both to accurately move to the next line.
Carriage Return returns the (cursor) position to the first character in the line, and Line Feed moves the sheet upwards.
If you only used CR, you would overwrite the previous text, which is a legitimate but different use case. And with only LF, well, you'd constantly be writing on the right edge.
In "modern" programming, the "jump to the first position in the line" is probably implied even if you only encode your newlines as LF, but on actual paper, those are two different instructions.
@@LORdREDSTOneNR1 "is probably implied" no it _is_ implied, its not uncommon for files to be encoded with only LF and i have never seen a text editor only advance the line without also returning the cursor, an editor that only supports CRLF will just not see any linebreaks in an LF only file
the split between CR and LF is entirely reasonable, especially when you remember that when ASCII was designed printers were the primary way to get text out of a computer, but nowadays they've been redundant for years
though the dichotomy of some files encoding linebreaks with CRLF and others doing it with just LF will probably remain until the death of society, but that also doesn't really matter (unless you're writing a parser, but that is the only time you really have to care)
every single text editor on any modern system just implicitly detects and abstracts away linebreak encoding (afaik even notepad (which previously was the only notable exception) now does this) its just a funny little legacy quirk
@@dustinm2717
I mean, I *guess* it's implied, but what if it wasn't? How'd that even work? How would that even LOOK?
Interesting to think about, no?
“I have to break my separation between church and state” I FEEL YOU. Awesome vid as usual 👊
10:30 For me, a professional programmer who started coding as a kid 42 years ago (so back in the 80s), Stuck is the clear winner. With zero input from the programmer, no opportunity for errors. Brilliant. I wonder what 52 other functionalities the one letter programs A..z will produce 😉
Newbie 🤣😉
If you remember in the late 2000s early 2010s there was a constant call for rockstar developers. Dylan Beattie created a language called Rockstar which uses rock lyrics to program and a joke, but now no one is asking for rockstar developers any more.
Raising the question, did it fail or did it succeed?
my favorite esolang is orca, which is also a midi sequencer, but in a live coding environment
That sounds extremely cursed! It will probably make it on to a part 2
It would be cool to try and encode a whitespace program into the source of a regular language. That way if you run/compile it in the regular language you get a regular program but if it were to be run through whitespace you get a cool little easter egg.
I think that if it was reduced to only use whitespace and tab, it would work better for this.
Those languages are amazing! I couldn't stop laughing all the way through this video, especially when it got to "whitespace"!
I've now been inspired to create my own esoteric language. I'm working on a few ideas, but the main criteria for the language so far are these: (1) The source code must look like it was produced from the programmers' back end instead of the front; and (2) The source code must be as unclear as possible. Given these criteria, and the fact that I've now reached version 86 of my compiler, I've settled on the name "x86 arse-em-blur language". I hope no-one has come up with a similar name before. ;-)
There are plenty more white-space characters in Unicode -- it's time for Whitespace 2.0
That's what I was thinking, there's all sorts of other whitespace characters like zero width space, non breaking space, etc.
There's even one that isn't white
One pretty well known esolang that shows the absurdity of JS: JSFuck: A subset of js which only uses 4 characters ([]()+ and !) to let you write anything you could write in JS.
If you can write hello world in Malbolge I would be very impressed
Part 2!
The first person to successfully do that just used a fuzzer, iirc
Also apparently someone wrote a lisp interpreter in malbolge
I was hoping to see Malbolge
No one can do that…
You forgot to mention java srcipt.
@@vanurp9130 underrated
@@vanurp9130 you forgot to consider that he maybe thought of it and discarded it
Come on, not every small language can be covered in one video
Bro how much you have even worked with Java script. It's the most used language today every heard of all these lastest technology are build on js. By the way I am a driver developer so I usually work with c++ but with my hands on web development also I say js is very beautiful language. And I will end up saying it is the most fancy and most vast and most usefull language todate
Literally everything around you is js what else you want when a single sole language is able to serve as a server and also as a front and also as a database
@@vanurp9130 JS is a perfectly fine language
While I have absolutely no idea how to translate the music to code in Velato, I can tell certain actions are being repeated based on certain chords and little musical terms that get repeated. Very clever.
If a piano player plays a jazz piece, you never know if it is, in fact, a secret application written in Velato!
My favorites have always been Piet and Malbolge. Velato hits the same good vibes that Piet does, but I can imagine it offers much more expressivity.
honorable mentions:
- "rockstar"
- APL (the most esolang that isn't an esolang)
Dude I write APL daily for some wave array interpolation, transformation and manipulation. 😂 it's not cursed , it's actually much pleasant to write than awk which does similar things.
I think Racket or UiUa are more esoteric than APL .
@@sortof3337 APL is cool but you gotta admit it looks like hyroglyphs or an alien language.
@@FunctionGermany yes i will concede to that. it does look like gibberish to someone who isn't into lc or array languages.
Velato's "Hello, World" sounds like a version of Never Gonna Give You Up, a messed up version, indeed.
I'm one of those combos and you called the G key a C! Omg! I am so triggered to the point that I'm gonna write some code in Trigger.
I think my favourite esolang is Piet where the code takes the form of a bitmap image made of of blocks of colors and the code is processed by a pointer that can move through the image in any direction (direction chosen by the code). The actual instructions are made when the pointer moves from one color block to another and depends on how many hue or lightness steps were taken to arrive at the new color (moving from a blue block to a light green block is 4 hue steps and 2 lightness steps which is the "input number" command).
MIDI!! That's wonderful! Just creating the source code is a chore! But the result is very interesting.
I'm familiar with Brainfuck and that transliteration list you showed for Ook made it look almost useable.
Whitespace is an interesting proof-of-concept but I can't imagine it being of any practical use.
Golf? Sounds like a variation on the many obfuscation contests I've heard of.
Of course, Brainfuck was developed (on an Amiga!) in an attempt to come up with the smallest practical compiler.
INTERCAL is clearly intentionally cursed. You have to write a program to come up with the appropriate values?!
Just wait until you see Malbolge. It's based on ternary digits, any instructions are encrypted as they are executed, and there's one component called "the crazy operation." It took a beam search algorithm just to write a "Hello World" program out of it.
There are many more whitespace characters. Just not in ASCII. For example, the en space and the em space, the non breaking space. If we want to include things which aren't really white-space (like newline) then there is also things like the carriage return and line feed.
Then we have things like zero-width joiner or zero width space
intercal gives me a headache
i can not look at this
understandable
It's so cursed 😭
@@dreamsofcode i cannot look at that im sorry
I love how these languages are so ridiculous that, despite having almost no understanding of programming, I can still tell how cursed they are from just seeing the code here.
1:20 fire in the hole!
I wrote my first program in the summer of 1969. I was 15, and the language was APL on a Dartmouth Timeshare system. Then, my first year in college (1971) the only computer course at Stevens Tech was part of the electrical engineering dept: FORTRAN IV. Punch cards and batch processing. Yikes! When I got to work, I was thankful that the language was now BASIC. However, my talent happened to turn out to be DB design. And so, SQL was next, which is a language I enjoyed alot. And the version I used after INFORMIX was Unify ACCELL, an event-driven SQL. In those days, you had to be flexible and do a lot of learning on the job. Different time. Thanks for the vid to bring back some memories.
The good thing in whitespace is that you can just put in the comments describing what you are doing in-between the whitespace. (Or put something else in-between, if you want to annoy your readers.)
Separation of church and state was a great description
“I had to break my separation of church and state and load up some code on my gaming PC” lmfao
Dang, I was kinda hoping you would do my favorite esolang, which I was very active with for a while in the 90s: Befunge. Unfortunately it was PC only and had a very limited program space. The revised version with a theoretically infinite program space was never finished, unfortunately.
Edit: I was wrong. Apparently there's been significant development after discussions on the befunge mailing list about the new version semi-broke down in 1998.
I watched many coding channels talk about printing hello world in obscure programming languages and thought, hmmmmmm why watch this video. Im glad I did, as you were by far the only one to truly explain what the code is doing which just comes to show your skills. You earned a subscriber, will look forward to more content from you broooo. peace
Check TECO. It was created (evoluted) as just a text editor but:
- it could be used as a programming language,
- it was the base to create the very first version of Emacs.
My favorite of the "Turing Tar-Pit" (minimal) languages is probably Unlambda, which is Turing-complete without a lambda (abstraction, function) operator; it uses the S and K combinators instead.
But as the video notes, some esolangs are just weird domain-specific languages. A couple I've done actual work with are Praat, the scripting language for the Praat audio-processing software; and the weird-but-relatively-mainstream CL language for IBM's AS/400, which (at least at the time) had only one iteration mechanism: Perform this routine for each record in a file. So the only way to loop was to have a file with the appropriate number of records.
These were languages that made COBOL seem elegant and convenient. (Actually Micro Focus managed OO COBOL with the optional modernized syntax *is* fairly elegant and convenient, but then it's not much like standard COBOL, particularly pre-1985 COBOL.)
In the programming language I'm creating right now most things are pretty strange, but a hello world program fits on the following line:
out:"Hello World!"→end:0
By the way, that language is called arrowey because it uses arrows to guide the parser through a two-dimensional code grid.
I love the idea of being able to listen to your code as music.
Then there's Shakespeare...
You forgot TECO macros - where a working program looks like "line noise".
If I remember the Jargon File correctly (it's been a while), then any English word can be a valid command in TECO.
I didn't say useful, I said valid.
And here I thought Haskell was the most pain I'll ever be in. 😆 Btw, nice neovim/zsh setup! Do you have the configs somewhere? I think you got me inspired to finally get mine properly setup, and I like your font and colour scheme!
APL is a "real language" but can also seem quite esoteric. It's also really terse.
I understand there are versions that can be coded in standard roman letters, but the only listings I've seen were a bunch of pictographs.
Someone remembered APL! I always found it easier to write new code than attempt to figure out what I had coded last week.
@@lorensims4846 I don't see how since one feature is that any alphabetic strings can be variable names. Removing special characters would break this convention.
Those are some pretty twisted languages. Around the 7:12 mark the ick compiler was saying you need to "resubnit". I wonder if that typo is deliberate or not. :)
Imagine an open-source malware, written in whitespace, with legit looking C in the sourcefile. Analysts would go round and round searching where the malicious behaviour comes from.
(Do not try at home😂)
That was my thought as well!
Except that you wouldn't be able to identify it as malware without knowing either the intended behavior or how to compile it.
The most cursed programming language is JavaScript. End of discussion.
Program: Please give up
Compiler: No
Continues to brain f**k👀
While I have never actively tried to learn any esolangs I do have a bit of experience with them, as I have solved a number of programming puzzles which used them. The puzzles didn't involve writing any code of your own, but did involve clues which led to existing esolang code. The trick was then to find out which esolang it was, and how to run it. Sometimes the output of the program would provide a new clue, other times the output was a red herring and the real clue was hidden either in the esolang code itself or in something the code did along the way.
Two of the esolangs I encountered back then I found particularly interesting: *Befunge* and *Piet.* Both are 2-dimensional programming languages, meaning that rather than the code being interpreted from left to right one line at a time, the instruction pointer moves around the code in all of the cardinal directions, left, right, up and down. The code is a 2-dimensional grid of instructions. In the case of Befunge, each instruction is a printable character, and so Befunge code consists of text. A Piet program however is an image, and instructions are defined as transitions between pixels of different colors. Of the two, Befunge is definitely the most accessible.
I have fond memories of SNOBOL from the programming languages course I did in the eighties. We also did LISP and APL.
There's also the non-breaking space at ASCII code 160, but I'm not sure if it's the same in all character sets, so I think the whitespace language probably ignores it.
That's not ASCII, technically. ASCII only has code points 0..127. 128..255 are not often referred to as "extended ASCII", and of course there are numerous code pages, standard and not (ISO 8859 series plus OEM ones), but they're not part of ASCII proper.
ASCII does have more whitespace characters: CR and LF are separate code points, and there are also FF and VT. (Everyone always forgets about poor vertical tab, once so useful with preprinted forms.) But as some people have suggested in other threads, if you want a larger character set for Whitespace, Unicode is really the way to go.
Only one I've actually used myself is Chef, a silly little language uses baking-related words as keywords. It's an easier one to comprehend since it's not TOO far removed from modern programming languages, but still fun to type out things like "put x into the mixing bowl"
The purpose of "Hello world" is not evaluating a programming language's abilities, but to get accomplished with the language's developing/deployment cycle. Outputting a string is trivial from the language perspective, but requires mastering the complete edit/compile/run cycle of the programming environment.
Someday someone will make one of these videos using Armok, the language inspired by Dwarf Fortress. Program by giving dwarves tasks! ...careful not to kill them before you're done with them.
Reading through this brought back some memories. My first interface with a computer (pun intended) was about 1980 with a beautiful all-in-one (including printer), the HP-85. Took it home on weekends to learn and soon ended up typing "Hello World" It was the best of times, it was the worst of times.
I wrote a very interesting program in Whitespace. If you want i can send you a hard-copy.
I was fully expecting to get Rick rolled at the end there.
10:13 wheres the parentheses after print
why is there a semicolon
end of statement expected
unresolved reference 'i'
unresolved reference 'j'
unresolved reference 'i'
unresolved reference 'j'
statement seems to have no effect and can be replaced with a function call to have effect
parameter 'i' value not used
parameter 'j' value not used
this isnt python
I started programming on an Amiga computer with 68000 Assembly. Not one of the languages mentioned are as crazy as that can get.
I have been slowly learning to program in Python. But I've made a personal commitment to always print "hello , I am “ its a pointless but fun thing I do to be rebellious 😅
It will be annoying if Velato is actually a translator for an alien tongue. (There are several novels and stories with the idea of tonally shared concepts involved. R.A.Heinlein wrote a couple.)
11:22 😂😂 "separation of Church and State" (Linux vs Windows for Development vs other things), can totally relate to that
To me, although not a fully capable programming language, regex is a particularly esoteric language that is frequently used.
I've heard of most of these and so it was quite amusing hearing you describe them...especially when you got to whitespace
How did you get the fancy terminal of yours?
and the music shows its relation to math and such even here, the repetition of the actions clearly can be heard, and makes somewhat pleasing. probably most people just pushing down a few keys on a piano would make a much worse 'music.'
I really want someone to make a game engine or game with these cursed languages
Having done some Fortran, and helping debug COBOL as a computer lab tutor, yes, they would definitely fall under the esoteric category.
Now I wanna know - Does Mozart (or others) compile??
I love esolangs. Especially piet or chef from David Morgan Mar. Also I want to say thanks because this was one of the best explanation I saw.
Would it be wrong to say that Brainfuck is essentially just Turing Assembly (or at least very close)?
Ook: The Librarian's programming language of choice.
Hear me out: A "soundlogger" program that constantly attempts to compile nearby noises in Velato and execute them. Then make a song or video out of the midi file to run some code. Could save an entire software toolkit into your Spotify songs xD (I'm aware this is silly and impractical, but I think it would be super cool)
From the “normal” languages: SQL and Prolog. You look at a tutorial and think: well that looks almost easy. Then you look at what the true experts create: very small expressions with incredible power, and you think: O M G.
SQL is *very* easy. Prolog, OTOH…
@ You clearly haven’t seen enough SQL 😉
8:09 not true, there is also “vertical tab”, “non breaking space” “Escape” and “Form feed”
For some reason I decided one day to only ever print "hithere" instead of "Hello World". Now I instinctively use print("hithere") any time i want to debug anything
You forgot the Malbolge language.
My fave is "piet". One of the first esolangs i've learned about and i love its concept.
It's like velato, but uses images instead of midis.
I love how Stuck is a perfect example of a golf language. The reason why you write out Hello World is to learn the basics of a language. Golf languages don't understand the reason why you're coding, they just want to get it done in as few characters as possible. So you compile an empty file for Stuck, get your "Hello World" out there successfully... and have learned absolutely nothing about the language. Congrats, that's Golf languages in a nutshell.
What application am i looking at here? Tmux appears to be a terminal emulator, what's it connected to?
12:24 You must now acquire a taste for freedom jazz
Bro I really like your videos, could you tell us what programs you use for editing the videos and the animations for the code as well?
I use Davinci Resolve and After Effects. I have my own animation pack that I coded for a lot of the effects I use often on DR (zoom, pop, blur etc). I'm going to put this on sale probably near the end of the year so anyone can use them!
Great video but Mitxela writing tic tac toe in BF 5 years ago was substantially impressive
In the old days, when operating systems were simple and protection was not much of an issue, you could write self modifying code. Bonus points if you did this in assembly language. I once wrote self modifying code in the Lotus 1-2-3 macro language (the pre-cursor of Excel). This was actually useful.
It was a pretty common trick in IBM 370 assembler to code a first-time switch at the beginning of a loop for initialization. You specified a NOP that pointed to the first instruction in your loop beyond the initialization code. The first instruction in the initialization changed the NOP to an unconditional branch.
Why didn't we just initialize the loop before we got to it? Who knows? Maybe it was more fun this way.
Much easier to achieve with a Von Neumann architecture machine however
Back in the day there were a few people who used the Unix text editor vi as a programming language. The whole program is basically a series of key mappings (in other words, self-modifying code). As an example, I remember a vi program that would solve the Towers of Hanoi problem and display the results in real time in the text editor. If anyone's interested, a web search will give you the code. It was written in 1991. No idea if it works in Vim though.
The Control Data 3000 series systems mandated self-modifying code for any real-world program. To call a subroutine at address X you used the RTJ X instruction, which stored the address of the next (i.e. the return) instruction at location X and began executing code at location X+1. To return from the subroutine, you execute a JMP,I X (jump indirect to the location contained in X.) Writing reentrant code was impossible in Fortran and COBOL.
Nice video. I guess that you could write a velato interpreter that react to audio input?
Not sure why a put putting (are those the right works to use there?) a ball into a whole was chosen as the shot when he is saying "whilst some are created for very specific use cases", - is he implying puts are created for the specific use of putting a ball into a hole? Holy, that wholey makes sense when you think about it - but the sound of the ball going into the ball was very satisfying.
6:18 The fact that you had to code an algorithm in order receive the values to code another (very basic) algorithm
the most impressive part of the whole video might actually be the sheer amount of editing done to make that simulated IDE.
Ngl, the golf language is a perfect example of "You are technically correct, the best kind of correct." and I kinda love it.