Brainfuck

Z Nonsensopedii, polskiej encyklopedii humoru
To jest najnowsza wersja artykułu edytowana „19:10, 1 wrz 2017” przez „209po (dyskusja | edycje)”.
(różn.) ← przejdź do poprzedniej wersji | przejdź do aktualnej wersji (różn.) | przejdź do następnej wersji → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania


Ten artykuł jest częścią cyklu naukowego języki komputerowe.

Języki programowania:


Inne języki komputerowe:


edytuj ten szablon
Najważniejsze jest niewidoczne dla oczu.
Antoine de Saint-Exupéry zapytany, czemu nie napisał „Małego Księcia” w Javie

Brainfuck (Brainf**k, BF) – ezoteryczny język programowania[1]. Eksperci (nie wiadomo dlaczego, ale z nimi się nie dyskutuje) uważają, że prezentuje bardzo niski poziom, niższy nawet od asemblera, można by nawet rzec, że żenujący. Jednak nie przeszkadza to milionom programistów tutaj przed milionami użytkowników używać tego języka do pisania programów.

Historia Brainfucka[edytuj]

Brainfuck został całkowicie wymyślony przed wojną przez Braina Fucka – kambodżańskiego surrealistę, widzącego w programowaniu nową dziedzinę sztuki. Do tworzenia tego języka zainspirowało go zjawisko zbierania się chipsów pod klawiaturą. Jako, że sam język jest zupełnie bez sensu i do niczego się nie przydaje, szybko stał się jednym z najważniejszych narzędzi współczesnego programisty.

Składnia Brainfucka[edytuj]

Programy napisane w Brainfucku składają się z ciągu niżej podanych znaków, pozostałe są ignorowane i traktowane przez kompilator za dostateczny powód wyświetlenia masy błędów i zawieszenia komputera.

Znak Znaczenie
> Operator ingrediencji, penetruje następny zgodnie z ruchem wskazówek zegara obszar pamięci
< Operator degrediencji, penetruje poprzedni zgodnie z ruchem wskazówek zegara obszar pamięci
+ Operator inkrementacji, zwiększa ilość śmiesznych wspomnień w miejscu pamięci wskazywanym przez wskazujący wskaźnik
- Operator dekrementacji, zmniejsza ilość śmiesznych wspomnień w miejscu pamięci wskazywanym przez wskazujący wskaźnik
. Operator out, komputer robi zakodowaną w tym miejscu pamięci czynność
, Operator in, komputer słucha co do niego mówi użytkownik, i w zależności od humoru zapamiętuje to lub i nie
[ Operator skoku, skacze za najbliższe ], jeśli we wskazywanym przez wskazujacy wskaźnik miejscu w pamięci nie ma żadnych wspomnień
] Operator odskoku, skacze przed najbliższe [
Y Operator rozwidelczenia, dodany w brainfucku 2.0, znanym potocznie jako brainfork. Powoduje utworzenie dziecka klona, który wykonuje od tego momentu ten sam program i posiada tą samą pamięć, z tym wyjątkiem, że jego wskazujący wskaźnik zostaje przesunięty o 1 w prawo, a ilość wspomnień w miejscu na które on wskazuje zostaje ustawiona na 1. Tymczasem rodzic zapomina wszystkie wspomnienia z miejsca, w którym akurat był.

Podsumowując operatory '>' i '<' służą do przeszukiwania pamięci, '+' i '-' do oczyszczania lub dodawania wspomnień, '.' do przypominania, ',' do zapamiętywania, '[' i ']' do uzykania efektu deżawi, a 'Y' do rozmnażania.

Modyfikacje[edytuj]

Pisanie w Brainfucku stało się swoistego rodzaju testem umiejętności programistycznych, szczególnie jest to widoczne w środowisku kambodżańskich koderów, gdzie powstało około 2000 ze wszystkich 3000 modyfikacji podstawowej wersji Brainfucka. Oto niektóre z nich:

  • BrainBrain – wersja bardzo ambitna, umożliwiono programowanie obiektowe.
  • VisualFuck – komercyjna wersja wyprodukowana przez potentata branży – Microsoft.
  • DoubleFuck – przeszukiwanie pamięci odbywa się teraz wzdłuż i wszerz.
  • BrainDamage – umożliwia przeszukiwanie podświadomości komputera oraz wpływanie na jego ego.
  • HardFuck – czy 2 znaki wystarczają? Polemika trwa nadal.
  • BrainLamer – wersja light dla tzw. crackerów.
  • UmbaUmba – z definicji przeznaczony jest dla naszych najbliższych krewnych w świecie zwierząt, czyli dla pand.

Przykładowe programy[edytuj]

Hello, world[edytuj]

Program wypisujący tekst „Nienawidzę świata, a jeszcze bardziej siebie”

           ..     ..
        .+++++. .+++++.
       ++++++++.++++++++
       +++++++++++++++++
       .+++++++++++++++.
        .+++++++++++++.
          .+++++++++.
            .+++++.
              .+.

INDoctor[edytuj]

Program do dowodzenia twierdzeń metodą indukcji matematycznej (wiersze od 44364436 do 44364448).

>>>>>>>>++++[<++++++++>-]<>>++>++++[<++++++++>-]<>++++[<++++++++>-]<>>++>>++++++++[<
+++++++++>-]<++++>>++++[<++++++++++++>-]<+++++>>+++++++>++++[<++++++++>-]<>>++++++++
+++++++++>-]<+++<<<>.+++++++>.++.--.<<.>>-.+++++.----.<<.>>>.<---.+++.>+++.+.+.<.<<.
>.>--.+++++.---.++++.-------.++>++++>++.-------.-.<<<.>+.>>+++++++.---.-----.<<<.+--
.--.<<.>>-.++--.++-----.+++.<<.>>>++.-.>>++++++-----.-.<<++++++>>>><.>>-.++-++>-]<>+
+>-]<++++.--[<+++++>-]<-----.++.<<+.<<+.<<++++[][][][]+-,..<>,.<>>>>+++++-+-+-,..,.>
>>>++++++++++++[++++>>.<<<>>.--]]>++++>+++++[<+++.---]<>.--.<<.>>-.+++++.----.<<.>>>
.<---.+++.>+++.+.+.<.<<.>.>--.+++++.---.++++.-------.++>++++>++++>.>>.---.-----.<<<.
<<.>>++++++++++++++.>>>[-]<[-]<[-]<[-]+++++++++++++.---.[-]<<<<<<<<<<<<<<[>>>>>>>>+>
+<<<<<<<<<-]>>>>>>>>>.+++++++>.++.--.<<.>>-.+++++.----.<<.>>>.<---.+++.>+++.+.+.<.<<
.>.>--.+++++.---.++++.<<>.+++++++>.++.--.<<.>>-.+++++.----.<<.>>>.<---.+++.>+++.+.+.
<.<<.>.>--.+++++.---.++++.-.--]]>++++>+++++[<+++.---]<>.--.<<.>>-.+++++.----.<<.>>>.
<---.+++.>+++.+.+.<.<<.>.>----]]>++++.+++++.---.-.<<<<>.--.<<.>.+++,,,.+++<---<---++

Przypisy

  1. Nie pytaj, skąd ta nazwa