Brain F**k in 100 Seconds | Prime Reacts:

Поділитися
Вставка
  • Опубліковано 14 лют 2023
  • 100 seconds of Brain F*** by non other than the GOAT himself, Fireship!
    GO SUB!!
    / @fireship
    Recorded live on twitch, GET IN
    / theprimeagen
    MY MAIN YT CHANNEL: Has well edited engineering videos
    / theprimeagen
    Discord
    / discord
  • Наука та технологія

КОМЕНТАРІ • 167

  • @ThePrimeTimeagen
    @ThePrimeTimeagen  Рік тому +270

    THE GOAT HIMSELF: www.youtube.com/@fireship
    GO SUB TO HIM

    • @duwangchew
      @duwangchew Рік тому +8

      Too late, already subbed

    • @cthutu
      @cthutu Рік тому +1

      BASIC reference?

  • @BrunodeSouzaLino
    @BrunodeSouzaLino Рік тому +1003

    If he's impressed by the 107 byte compiler, someone wrote a Brainfuck interpreter in Brainfuck.

    • @BusinessWolf1
      @BusinessWolf1 Рік тому +83

      w...hat?

    • @electricengine8407
      @electricengine8407 Рік тому +106

      i did that, if you know the language and play around with it a ton to learn the concepts and patterns its actually not extremely difficult, i made my own interpreter and debugger

    • @grzzltn
      @grzzltn 9 місяців тому

      @@electricengine8407 github (or other place where code is) or didn't happen

    • @the-pink-hacker
      @the-pink-hacker 8 місяців тому +41

      Even BF is bootstrapped!? When will this end?

    • @Takyodor2
      @Takyodor2 8 місяців тому +26

      ​@@the-pink-hacker The end is the beginning, as the universe is bootstrapped

  • @Impatient_Ape
    @Impatient_Ape Рік тому +503

    Brainfuck is an example of a "Turing tarpit" language, where "everything is possible but nothing of interest is easy".

    • @denissorn
      @denissorn Рік тому +45

      Everything is possible with assembly. Even RISC assembly is a lot easier than this insanity.

  • @headlights-go-up
    @headlights-go-up Рік тому +585

    Your main channel will always be my favorite, but seeing your disbelief and wonder (i.e. at the recursive main) is contagious and hilarious.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Рік тому +106

      :)
      it was SOOO fun to see that

    • @khalilbessaad5553
      @khalilbessaad5553 Рік тому +36

      I didn't even know this is the secondary channel. I thought that I was on the main channel, I just saw Prime and clicked

    • @aws-china
      @aws-china Рік тому +3

      yeah it was definitely a W move to become active on the clips channel again

    • @CuriousAnonDev
      @CuriousAnonDev Рік тому +2

      @@khalilbessaad5553 same🤣

    • @RenderingUser
      @RenderingUser Рік тому +4

      Wait
      This wasn't the main channel?
      Bro i legit thought this guy only had about 50k subs

  • @dealloc
    @dealloc Рік тому +125

    the syscall is for I/O where !b will be evaluated to an int from a bool so it will call 3 or 4 which corresponds to read and write, respectively.

  • @jfbarbosaboro
    @jfbarbosaboro 11 місяців тому +98

    Assembly was the first language I've learned. Then I started experimenting with C. I thought functions were just like labels in Assembly, and I used a recursive main in one of my beginner C codes. My teacher told me "just don't do that".

    • @AlLiberali
      @AlLiberali 10 місяців тому +19

      He was being very considerate

    • @aziemelzapratama5257
      @aziemelzapratama5257 9 місяців тому +9

      How long are you in the industry?😅

    • @mynameisname6162
      @mynameisname6162 4 місяці тому

      @@aziemelzapratama5257 op has seen dinosaurs

  • @_imawesome
    @_imawesome Рік тому +108

    Back in college I had come up with a project related to compilers, so I submitted a transpiler that translates Brainfuck to functioning C code. The whole class was impressed, but really it takes one to know how Brainfuck theoretically works to know how easy it really is. 😂

  • @adambickford8720
    @adambickford8720 Рік тому +201

    You can almost feel it moving a mechanical something inside your machine with every character. I bet i could hear it with a stethoscope on an HDD.

    • @e.zarate
      @e.zarate Рік тому +7

      Gold comment

    • @Oaisus
      @Oaisus 5 місяців тому +4

      It sure seems like someone could build a mechanical bf interpreter with punch card instructions

    • @tornoutlaw
      @tornoutlaw 5 місяців тому

      Yeah...or slowly move an oszillograph along your RAM xD

  • @WyzrdCat
    @WyzrdCat Рік тому +55

    Anything more is just unnecessary bloat. Variables are crutches.

  • @carlweis
    @carlweis Рік тому +3

    Love your vides, always fun to watch. This was interesting for sure. BFJS sounds like a fun project for a live stream ;)

  • @huckleberryfinn8795
    @huckleberryfinn8795 Рік тому +22

    Watching you get your mind blown as you read the code of a language named "brain f***" is HILARIOUS 😂

  • @mateuscortianoschwarz7276
    @mateuscortianoschwarz7276 Рік тому +21

    as turing intended lolol

  • @spr3ez
    @spr3ez Рік тому +39

    Saw on stream. Still watching since its so funny how mind blown you are ;)

  • @alangamer50
    @alangamer50 Рік тому +10

    Gotta love how Brainfuck is Turing complete, so you can technically build anything with it

  • @MegaMech
    @MegaMech Рік тому +6

    ChatGPT programmed a recursive main in C and I was like "Waaaaa?!?"

  • @TheJobCompany
    @TheJobCompany Рік тому +24

    ngl, the first time I saw a recursive main, my reaction wasn't any different than prime's; it's a powerful code obfuscation tactic

  • @vanminhle850
    @vanminhle850 Рік тому +20

    Somehow he always found a way to shit on javascript and I love that.

  • @omdevs
    @omdevs 5 місяців тому

    Great video! also I just noticed are you sitting on an exercise ball?

  • @AtRiskMedia
    @AtRiskMedia Рік тому +1

    You, my friend, are a extra special kind of special. Appreciate you so much =D

  • @alexandrosvangelatos9979
    @alexandrosvangelatos9979 Рік тому +13

    My brain hurts... 🤯

  • @RTXMemes69
    @RTXMemes69 11 місяців тому +8

    Only Prime can take a 2:09 minute video into over 5 minutes and still make it entertaining.

  • @Jaiden-2013
    @Jaiden-2013 22 дні тому

    4:33 quick brown fox jumps over the lazy dog

  • @xraptor94x
    @xraptor94x 11 місяців тому

    One of my first programming projects when i came back to programming was an Brainf**k interpreter written in C++ which i called Brainfluff.
    I think such interpreters are fun project to see how an very simplistic compiler works.
    I will rewrite it probably in a few days or so when i have less work.

  • @ThePouetman
    @ThePouetman Рік тому +1

    The ai in brainfuck video by mitxela is my favorite video out of all the ones I've seen about esoteric languages

  • @seveninchbread
    @seveninchbread Рік тому +2

    brainfuck is basically a slightly modified Turing machine. it's a good intro into computability and formal language theory

  • @cherubin7th
    @cherubin7th Рік тому +3

    I moved from too complex to simple: Rust -> Zig -> Brain F**k

  • @TheSkepticSkwerl
    @TheSkepticSkwerl Рік тому

    from what i understand the loop to do. it increments or decrements a cell. once the cell hits zero the loop ends. you can move other values up and down as necessary. once value 0 becomes 0 your loop ends.

  • @nic37ry
    @nic37ry Рік тому +5

    A friend create a Linux binary interpreter with size of 380 bytes for brainf*ck :D

  • @HernanSoberon
    @HernanSoberon 9 днів тому

    FINALY the code where regular expressions was created.

  • @nickr753
    @nickr753 Рік тому +5

    Your entire hard drive is a one-dimensional array of bytes. Or (galaxy brain) it’s a scalar unsigned integer with a maximum of 2^(drive size in bits).

    • @kibe2134
      @kibe2134 Рік тому

      It can be signed if you start counting the index from 1

  • @BudgiePanic
    @BudgiePanic 4 місяці тому

    BF ray tracer implementation that outputs the rendered image as mono color byte array

  • @frydac
    @frydac Рік тому +1

    I wonder what (double precision) floating point division looks like in this language.. it would be quite the challenge

  • @Joker22593
    @Joker22593 11 місяців тому

    I wrote a BF interpreter once, and main recursion within a loop is the easiest way I found to code the [ and ] operators.

  • @griffitaj
    @griffitaj Рік тому +1

    Recursive main just blowing prime's mind #wholesome

  • @m4rt_
    @m4rt_ Рік тому +4

    1:03
    if !b does the same thing in C as in JS it would make it 0 if the number is non zero, and 1 if the number is zero, so 4 - 0 or 4 - 1 I think...

  • @gittawat6986
    @gittawat6986 Рік тому

    The thumbnail is brilliant

  • @talideon
    @talideon 7 місяців тому

    I wrote an interpreter for it back in college in ARM ASM, so mine came in at ~300B when assembled. Unfortunately, ARM machine code isn't super dense!

  • @totalmonkeyspeed260
    @totalmonkeyspeed260 Рік тому +1

    I love the original, you add some nice spice and detail to it.❤️🙏 Could you do a Vim for Brainf**k brainf**k please?

  • @TheKahiron
    @TheKahiron 3 місяці тому

    Played about some with Brain Fuck years ago. Still have a habbit of typing 'p' for '+', just from commenting code.

  • @wchorski
    @wchorski Рік тому +3

    I hope Jeff recursively reacts to this video

  • @spitefol5504
    @spitefol5504 Рік тому +8

    Wow this new coding language is like rust without all the bloat

  • @DevRel1
    @DevRel1 11 місяців тому

    This is so exciting

  • @modolief
    @modolief Рік тому

    Primeagen: Please look at sectorlisp! Could you give us a deep dive on that one? I want to learn the metacircular evaluator, the computer science equivalent of Maxwell's Equations. And sectorlisp can set up the basic LISP machine in less than 512 bytes of 8088 machine code. That's a small compiler! Almost as tiny as bf.

  • @snarekeeper8053
    @snarekeeper8053 12 днів тому

    Mitxela build a full tic-tac-toe ai in bf.
    Such a freaking mad man

  • @RedOchsenbein
    @RedOchsenbein Рік тому +9

    Actually BF make quite some sense when you use it to generate code using genetic algorithms. It's pretty easy to represent it as genes and mutate it to find solutions.

    • @CFEF44AB1399978B0011
      @CFEF44AB1399978B0011 3 місяці тому

      If we scanned the human genome and used it to find valid brain fuck programs i wonder how many of them would actually output some fun strings. Like are there any randomly occurring words in the human genome?

  • @zachb1706
    @zachb1706 11 місяців тому +1

    4:40 Windows PowerTools baby!

  • @hotrodhunk7389
    @hotrodhunk7389 Рік тому +1

    That's awesome recursion is my favorite part of coding.

  • @timedebtor
    @timedebtor Рік тому

    When you going to do prolog?

  • @Hobbitstomper
    @Hobbitstomper Рік тому +17

    Yeah, create your own language where logic makes no sense, like
    null == 0; // -> false
    null > 0; // -> false
    null >= 0; // -> true
    A language like that would be a real brainf*ck. Oh wait...Hello JavaScript my old friend.

    • @raianmr2843
      @raianmr2843 Рік тому +1

      LMAO

    • @theodorealenas3171
      @theodorealenas3171 Рік тому +1

      Hey is it what I think it is? >= defaults to the opposite result to < and that's why?

    • @user-sl6gn1ss8p
      @user-sl6gn1ss8p Рік тому

      @@theodorealenas3171 oh, is that it?

    • @theodorealenas3171
      @theodorealenas3171 Рік тому +3

      @@user-sl6gn1ss8p I know Python does this, with operator overloading (but C++doesn't). If you overload what the < operator does, the >= operator will work accordingly.

    • @isodoubIet
      @isodoubIet 11 місяців тому

      @@theodorealenas3171 In C++20 you're supposed to overload spaceship so all the comparisons will work as intended

  • @kreuner11
    @kreuner11 Рік тому +3

    That's not a compiler that's an interpreter

  • @spuzzdawg
    @spuzzdawg 8 місяців тому

    Comment without any thought: Is main recursive because it's a recursive descent parser?

  • @PiotrPavel
    @PiotrPavel 4 місяці тому

    Advent of code in Brain F****.....next year

  • @keokawasaki7833
    @keokawasaki7833 Рік тому +2

    It's gotta be "like && subscribe"

  • @slippydouglas
    @slippydouglas 3 місяці тому

    2:15: _“Notice how Brainfuck^beep^ doesn't require silly things like…”_

  • @TheOzumat
    @TheOzumat Рік тому +2

    Just as Turing intended :`)

  • @jaredbecker3152
    @jaredbecker3152 10 місяців тому

    The code there outputs "what a free t-shirt? be the first person to comment my encephalon hurts! "

  • @SammyForReal
    @SammyForReal 6 місяців тому

    "I dont even know what four minus BANG B means" 😂

  • @wysera1999
    @wysera1999 Рік тому

    I just learn that some people made a brainfuck compiler in brainfuck

  • @nullbeyondo
    @nullbeyondo 10 місяців тому +2

    I'd just stick to machine code. It is much easier and a 0-byte compiler 🥴

  • @aerbon
    @aerbon Рік тому

    i have seen a recursive main before. it works.

  • @boi8240
    @boi8240 6 місяців тому

    This is the world functional programmers want for our children.

  • @wertrager
    @wertrager Рік тому +1

    It's not recursive, it's the Y Combinator, therefore inductive over program

  • @forno_nicolas
    @forno_nicolas 11 місяців тому

    Fireship is so good

  • @mskiptr
    @mskiptr Рік тому

    > recursive main!? what?!
    Just before, I watched the video that Haskell appeared in lol
    (main being recursive is pretty normal there. And it's not even a function…)

  • @postelb8046
    @postelb8046 8 місяців тому +1

    it is time to write js framework on brainfuck

  • @basboerboom9328
    @basboerboom9328 7 місяців тому

    It's a rick roll for sure. The last code

  • @bananprzydawka7129
    @bananprzydawka7129 Рік тому +2

    has anyone figured out what the video end code does??

    • @user-sl6gn1ss8p
      @user-sl6gn1ss8p Рік тому +1

      apparently it was "what a free t-shirt? be the first person to comment "my encephalon hurts!""
      (with the typo)

  • @RicardoSansores
    @RicardoSansores 9 місяців тому

    I prefeer to program my systems with lolcode. No memory safety or fearless concurrency but lot o lols.

  • @fRutrn
    @fRutrn Рік тому

    Doom in Brainf^&k when?

  • @WilcoVerhoef
    @WilcoVerhoef 11 місяців тому

    my encephalon hurts!

  • @SB-dd5hc
    @SB-dd5hc Рік тому +1

    you should react to JSF*k

  • @amansetia8655
    @amansetia8655 Рік тому +1

    can someone explain the loop code of how it got 103

    • @AndresTraks
      @AndresTraks Рік тому +11

      The first cell is used as a counter for the loop and is set to 1. For each iteration of the loop, the counter is decremented by 5. Since a cell wraps around the maximum value of a byte (1 - 5 = 252), it takes 205 iterations for the counter to reach exactly 0, which is the exit condition of the loop. The second cell is used as the character value and is first set to 0. For each iteration of the loop, the character value is incremented by 3, which makes 205 * 3 = 615. But this cell also wraps around, so the final value is 615 modulo 256 = 103.

  • @michelfug
    @michelfug 10 місяців тому

    THE NAME is the Brainagen

  • @TheSkepticSkwerl
    @TheSkepticSkwerl Рік тому +1

    the way he explained it, 5 decrements means 51 loops. how is 51*3 increments 103? Why is it not 153?

    • @robertwagner9014
      @robertwagner9014 10 місяців тому +2

      He adds one first making it 1025 so it is 205 loops which results in 615 or 512 + 103.

  • @neth007
    @neth007 Рік тому

    you just need a transpiler from javacript to brainf*ck

  • @Takyodor2
    @Takyodor2 8 місяців тому

    On the topic of "recursive main", function-level try-catch works on "main" in C++, so if you place a call to main inside "catch" attached to main, your code is now un-crashable by pesky exceptions!
    For legal reasons, this should not be used in real code. I don't take responsibility for any consequences that may result from this practice. Try-catch safely.

  • @Stay_away_from_my_swamp_water
    @Stay_away_from_my_swamp_water 8 місяців тому

    why wouldn't there be a recursive main?

  • @deepakpatidar8462
    @deepakpatidar8462 8 місяців тому

    But the real question is, can we write JavaScript compiler using brainfuck? 🤔

  • @shafaitahir4728
    @shafaitahir4728 10 місяців тому +1

    chat GPT cant code in brainfug, what a shame.

  • @AlphaFrog1021
    @AlphaFrog1021 Рік тому

    setup tour

  • @marble_wraith
    @marble_wraith Рік тому

    Recursive main... still better than JS event loop 😏

  • @MrFoulkes
    @MrFoulkes Місяць тому

    AWS shoulkd bring BF lambda SDK for next years April fools.

  • @_orangutan
    @_orangutan Рік тому +2

    This compiler is interesting, the only downside to it is the writing system/syntax. If you use a different syntax/writing system on this, then it might be usable. By writing system I mean Latin/Greek/Arabic. One thing I've had a big interest in is creating a writing system from scratch but I don't have the time to do so. Think Hangul and Mayan.

  • @anthonysteinerv
    @anthonysteinerv 6 місяців тому

    I did write a brainfuck interpreter lmao when I was experimenting with compilers.

  • @TalesMarinho
    @TalesMarinho 7 місяців тому

    This kind of video makes me want to quit programming then go open a bar

  • @tordjarv3802
    @tordjarv3802 Рік тому

    BrainF**k is not entirely useless. I recently saw a paper by some mathematicians showing an algorithm to factorize arbitrarily large integers asymptotically optimally (that is it has the same O(f(n)) as the most efficient classical factorizing algorithm, the could not show what that was, and finding the most efficient factorizing algorithm is still an open problem), and BF was a crucial part of that algorithm. Basically what they did was a BF program, execute one step in it, then create a second program, execute two steps in the fist program and one in the second one step and then create a third program (in every iteration each program executes twice as many steps as in the previous iteration), and so on until one of all the programs they created spits out the correct factorization of the large integer that was given (which is easy to check since multiplication is polynomial in the number of bits in the integer). They actually wrote a python program that did this, (it was excruciatingly slow, it took several days for it to factorize 4). The point is that Brainfuck is not completely useless.

    • @hereandnow3156
      @hereandnow3156 5 місяців тому

      I wonder what made Brainfuck helpful for this problem vs using assembly?

    • @tordjarv3802
      @tordjarv3802 5 місяців тому

      ​@@hereandnow3156 brainf**k is extremely simple to implement while most assembly languages are way more complicated. In a way brainf**k is a very simple form of assembly.

  • @MizanHIT
    @MizanHIT Рік тому

  • @dr00by
    @dr00by Рік тому

    DO ROCKSTAR

  • @Merssedes
    @Merssedes 2 місяці тому

    There is actual language called JSFuck.

  • @brssnkl
    @brssnkl 2 місяці тому

    Skill issue for all of us :D

  • @JanGottschau
    @JanGottschau Рік тому

    also: no side effects 🎉

  • @samuelschwager
    @samuelschwager Рік тому

    four minus bang bee

  • @sasso_storto4671
    @sasso_storto4671 9 місяців тому

    JSFuck DOES EXIST!

  • @ayhon
    @ayhon Рік тому +5

    I prefer JSF*CK, it's more portable

  • @officialabdulrehman
    @officialabdulrehman Рік тому +12

    Still better than *JavaScript*

    • @daedalus5070
      @daedalus5070 Рік тому +2

      His Javascript for the Haters video is really funny.

  • @sacredgeometry
    @sacredgeometry Рік тому

    5:30 why not just write it in binary then.

    • @cherubin7th
      @cherubin7th Рік тому +2

      Binary is actually a more complex programming language.

    • @sacredgeometry
      @sacredgeometry Рік тому

      @@cherubin7th Binary isn't a programming language.

    • @derrheat154
      @derrheat154 11 місяців тому +1

      Yeah, thats a really good question, i'm not sure whats so impressive about BF. With the amount of brainpower needed to write BF, you might as well look up the ISA and do some translating. The real "programming language" with the smallest compiler is the machine code, which is zero.

    • @La0bouchere
      @La0bouchere 11 місяців тому

      @@derrheat154 It's cool because it forces you to realize how genius Turing was for figuring out that the tape model allows for all computations

  • @chromosundrift
    @chromosundrift 10 місяців тому

    syscall hack is cool, recursive main is sublime

  • @perpetu
    @perpetu Рік тому

    We should subscribe to you too😂😂